汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-09-30 09:57] 段选择子

在实模式下,逻辑地址空间中存储单元的地址由段值和段内偏移两部分组成。 在保护模式下,虚拟地址空间(相当于逻辑地址空间)中存储单元的地址由段选择子和段内偏移两部分组成。 与实模式相比,段选择子取代了段值。
    段选择子1长6位。其高13位是描述符索引(Index)。 所谓描述符索引是指描述符在描述符表中的序号。 段选择子的第2位是引用描述符指示位,标记为Ti,TI=0指示从全局描述符表GDT中读取描述符;TI=1指示从局部描述符表LDT中读取描述符。 选择子最低两位是请求特权级RPL,用于特权检查。
    选择子确定描述符,描述符确定段基地址,段基地址和段内偏移之和就是线性地址。 所以,虚拟地址空间中的由段选择子和段内偏移构成的二维虚拟地址,就是这样确定了现行地址空间中的一维线性地址。
    例如某个段选择子的值是0030H, 那么:描述符索引Index=6,描述符指示位TI=0,RPL=0,所以它指定全局描述符表中的第6个描述符,请求特权级是0
    由于段选择子中的描述符索引字段由13位表示, 所以可区分8096个描述符(2^13)。这也就是描述符表最多含有8096个描述符的原因。 
    由于每个描述符长8个字节,根据段选择格式,屏蔽选择低3位后所得的值就是段选择子所指定的描述符在描述符表中的偏移,这可以认为是安排选择子高13位作为描述符索引的原因。
    有一种特殊的选择子称为空选择子(NULL),它的Index=0,TI=0,而RPL任意值。空选择子有特定的用途,当用空选择子进行存储访问时会引起异常。空选择子是特别定义的,它不对应于全局描述符表GDT中的第0个描述符,因此GDT中的第0个描述符总不会被CPU访问, 一般把它置全0. 但是当TI=1时,Index=0的选择只不是空选择子,它指定了当前任务LDT中的第0个描述符。
评论次数(0)  |  浏览次数(1908)  |  类型(汇编语言笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码