《Linux内核情景分析》读书笔记01-i386CPU简介
在Intel的X86CPU系列当中:
8086和8088为16位的处理器,80386为32位的处理器。
1.段式存储+实地址模式
在16位的处理器当中,ALU的宽度为16位,但是地址总线的宽度为20位,Intel采用分段的方法解决了这个问题,也就是使用段式内存管理的方法,引入CS,DS,SS,ES段寄存器的方法,将ALU中的16位地址与某个段地址*16再进行相加。
8086这样做的缺点是:没有地址空间的保护机制。
2.Intel系列的80386CPU是32位处理器,真正的实现了内存地址的保护模式
Intel增添了两个段寄存器FS和GS,为了实现保护模式,光是用段寄存器来确定一个基地址是不够的,在保护模式下改变段寄存器的功能,存储指向段
基址的信息。
首先早CPU中增设了两个寄存器,一个是全局性的段描述表寄存器GDTR,另一个是局部性的段描述表寄存器LDTR,分别可以用来指向存储在内存中的一个段描述结构数组。
段寄存器的内容见下图:
GDTR/LDTR的结构如下图所示:
结构中的B31-B24和B23-B16分别为基地址的bit16-bit23和bit24-bit31。而L19-L16和L15-L0则为段长度的bit0-bit15,bit16-bit19.其中DPL是个两位的位段,而type是一个4位的位段,它们所在的整个字节分解如图1.3所示。