PC的启动
当接通计算机电源的时候,计算机在干什么?它是如何加载到操作系统的呢?
首先来看一组概念:
引导系统:装入内核以启动计算机的过程;
引导程序(引导装载程序):一小块代码,它能定位内核,并将它装入内存,开始执行。而有的计算机系统,比如PC,则分为两步完成——一个简单的引导程序从磁盘上调入一个较复杂的引导程序,而后者再装入内核。
当CPU被加电或重新启动,会使处理器进入复位状态,把所有存储单元清除为0,完成存储器的奇偶校验,以及把CS寄存器,IP寄存器等CPU内部的寄存器设置为预定义的值,此时CS:IP指向ROM中的BIOS入口点。BIOS是包含在ROM中的一组例行程序,提供对设备的支持和引导系统等功能。BIOS要建立两个数据区:
1. 中断向量表。BIOS和操作系统在中断发生时使用这个表。
2. BIOS数据区。它大部分与所连接的设备状态有关。
我们已经知道,对于PC,引导程序被分为两部分:一部分是在ROM中,它其实包含在BIOS中;一部分存储在磁盘上,它用来载入操作系统内核;而且操作系统内核也是存储在磁盘上面的。
BIOS完成自检并建立数据区之后,其上的引导程序读入引导块并执行代码。PC中的引导块在硬盘的0柱面、0磁头、1扇区(也叫主引导扇区,主引导记录,MBR)。它由三个部分组成——主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。引导块的程序也许足够复杂,可以将一个完整的操作系统装载到内存并开始执行。更典型的是,代码很简单,仅仅知道在磁盘上的地址和引导程序余下的长度信息。
当完全的引导程序被装入后,它将操作系统内核装入内存,执行,我们就进入了操作系统。