14_保护模式及其编程.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
14.1保护模式下的的存贮管理 设置CR0的PG位可以开启(1)和关闭(1) 分页机制 保护模式中的逻辑地址(虚拟地址)由16位的选择子和32位的偏移量两部分组成。选择子放在段地址寄存器中,用来指定一个段描述符 分段机制实现了虚拟地址到线性地址的转换 程序员在编写程序时,会定义数据段、代码段等多个逻辑段,分段管理机制就是用于管理这些段,并将二维的虚拟地址转化成一维的线性地址。 段由 段描述符 来定义,其中存放了关于段的三个参数:(1)段基址 (Base, 32位) (2)段界限(Limit, 20位) (3)段的属性(读/写/执行,特权级等)(12位) 段描述符存放在描述符表中,选择子就是用来指定某个特定描述符的关于描述符表的索引 段选择子与存储段描述符 描述符表 描述符可用于描述多种对象:存储段、任务状态段、调用门、任务门、中断门、陷阱门和LDT。 为了便于组织管理,80386把描述符组织成线性表。由描述符组成的线性表称为描述符表。 每个描述符表本身形成一个特殊的内存数据段。这样的特殊数据段最多包含8192个描述符。该段由操作系统维护、并由处理器中的存储管理单元硬件(MMU)访问。 在80386中有三种类型的描述符表:全局描述符表GDT、局部描述符表LDT 和 中断描述符表IDT。在整个系统中,全局描述符表GDT和中断描述符表IDT只有一张,局部描述符表可以有若干张,每个任务有一张。 GDT和LDT GDT含有每一个任务都可能访问的描述符,通常包含操作系统所使用的代码段、数据段和堆栈段的描述符,也包含多种特殊描述符,如LDT描述符。在任务切换时,并不切换GDT。通过GDT可以使各任务都需要的段能够被共享。 每个任务的局部描述符表LDT含有该任务自己的代码段、数据段和堆栈段的描述符,也包含该任务所使用的一些门描述符,如任务门和调用门描述符等。随着任务的切换,系统当前的局部描述符表LDT也随之切换。通过LDT可以使各个任务私有的各个段与其它任务相隔离,从而达到受保护的目的。 选择子的TI位为0表示它所访问的描述符在GDT中,为1表示描述符在LDT中。 GDT和LDT GDTR、LDTR GDT和IDT的基地址分别存放在GDTR和IDTR中,而各个LDT的基地址存放在GDT的LDT描述符中。LDTR是当前所使用的LDT描述符的选择子。 GDTR和IDTR长48位,高32位为基地址,低16位为界限。 LDTR类似于段寄存器,存储的是当前所使用的LDT表的LDT描述符的选择子。 任务状态段寄存器TR包含指示描述当前任务的任务状态段的描述符选择子,从而规定了当前任务的状态段。 虚拟-线性地址转换过程 基本过程:通过虚拟地址中的选择子在描述符表中找到相应的段描述符,取出其中的32位段基地址,该基地址加上虚拟地址中偏移量就形成了线性地址。当然,在相加之前要根据描述符中的Limit字段判断一下该偏移量是否越界。 分页机制在分段机制之后进行操作,以完成线性地址到物理地址的转换过程。 保护模式下,CR0中的PG位控制分页管理机制是否生效。 分页机制把线性地址空间和物理地址空间分别划分为大小相同的块。这样的块称之为页。通过在线性地址空间的页与物理地址空间的页之间建立的映射,分页机制实现线性地址到物理地址的转换。 在80386中,页的大小固定为4K字节,每一页的边界地址必须是4K的倍数。因此,4G大小的地址空间被划分为1M个页,每个页的起始地址用20位记录。 线性地址的低12位经过分页机制直接作为物理地址的低12位使用。页映射函数可看成是把线性地址的高20位转换为对应物理地址高20位的转换函数。 两级页表结构 页映射表的第一级称为页目录表,存储在一个4K字节的物理页中。页目录表共有1K个表项,其中,每个表项为4字节长,包含对应第二级表所在物理地址空间页的基地址。页映射表的第二级称为页表,每张页表也安排在一个4K字节的页中。每张页表都有1K个表项,每个表项为4字节长,包含对应物理地址空间页的基地址。 由于页目录表和页表均由1K个表项组成,所以使用10位的索引就能指定具体表项,即用10位的索引值乘以4加基地址就得到了某个表项的物理地址。 任务切换时,页目录表和页表也要相应进行切换,使得不同任务的线性地址空间被映射到不同的物理地址空间中。 当前页目录表的物理基地址存放在CR3寄存器中。 两级页表结构 表项格式 线性地址到物理地址的转换 80386把外部中断称为“中断”,把内部中断称为“异常”。中断又可分为可屏蔽中断和不可屏蔽中断, 异常又分为故障、陷阱和中止。 向量是通过中断门或者陷阱门给出的,中断门或者陷阱门位于中断描述符表IDT中,中断描述表地址是由IDTR(中断描述表寄存器)给出。 14.4 保护模式下的的输入/输出保护 80386采用I/

文档评论(0)

youyang99 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档