操作系统原理(一)之操作系统启动顺序

操作系统启动顺序

参考文章:浅谈操作系统启动过程

1、POST(加电自检):寻找显卡和执行BIOS
机器启动的时执行第一条指令去执行BIOS,将控制权交给BIOS
根据CS 和 IP的值就可以找到指令的物理地址0xFFFF:0x0000,也就是0xFFFF0,找到BIOS地址
2、BIOS硬件质检
然后进行内存寻址:将引导扇区中的Boot.exe,然后加载并跳转到Loader.exe的0x7C00地址(作用:加载内核文件)
3、进入操作系统

基础知识

设备I/O地址与IRQ中断信道

设备I/O地址:设备的门牌号,用于设备组件间的交互通信。不能有两个设备使用相同的地址
IRQ中断信道:各设备可通过IRQ来告知CPU该设备的工作情况,以方便CPU进行工作分配任务。(sharing IRQ 中断共享技术)

CMOS 与 BIOS

CMOS
记录主板上面的重要参数 包括系统时间、CPU电压与频率、各设备的I/O地址和IRQ等
BIOS

  • 写入主板上某一块闪存或EEPROM的程序,具有断电不易失性,其具有固定的设备地址,开机时执行,加载CMOS当中的参数,并尝试调用存储设别中的引导程序bootloader。
  • 负责开机的硬件自检与初始化以及将bootloader加载到内存中的0x7c00,然后跳转到0x7c00执行。
  • BIOS地址由CS:IP=16*CS+IP(代码段寄存器:指令指针)来表示。

Bootloader
硬盘中的第一个扇区也叫主引导扇区,一个扇区是512字节,所以bootloader也是512字节。其中有400+个字节是启动代码(CS),负责完成bootloader需要完成的工作,剩下的字节是记录硬盘分区表。

寻址机制

寻址是由段寄存器以及指令指针共同完成。
段寄存器:

  • CS: code segment,代码段寄存器
  • DS:data segment,数据段寄存器
  • ES:extra segment,附加段寄存器
  • SS:stack segment,堆栈寄存器

指令寄存器IP(instruction pointer),即是我们熟悉的程序计数器PC。
一个地址由段寄存器:指令指针=16*段寄存器+指令指针来表示
因为实模式只有20位寻址,所以最大可调用的空间只有1M