本文基于郑纲的《操作系统还原》,仅为个人学习笔记,前期的虚拟机配置等不再详细记录,其中不理解或者出错的地方还望提出意见!
计算机启动过程
对于计算机的启动过程你真的了解掌握么?
计算机启动分为四个过程:
BIOS ===》MBR ===》硬盘启动 ===》操作系统
详细过程传送门
BIOS
BIOS全称Base Input & Outout System,主要工作是检测、初始化硬件。建立中断向量表,通过“int 中断号”完成相关硬件调用。
-
实模式下1MB内存布局
20位地址线能够访问1MB的内存空间,地址范围为0x00000——0xFFFFF。其中0xF0000——0xFFFFF这64KB的内存是ROM,存的是BIOS代码。 -
BIOS启动
BIOS是一段程序,需要有个入口地址去执行,由内存布局可以发现该地址在0xFFFF0处。
在开机一瞬间,CPU的 cs:ip 寄存器强制初始化为0xF000: 0xFFF0。该部分内存只有16B(16字节空间),存的是跳转指令:jmp f000 : e05b。由此正式跳转启动了BIOS代码。
CPU 访问内存是用段地址+偏移地址来实现的,由于在实模式之下,段地址需要乘以 16 后才能与
偏移地址相加,求出的和便是物理地址, CPU 便拿此地址直接用.
0xF000 * 16 + 0xFFF0 = 0xF0000 + 0xFFF0 = 0xFFFF0
在这之后,BIOS便开始进行硬件检测,初始化硬件等工作。
- 0x7c00
BIOS最后一项工作是校验启动盘中位于0盘0道1扇区的内容,这里存放的便是MBR(主引导记录)。
也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。
在确认该扇区内容为MBR后,BIOS便将其加载到物理地址0x7c00处,随后跳转到此地址继续执行(执行MBR)。