x86计算机启动过程分析
计算机的加电和复位
在处理器的众多引脚中,有一个RESET引脚,用于接受复位信号。每当处理器加电,或者RESET引脚的电平由低变高时,处理器都会执行一个硬件初始化以及一个可选的内部自测试,然后将所有寄存器的内容初始化到一个预置的状态。比如对于Intel8086来说,将CS寄存器初始化为0xFFFF,其他所有寄存器的内容都为0x0000,包括指令指针寄存器(IP)。
处理器的主要功能就是取指令和执行指令。加电或复位后,它就会立即尝试去做这样的工作。不过,在这个时候,内存中还没有任何有意义的指令,它该怎么办?
计算机的存储结构
对于Intel8086来说,它有20根地址线,可访问的空间范围为1MB。范围为0x00000~0xFFFFF,处于各方面考虑,计算机系统设计者将这1MB的空间从物理上分为不同部分。如图,0x00000~0x9FFFF分配给内存条,即我们所熟知的内存,即SDRAM。0xF0000~0xFFFFF为BIOS芯片,即ROM。另外细心的读者可以发现,两者之间还空闲一部分区域,即从0xA0000~0xEFFFF的空间。这部分空间分配给了其他的物理部件,比如显存之类的板卡。
由于SDRAM存储的数据掉电即失,而ROM存储的数据能长时间保存,掉电也不失,我们根据ROM的特性,将一些程序