【Windows内核】(3) 段描述符属性

一、P位
P=1 段描述符有效
P=0 段描述符无效
如何快速确定哪个描述符的P位为0或者为1?
看第五位是否大于8 大于8则P位为1 小于8则P位为0
二、G位
G=0 limit单位是字节
G=1 limit单位为4KB
在段描述符向段寄存器结构体中填充时 ,段描述符limit的位数只有20位,而段寄存器结构体中的limit是32位的还差12位,这12位要根据G位来变化,如果G = 0,则在段描述符的limit前面加三个0,如果G=1 因为此时单位为4kb 1024*4 = 4096 4096-1 = 4095 = FFF(十六进制) 所有后面最多添三个F
如何快速确定哪个描述符的G位为0或者为1?
看第三位是否大于8 大于8则G位为1 小于8则G位为0
三、S位
S = 1 代码段或者数据段描述符
S = 0 系统段描述符
四、TYPE

数据段:
A 是否访问过
W 是否可写
E=0向上拓展(windows只使用向上扩展) E=1向下拓展
代码段:
A 是否访问过
R 是否可读
C=0非一致代码段 C=1一致代码段
系统段:

五、D/B位
对DS,ES等数据段:
D=1,段上限为4GB
D=0,段上限为64KB
对SS段:
D=1,使用32位堆栈指针寄存器;
D=0,使用16位堆栈指针寄存器.
对CS段:
D=1,采用32位寻址方式;
D=0,采用16位寻址方式。

浙公网安备 33010602011771号