8086保护模式下的分段机制.pptx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8086保护模式下的分段机制

80x86保护模式下的分段机制Multi-language machine translatio—黄—刘思—曾翎倡言前对于80x86处理器,我们要区分以下三种地址:逻辑地址:由段地址和段内偏移两部分组成。 线性地址(虚拟地址):将逻辑地址进行解释得到的地址形式,它是一个32位无符号整数,值的范围为00xffffffff可对4GB的空间进行寻址。之所以又称为虚拟地址,是因为后来的虚拟存储技术,使得线性地址并不会直接对应到相应的物理地址,而要经过一定的映射,将线性地址转换为物理地址,为了与物理地址相对应,又将线性地址称为虚拟地址。 物理地址:对内存芯片进行寻址时的地址,进行寻址时CPU会将这个地址以电信号的形式发送给内存芯片进行寻址。80x86保护模式下的分段机制 在引入保护模式之前,分段单元进行地址转换时使用的是实模式。在实模式下,段地址直接存储在段寄存器中,偏移地址保存在一个地址寄存器中或直接使用一个立即数。将逻辑地址转换为线性地址很简单:线性地址=段地址*16+偏移地址(这个线性地址实际上也是物理地址)。 保护模式是从80286引入的,此时段地址并不会直接保存在段寄存器内,而是保存在内存中,段寄存器只是保存了一个索引,使用这个索引可以在内存中取出相应的段地址。得到段地址后再与段内地址偏移相加便得到线性地址。保护模式有两个重要的概念:段选择符和段描述符。80x86保护模式下的分段机制 段选择符,长度为16位,保存在段寄存器(cs,ds,ss,es,fs和gs)中。这个段选择符只是一个索引,但其中只有13位用作索引;还有一位用于指示段描述符是全局的还是局部的,这两类段描述符保存在不同的位置;另外两位用于指明CPU的当前特权级(Current Privilege Level),0为最高,3为最低,通常只有特权级0(ring 0)和特权级3(ring 3)被操作系统使用。段选择符格式如下: ? 段描述符,长度为8字节(64位)。段描述符都放在段描述符表中,段选择符即指明了段描述符在段描述符表中的位置。 段描述符有两种:全局描述符表(GDT)和局部描述符表(LDT)。通常只定义一个GDT,而每一个进程都有自己的LDT。GDT在内存中的首址(32位)和大小(16位)存放在gdtr控制寄存器中,当前正被使用的LDT首址(32位)和大小(16位)放在ldtr控制寄存器中。 ?80x86保护模式下的分段机制 分段单元如何使用它们来将逻辑地址转换成相应的线性地址? 由于一个段描述符是8字节长,因此一个段描述符在GDT或LDT内的相对地址是由段选择符的最高13位的值(即索引位)乘以8得到的。 首先,检查段选择符的TI字段,以决定段描述符保存在哪一个描述符表中。当段描述符在GDT中时,分段单元从gdtr寄存器中得到GDT的基址;当段描述符在LDT中时,分段单元从ldtr寄存器中得到LDT的基址。 然后,从段选择符的index字段计算段描述符的地址,index字段的值乘以8,这个结果与gdtr或ldtr寄存器中的内容相加。 最后,把逻辑地址的偏移量与段描述Base字段的值相加就得到了线性地址。谢谢观看!

文档评论(0)

yuguanyin2015 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档