这一节主要讲解了BIOS(Basic Input/Output System),基本输入输出系统。
首先我们需要知道,计算机加电之后,是从什么地方读取的第一条指令,从磁盘的什么地方读取的我的操作系统的内容,也就是计算机启动的过程是怎样的。
计算机加电后,首先是CPU的初始化过程,将各寄存器初始化,此时系统处于实模式下。我们要知道计算机内存分为两种,RAM(Random Access Memory)随机访问存储和ROM(Read-Only Memory)只读存储。其中RAM掉电内容会丢失(也就是我平时所理解的内存条内的内容比如),ROM掉电不会丢失内容。因此系统初始化代码就存储在ROM中。由于CPU初始化完成后处于实模式,寻址空间为20位也就是1M,因此系统初始化代码也就是BIOS启动固件是存储在1M之下,如下图。还需要知道的是,CPU初始化完后CS代码段寄存器与IP指令指针寄存器决定了第一条要执行的代码在ROM中的位置,而BIOS能提供的功能也列在下图之中:1. 基本输入输出的程序(从磁盘读数据、从键盘读输入、显示器上显示输出等);2. 系统设置信息(从硬盘启动还是从网络启动还是从U盘启动等);3. 开机后自检程序(检查内存显卡是否正常);4. 系统自启动程序(启动操作系统)等。
BIOS会根据设置执行启动程序,从磁盘把加载程序和操作系统内容加载到系统。那么具体过程是怎样的呢?首先BIOS将磁盘读引导扇区加载进指定位置0x7c00,引导扇区大小限制为512byte。此时跳转到CS:IP = 0000:7c00执行引导扇区的程序段,通过引导扇区的程序段跳转到