【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位寻址方式。

posted @ 2021-03-04 16:29  一窝吉尼斯  阅读(135)  评论(0)    收藏  举报