在刚开始启动电脑的时候,并不是从内存中寻址启动程序,而是通过启动BIOS实现计算机的开机。BIOS相当于一个flush,存储着开机用到的所有程序。开机状态是实模式的,实模式的特性是一个20位的存储器地址空间。即1m的存储器可以被寻址,可以直接软件访问BIOS以及周边的硬件,没有硬件支持的分页机制和实时多任务的概念。
在加电的一瞬间,计算机的内存准确说是RAM中什么程序也没有,不能直接运行操作系统。(RAM随机存取存储器,在加电状态时可以任意读写,在断电之后信息消失。)
北桥芯片:这种芯片又叫做memory controller hub芯片
1.用于cpu、内存和AGP视频接口,这些接口具有很高的传输速率
2.用于存储器的控制
南桥芯片:这种芯片又叫做I/O controller hub。
1.主要是用于管理低速或者是中速的组件,比如PCI总线、USB接口、IDE硬盘接口
BIOS相当于只读的闪存芯片,并不是直接挂载在CPU上面的。而是在南桥上挂载。因此在开机后,CPU通过ip映射找到BIOS的位置,运行内部的程序。(CPU的硬件被设计为加电立即进入16位实模式状态进行。同时将CPU的硬件逻辑设计为加电瞬间强行设置cs位置为0xF000,同时IP为0xFFF0,这样实际地址cs:IP为0xFFFF0【其中实际地址=16位的段基地址*16+16位的偏移量】),该位置指向的是BIOS的地址范围。
IP/EIP:指令指针寄存器,表示的是指令在段中的偏移地址。实模式为绝对地址,指令指针为16位即IP;在保护模式下,指令指针为32位即EIP。
CS:代码段寄存器。存在于CPU中,指向CPU当前执行代码在内存中的区域。
BIOS在内存最开始的位置0x00000用1kb的内存存储中断向量表0x00000-0x003FF,之后利用256字节构建BIOS的数据区0x00400-0x004FF,之后在57kb以后的位置0x0E05B加载8KB左右的与中断向量表相对应的中断向量程序。中断向量表中含有256个中断向量,每个中断向量包含4个字节,其中两个表示CS,另外两个表示IP。每个中断向量对应一个中断服务程序。