保护模式下CPLDPLRPL的总结.pdfVIP

  1. 1、本文档共12页,可阅读全部内容。
  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文档。上传文档
查看更多
保护模式下CPLDPLRPL的总结

保护模式 对CPL,RPL,DPL 的总结 学习过程中遇到一个对保护模式总结很好的Blog,转来分享一下。 先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限 啦。特权级共有4 个级别,0,1,2,3,数字越小表示权限越高。如图: 较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来防止较低特权的任务在不被 允许的情况下访问处于高特权级的段。为了防止概念混淆,我们不用特权级大小来说明,改 为内层(高),外层(低)来讲。 特权级有3 种:CPL,DPL 和RPL,每个都是有4 个等级。 我对他们的关系理解是这样:一般来说,CPL 代表当前代码段的权限,如果它想要去访问 一个段或门,首先要看看对方的权限如何,也就是检查对方的DPL,如果满足当前的权限 比要访问的权限高,则有可能允许去访问,有些情况我们还要检查选择子的权限,即RPL, 因为我们通过选择子:偏移量的方式去访问一个段,这算是一个访问请求动作,因此称为请 求访问权限RPL(Requst Privilege Level)。当请求权限也满足条件,那么访问就被 允许了。 CPL(Current Privilege Level) CPL 是当前执行的任务的特权等级,它存储在CS 和SS 的第0 位和第 1位上。(两位表示0~3 四个等级) 通常情况下,CPL 等于代码所在段的特权等级,当程序转移到不同的代码段时,处理器将改变 CPL。 注意:在遇到一致代码段时,情况特殊,一致代码段的特点是:可以被等级相同或者更低特权级 的代码访问,当处理器访问一个与当前代码段CPL 特权级不同的一致代码段时,CPL 不会改 变。 DPL(Descriptor Privilege Level) 表示门或者段的特权级,存储在门或者段的描述符的DPL 字段中。正如上面说的那样,当当前 代码段试图访问一个段或者门时,其DPL 将会和当前特权级CPL 以及段或门的选择子比较, 根据段或者门的类型不同,DPL 的含义不同: 1.数据段的DPL:规定了访问此段的最低权限。比如一个数据段的DPL 是1,那么只有运 行在CPL 为0 或 1 的程序才可能访问它。为什么说可能呢?因为还有一个比较的因素是RPL。 访问数据段要满足有效特权级别 (上述)高于数据段的DPL. 2.非一致代码段的DPL(不使用调用门的情况):DPL 规定访问此段的特权,只有CPL 与 之相等才有可能访问。 3.调用门的DPL,规定了程序或任务访问该门的最低权限。与数据段同。 4.一致代码段和通过调用门访问的非一致代码段,DPL 规定访问此段的最高权限。 比如一个段的DPL 为2,那么CPL 为0 或者 1 的程序都无法访问。 5. TSS 的DPL,同数据段。 RPL (Rquest Privilege Level) RPL 是通过选择子的低两位来表现出来的(这么说来,CS 和SS 也是存放选择子的,同时CPL 存放在CS 和SS 的低两位上,那么对CS 和SS 来说,选择子的RPL=当前段的CPL)。处理 器通过检查RPL 和CPL 来确认一个访问是否合法。即提出访问的段除了有足够的特权级CPL, 如果RPL 不够也是不行的(有些情况会忽略RPL 检查)。 为什么要有RPL? 操作系统往往通过设置RPL 的方法来避免低特权级的应用程序访问高特权级的内层数据。 例子情景:调用者调用操作系统的某过程去访问一个段。 当操作系统(被调用过程)从应用程序(调用者)接受一个选择子时,会把选择子的RPL 设置称调 用者的权限等级,于是操作系统用这个选择子去访问相应的段时(这时CPL 为操作系统的等级, 因为正在运行操作系统的代码),处理器会使用调用者的特权级去进行特权级检查,而不是正在 实施访问动作的操作系统的特权级(CPL),这样操作系统就不用以自己的身份去访问(就防止了 应用去访问需要高权限的内层数据,除非应用程序本身的权限就足够高)。 那么 RPL 的作用就比较明显了:因为同一时刻只能有一个CPL,而当低权限的应用去调用拥 有至高权限的操作系统的功能来访问一个目标段时,进入操作系统代码段时CPL 变成了操作系 统的CPL,如果没有RPL,那么权限检查的时候就会用CPL,而这个CPL 权限比应用程序高, 也就可能去访问需要高权限才能访问的数据,这就不安全了。所以引入RPL,让它去代表访问 权限,因此在检查CPL 的同时,也会检查RPL.一般来说如果RPL 的数字比CPL 大(权限比 CPL 的低),那么RPL 会起决定性作用。 说这么多不明白都不行啦~真累 下面是

文档评论(0)

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

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

1亿VIP精品文档

相关文档