5.3保护及任务切换.ppt

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

* 第5章 存 储 器 管 理 5.3 保护及任务切换 5.3.1 不同任务间的保护 不同任务间的保护首先开始于把每个任务放置在不同的虚拟地址空间,然后,再在每个任务中定义一组独立的映射表,完成相互间各不相同的虚拟—物理地址转换。这样,一个任务中的虚拟地址空间映射到物理存储器的一部分;另一个任务的虚拟地址空间映射到物理存储器的另外区域。在各任务中定义各自独立的一组映射表时,一般不应使它们所映射的物理存储空间重叠,因而, 各任务之间是彼此隔离的。 为了将操作系统与各应用程序隔离,且为各应用程序所共享, 常把操作系统存储在一个单独的任务中,并把操作系统存储在虚拟存储空间的一个公共区域中。然后,再对每个任务按此公共区域分配一个同样的虚拟地址空间及定义同样的虚拟—物理地址转换函数。这样,既可使每个任务能对操作系统进行访问, 又可保证操作系统不被各应用程序破坏。 通常,称各任务公用的这部分虚拟地址空间为全局地址空间,而称仅被一个任务独占不被其它任务共享的虚拟地址空间为局部地址空间。 5.3.2 段级别保护 图 5.19 段描述符格式 1. 类型检查 图 5.20 描述符类型域 表5.2 存储段描述符类型 表5.3 相容的段寄存器和段类型 2. 限度检查 实方式下,段的限度固定为64 KB。 保护方式下, 段的限度由段描述符的限度域指出,是不固定的。对80286来说,限度以字节为单位,16位限度域表明一个段最大尺寸为64 KB。对80386/80486来说,限度域为20位,当描述符中G=0时,限度以字节为单位,一个段最大尺寸为1 MB;当G=1时,限度以页为单位,一页为4 KB,限度=限度域值*4096+4095。因此,若限度域值为0,则该段的最大尺寸为4 KB,程序可访问段内从0到4095的字节。 除了向下扩充的段以外,所有段的段描述符的限度(化为字节数)都表示从段起始处开始的最大偏移量。当访问存储器操作数时, 只要被访问操作数的一部分超出限度,处理器就会发出一般保护异常信号。例如,访问一个双字操作数,其地址在限度减2处, 便会发生异常。 当段描述符中E=1时,为向下扩充段,它常用于堆栈段。 对向下扩充的段来说,限度表示一个段的最小偏移量。向下扩充堆栈段的合法偏移量范围是从限度的字节数+1直到220-1(对16位段)或232-1(对32位段)。当限度=0时,向下扩充段具有最大的尺寸。 图 5.21 两种数据段的类型 3. 特权检查 图 5.22 Intel的特权环状模型 5.3.3 数据访问 每当一个程序试图访问一个数据段时,便将程序的当前特权级CPL与要访问段的特权级DPL进行比较,只要DPL的特权级别等于或低于CPL(或RPL)的特权级,对该数据段的访问便是允许的。 否则便不允许,并产生一个一般保护异常,向操作系统报告该访问操作违反了特权规则。因而,在数据访问时,被访问的数据段的特权级DPL规定了允许访问该段的最外层特权级。由于数据访问的这一特权级规则使得上节所述特权级的典型用法中,0级的操作系统核心,有权访问任务中的所有数据存储段;1级的操作系统其余部分有权访问2级和3级的所有数据存储段;3级的应用程序只能访问本身的处于3级的数据存储段。反过来,0级操作系统核心的数据存储段却得以保护,不能被操作系统除核心外的其余部分及应用程序访问。同时,整个操作系统也得到了保护,它的数据存储段不允许任何2级和3级的应用程序访问。 5.3.4 控制转移 在同一任务中实现控制转移有3种方式:段内转移,直接转移到另一代码段的段间转移和通过调用门的段间转移。 1. 段内转移 段内转移通过近程跳转指令JMP或近程调用指令CALL及返回指令RET(包括直接给出段内偏移量和间接给出段内偏移量)执行。 它不会引起特权级的变化,也不需再加载CS段寄存器,只需作限度检查,即检查是否会转移到段外。同时为加速保护检查, 限度值已预先装入到段描述符高速缓存器中。 2. 直接的段间转移 直接的段间转移是最简单的段间转移,它使用具有远程标号的跳转指令或调用及返回指令执行。这时,远程标号直接给出一个48位的远指针:16位选择子和32位偏移量。该16位选择子作为新的选择器值装入CS寄存器时,便将所指向的段描述符装入CS段寄存器对应的段描述符高速缓存器中。接下来应进行保护检查,只有当远指针所指目标段的描述符特权级DPL与当前特权级CPL(当前正执行程序段的特权级)相等,且目标段是一个存在的可执行的代码段,或目标段描述符特权级DPL

文档评论(0)

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

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

1亿VIP精品文档

相关文档