1.段机制
逻辑地址 = 选择符+偏移部分;
typedef 段{
基地址(Base Address) /*线性地址空间中 段的起始地址*/
界限(Limit) /*逻辑地址空间中,段内最大偏移量*/超出界限,系统产生异常
属性(Attribute) /*读写、可执行、特权级*/代码段、数据段、堆栈段
}描述符;
描述符表 = {描述符、描述符、描述符};
系统模式:实模式、保护模式;
2.描述符
描述符:用户段描述符、系统段描述符
8字节
---------------------------------
0 |7-0位 段界限 |
---------------------------------
1 |15-8位 段界限 |
---------------------------------
2 |7-0位 基地址 |
---------------------------------
3 |15-8位 基地址 |
---------------------------------
4 |23-16位 基地址 |
---------------------------------
5 |P|DPL|S| 类型 |A | 存取权字节:(数据段)P--段在不在内存中;DPL--描述符特权级0-3;S--0是用户端1是系统段;类型;A
---------------------------------
6 |G|D|0|0| 19-16 段界限 |
---------------------------------
7 |31-24 基地址 |
---------------------------------
G是粒度位,1M还是 4K*1MD是操作时,16位还是32位
代码段
-------------------------
|P|DPL|1| 1|C|W |A|
-------------------------
数据段、堆栈段
-------------------------
|P|DPL|1| 0|C|W |A|
--------------------------
G是粒度位,1M还是 4K*1M
D是操作时,16位还是32位
3.系统段
------------------------|P|DPL|0| 类型 | 存取权字节:(代码段)P--段在不在内存中;DPL--描述符特权级;S--0是用户端1是系统段;类型;A
------------------------
|G|0|0|0| 19-16 段界限 |
------------------------
系统段有16中类型
4.描述符表
描述符表: 全局描述符表 GDT、局部描述符表 LDT、中断段描述表 IDT