Linux内核学习第5天
【摘要】 3.段选择符:是段的一个16位标识符
*段选择符结构:
请求特权级RPL(Requested Privilege Level):提供了段保护信息
...
3.段选择符:是段的一个16位标识符
*段选择符结构:
请求特权级RPL(Requested Privilege Level):提供了段保护信息
表指示标志TI(Table Index):用来指出包含指定段描述符的段描述表GDT或LDT表中的索引项号
索引值(Index):描述符索引
索引值(Index):描述符索引
*CPU不使用GDT表中的第一项,即TI=0,索引值为0的选择符
*虽然操作系统可以定义很多个段,但是同时只有六个段可供立即访问
*段寄存器结构:
*虽然操作系统可以定义很多个段,但是同时只有六个段可供立即访问
*段寄存器结构:
4.段描述符:是GDT和LDT表中的一个数据结构项
*每个段描述符的长度为8字节,分三个部分
(段基地址、段限长、段属性)
*每个段描述符的长度为8字节,分三个部分
(段基地址、段限长、段属性)
*段描述符通用格式:
*段描述符中的字段与标志:
(1)段限长字段LIMIT(Segment limit field):
用于指定段的长度。
G=0,则LIMIT长度为1字节到1MB字节;G=1,则LIMIT长度为4KB到4GB
(1)段限长字段LIMIT(Segment limit field):
用于指定段的长度。
G=0,则LIMIT长度为1字节到1MB字节;G=1,则LIMIT长度为4KB到4GB
(2)基地址字段BASE(Base address field):
该字段定义在4GB的线性地址空间中一个段字节0所处的位置
处理器会把三个分立的基地址字段组合形成一个32位的值
(3)段类型字段TYPE (Type field):
指定段或门(Gate)的类型、说明段的访问种类以及段的拓展方向
(4)描述符类型标志S(Descriptor type flag)
指明一个段描述符是系统段描述符(S=0)还是代码或数据段描述符(S=1)
处理器会把三个分立的基地址字段组合形成一个32位的值
(3)段类型字段TYPE (Type field):
指定段或门(Gate)的类型、说明段的访问种类以及段的拓展方向
(4)描述符类型标志S(Descriptor type flag)
指明一个段描述符是系统段描述符(S=0)还是代码或数据段描述符(S=1)
(5)描述符特权级字段DPL(Descriptor privilege level):
指明描述符的特权级,从0~3,0最高
指明描述符的特权级,从0~3,0最高
(6)段存在标识P(Segment present ):
指出一个段是在内存中(P=1)还是不在内存中(P=0)
(7)D/B标志
(对于32位代码和数据段,这个标志应该总是设置为1;对于16位代码和数据段,这个标志设置为0
*可执行代码段
这时该标志位为D,若该标志位为1, 则默认值是32位地址和32位或8位操作数;若该标志位为0,则默认值是16位地址和16位或8位操作数
指出一个段是在内存中(P=1)还是不在内存中(P=0)
(7)D/B标志
(对于32位代码和数据段,这个标志应该总是设置为1;对于16位代码和数据段,这个标志设置为0
*可执行代码段
这时该标志位为D,若该标志位为1, 则默认值是32位地址和32位或8位操作数;若该标志位为0,则默认值是16位地址和16位或8位操作数
*栈段(由SS寄存器指向的数据段)
这是该标志位为B(Big)标志,如果该标志为1,则使用32位栈指针并存在ESP寄存器中;如果该标志为0,则使用16位栈指针并存放在SP寄存器中
*下扩数据段
此时该标志位为B标志,用于指定堆栈段的上界限。如果设置了该标志,则堆栈段的上界限是0xFFFFFFFF(4GB),如果没有设置该标志,则上界限为0xFFFF(64KB)
(8)颗粒度标志G(Granularity)
用于确定段限长字段Limit值的单位。如果设置了该标志位则段限长使用4KB单位;如果该标志位为0,则以字节为单位
(9)可用和保留比特位(Available and reserved bits)
段描述符第2个双字的位20可供系统软件使用,位21是保留位并总为0
(P=0时的情况)
这是该标志位为B(Big)标志,如果该标志为1,则使用32位栈指针并存在ESP寄存器中;如果该标志为0,则使用16位栈指针并存放在SP寄存器中
*下扩数据段
此时该标志位为B标志,用于指定堆栈段的上界限。如果设置了该标志,则堆栈段的上界限是0xFFFFFFFF(4GB),如果没有设置该标志,则上界限为0xFFFF(64KB)
(8)颗粒度标志G(Granularity)
用于确定段限长字段Limit值的单位。如果设置了该标志位则段限长使用4KB单位;如果该标志位为0,则以字节为单位
(9)可用和保留比特位(Available and reserved bits)
段描述符第2个双字的位20可供系统软件使用,位21是保留位并总为0
(P=0时的情况)
文章来源: blog.csdn.net,作者:冰水比水冰,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/luoyhang003/article/details/25511589
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)