段选择器 :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才得到最后的线性地址。


转自:

http://hi.baidu.com/%B7%E7%D6%AE%D2%E2/blog/item/02f0c71a473bb1bf4bedbc5d.html

X86保护模式下的内存寻址相关推荐

  1. 【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码

    本文记录的是之前四篇文章所对应的汇编代码.四篇文章分别是: [OS学习笔记]十二 现代处理器的结构和特点 [OS学习笔记]十三 保护模式一:全局描述符表(GDT) [OS学习笔记]十四 保护模式二:段 ...

  2. 【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制

    上一篇文章学习了段描述符与段描述符各个标志位的含义:段描述符 本篇文章学习如何进入保护模式,并学习如何在保护模式下进行内存访问. 1.如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中( ...

  3. bios x86保护模式下的软盘操作floppy

    Cpu启动时,如果在bios中设置了从软盘启动,则bios会自动把软盘的第一个扇区(512字节)搬移到0x7c00,然后会从0x7c00开始运行,我们需要在这512字节的程序中实现把boot从软盘中搬 ...

  4. IA-32 Intel手册学习笔记(二)保护模式下的内存管理

    内存管理概述(Memory Management Overview) Inter体系结构的内存管理可分为两部分:分段和分页. 分段提供了一种机制,这种机制可以为每个程序或者任务提供单独的代码.数据和栈 ...

  5. 保护模式下寻址(易懂)

    网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位 括号中是我的加注 段机制轻松体验 [内存寻址] 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物 ...

  6. x86保护模式——全局描述符表GDT详解

    1 - GDT作用 GDT全称Global Descriptor Table,是x86保护模式下的一个重要数据结构,在保护模式下,GDT在内存中有且只有一个.GDT的数据结构是一个描述符数组,每个描述 ...

  7. X86保护模式(一)· 何为保护模式

    导航 保护模式的诞生背景 全局描述符表GDT 全局描述符表寄存器GDTR 描述符的分类 存储器段描述符的结构 TYPE域 DPL域 G位 P位 L位 D/B位 AVL位 向上/向下扩展时的段界限 进入 ...

  8. 内核基础 - 实模式与保护模式下的寄存器计算机的启动过程(by quqi99)

    作者:张华  发表于:2016-03-01 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) CP ...

  9. MIT-JOS系列1:实模式和保护模式下的段寻址方式

    实模式下的段寻址 以8086为例 8086 段寄存器16位(段地址/基地址),寄存器16位(偏移地址),地址总线20位(寻址1M:2^20) 实际物理地址 = (段寄存器 << 4) + ...

最新文章

  1. 请问大数据有没有速成的方法?嗯 真的没有
  2. 【CyberSecurityLearning 23】mail server(邮件投递原理)
  3. Linux常用命令--文件(夹)查找之find命令
  4. html笔记(三)html5+css3(html5、css3、文字相关)
  5. python怎么处理文字_python 处理给规范的文字
  6. Express 的使用
  7. JAVA面试题:你怎么设计一个消息队列?
  8. C++关键字 friend
  9. 光敏传感器介绍及其软件应用
  10. win7下开启梦幻桌面
  11. 计算机专业的学生怎样练习编程才能把编程学精通?
  12. 通过ESP8266手机或电脑浏览器网页能控制远程任意组任意路继电器开关并收发单片机指令 测试OK
  13. 太极计划——华夏民族软件腾飞的计划
  14. 知乎百万热议:互联网已成红海,为什么BAT却不涉足传统制造行业
  15. 黑苹果系统备份还原步骤
  16. 使用ArchR分析单细胞ATAC-seq数据(第四章)
  17. 你信吗?任正非在华为持股仅1.42%!华为轮值CEO徐直军全面剖析华为
  18. 计算机比较好的985 211大学,985院校和211院校名单
  19. IOS开发系列(一) - Xcode
  20. 时隔10年谷歌计划重启谷歌实验室,聚焦AR、VR项目

热门文章

  1. 实验A/B测的统计学原理
  2. Level-2行情有什么特色数据
  3. 运维工程师面试试题(一)
  4. 目前在线教育网站都有哪些分类?
  5. C++题目分享之冰雹猜想
  6. 《深度学习进阶:自然语言处理》natural language processing 的 jupyter notebook代码及笔记
  7. 浙江省计算机c语言二级成绩,[转载]浙江省计算机二级考试C语言
  8. sd卡休眠不掉电 linux cmd7,随时断电可安全使用SD卡
  9. 3DMAXDragonBones中骨骼绑定,IK约束,蒙皮权重的概念
  10. 属猪人士的2009年运程