段选择器:32位汇编中16位段寄存器(CS、DS、ES、SS、FS、GS)中不再存放段基址,而 是段描述符在段描述符表中的索引值,D3-D15位是索引值,D0-D1位是优先级(RPL)用于特权检查,D2位是描述符表引用指示位TI,TI=0指 示从全局描述表GDT中读取描述符,TI=1指示从局部描述符中LDT中读取描述符。这些信息总称段选择器(段选择子).

段描述符:8个 字节64位,每一个段都有一个对应的描述符。根据描述符描述符所描述的对象不同,描述符可分为三类:储存段描述符,系统段描述符,门描述符(控制描述 符)。在描述符中定义了段的基址,限长和访问内型等属性。其中基址给出该段的基础地址,用于形成线性地址;限长说明该段的长度,用于存储空间保护;段属性 说明该段的访问权限、该段当前在内存中的存在性,以及该段所在的特权级。

段描述符表:IA-32处理器把所有段描述符按顺序组织成线性表 放在内存中,称为段描述符表。分为三类:全局描述符表GDT,局部描述符表LDT和中断描述符表IDT。GDT和IDT在整个系统中只有一张,而每个任务 都有自己私有的一张局部描述符表LDT,用于记录本任务中涉及的各个代码段、数据段和堆栈段以及本任务的使用的门描述符。GDT包含系统使用的代码段、数 据段、堆栈段和特殊数据段描述符,以及所有任务局部描述符表LDT的描述符。

GDTR全局描述符寄存器:48位,高32位存放GDT基址,低16为存放GDT限长。
LDTR局部描述符寄存器:16位,高13为存放LDT在GET中的索引值。

IA-32处理器仍然使用xxxx:yyyyyyyy(段选择器:偏移量)逻辑方式表示一个线性地址,那么是怎么得到段的基址呢?在上面说明中我们知道,要得到段的基址首先通过段选择器xxxx中TI位指定的段描述符所在位置: 当 TI=0时表示段描述符在GDT中,如下图所示:① 先从GDTR寄存器中获得GDT基址。② 然后再GDT中以段选择器高13位位置索引值得到段描述符。③ 段描述符符包含段的基址、限长、优先级等各种属性,这就得到了段的起始地址(基址),再以基址加上偏移地址yyyyyyyy才得到最后的线性地址。


当TI=1时表示段描述符在LDT中,如下图所示:① 还是先从GDTR寄存器中获得GDT基址。② 从LDTR寄存器中获取LDT所在段的位置索引(LDTR高13位)。③ 以这个位置索引在GDT中得到LDT段描述符从而得到LDT段基址。④ 用段选择器高13位位置索引值从LDT段中得到段描述符。⑤ 段描述符符包含段的基址、限长、优先级等各种属性,这就得到了段的起始地址(基址),再以基址加上偏移地址yyyyyyyy才得到最后的线性地址。

两张图看懂GDT、GDTR、LDT、LDTR的关系相关推荐

  1. 论文代码细读(初学者入门,两张图看懂塔克融合论文代码)MUTAN: Multimodal Tucker Fusion for Visual Question Answering

    入门小技巧 一,pycharm快捷键使用(参考)可以快速在多个文件中找到函数,参数调用关系 ctrl+f: 搜索打开的文件中的关键字 ctrl+f+shift:全局文件搜索关键字 ctrl+n:查找. ...

  2. 两张图看懂GC 日志

    GC日志查看 可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略. GC的日志是以替换的方式(>)写入的,而不是追加(>>),如果下次写入到同一 ...

  3. 一张图看懂自然语言处理技术框架

    一张图看懂自然语言处理技术框架 一.前言 正在针对<人工智能产品经理最佳实践>视频课程第三部分,关键技术篇,进行相关的内容重构,今天整理的部分是自然语言处理技术框架,特地绘制了一张自然语言 ...

  4. 一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议

    一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议 作者:AirCity 2019.11.2 本文所有权归作者Aircity所有 Aircity ...

  5. 一张图看懂微服务架构路线

    目录 一张图看懂微服务架构路线 我为什么选择微服务架构? 微服务架构路线 基本思路 Docker 容器编排 Docker 容器管理 API网关 负载均衡 服务发现 事件总线 日志记录 监控和警报 分布 ...

  6. 一张图看懂世界石油分布?用Python轻松搞定!(附数据下载)

     CDA数据分析师 出品   [导语]:今天我们教你用Python画出世界石油分布桑基图,Python技术部分可以直接看第四部分. 获取数据: 扫描下方公众号 回复关键字"石油" ...

  7. 一张图看懂世界石油分布?用Python轻松搞定!

     CDA数据分析师 出品   [导语]:今天我们教你用Python画出世界石油分布桑基图,Python技术部分可以直接看第四部分. 作者:Mika 数据:真达   后期:泽龙  设计:一凡   Sho ...

  8. 华为p10和p10plus区别_华为P10和P10Plus有什么区别?一张图看懂华为P10和P10Plus的区别...

    在MWC2017会展上,华为新一代旗舰产品P10及P10 Plus高调亮相,上一代的P9作为华为首款销量突破1000万的机型,这次的P10想必也继承了华为再创辉煌的使命.P10继续与徕卡深度合作,采用 ...

  9. 荣耀v20云计算机,一张图看懂荣耀v20,小米9,iqoo谁值得买(云分析)

    一张图看懂荣耀v20,小米9,iqoo谁值得买(云分析) 2019-03-09 13:22:20 17点赞 5收藏 65评论 本文前言--应该来说全世界手机市场,就数中国的手机市场水最深吧,发布猛如虎 ...

最新文章

  1. 一文看懂 Bahdanau 和 Luong 两种 Attention 机制的区别
  2. 这么多年来,我算想明白了!
  3. 从 MySQL 执行原理告诉你:为什么分页场景下,请求速度非常慢?
  4. js --- 递归结构图
  5. html语言中项目列表的嵌套,做HTML嵌套列表的正确方法?
  6. 捡到银行卡套取密码取现1万多元,犯了信用卡诈骗罪被判7个月
  7. Linux-----diff命令
  8. LeetCode刷题(36)--Text Justification
  9. 矩池云安装报E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable)
  10. 实例快速上手shell脚本
  11. Web前端的学习路线到底是什么,看完秒懂!
  12. 使用docker分离服务与数据库
  13. Problem J: 零起点学算法89——程序设计竞赛
  14. 屏幕尺寸、分辨率、DPI、PPI
  15. 本特利电涡流传感器330103-00-04-90-01-CN
  16. 【JS】388- 深入了解强大的 ES6 「 ... 」 运算符
  17. 三国演义人物关系思维导图模板分享
  18. win7桌面计算机图标去掉,win7桌面图标小箭头怎么去掉?
  19. Java从服务端下载Excel模板文件
  20. docker的使用方法

热门文章

  1. UVA11021麻球繁衍
  2. 1669 DINIC+二分
  3. 【错误记录】Ubuntu 中 ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐在普通用户下使用 VSCode 开发环境 )
  4. 【设计模式】模板方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  5. 【Android应用开发】EasyDialog 源码解析
  6. 利用 PortableBasemapServer 发布地图服务
  7. C#文件夹权限操作工具类
  8. 【读书笔记】简约至上-交互式设计四策略
  9. BZOJ 2456 : mode
  10. 贴一段数组动态扩容的代码