- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]7、Linux011的中断处理过程和系统调用
一、80386特权级规则 80386为了支持多用户、多任务的操作系统,为了使操作系统程序和用户程序之间的隔离和保护,提供了一个具有4个特权级的特权机制。利用这个特权机制,控制了特权指令和I/O指令的使用,并控制了对段和段描述符的访问。 在80386中,有4个特权级:特权级0,1,2,3,每一个段(码段、数据段或堆栈段)都处在一个特定的特权级(由段描述符中的DPL决定),正在执行的码有一个特权级称为当前特权级CPL (Current Privilege Level ),它取决于正在执行的码的码段寄存器CS的最后两位。处在当前特权级的执行码,要访问存储器段,或要实现控制转移时,就要遵循一定的特殊规则: 1、特权级为P的段中存储的数据,只能由特权高于或等于P(数值上小于或等于P)的段中的执行码来访问。 第一条规则是规定了数据的访问,即特权级高的程序可以访间特权级低(或相等)的数据,反之是不允许的。也就是说,工作在用户态(特权级3)的用户程序,只能访间在用户态特权级的数据,不允许访间存放在核心态(特权级0)的系统数据。这样,对系统管理十分重要的一些核心表格,例如进程表,页表,放在特权级D,只能由核心码段访问,用户程序就不会破坏(无意地或有意地)破坏这些数据。 2、具有特权级P的码段/过程(函数),只能由在低于或等于P(数值上大于或等于P)的恃权级下执行的任务调用。 第二条规则是规定了不同特权级之间的控制转移,即只能由特权级低的程序调用特权级高的码段(当然要通过调用门).反之是不允许的。这样的规定是符合多用户操作系统的实际情况下,通常只会由用户程序(特权级低)需要调用操作系统的核心(特权级高)以提供支持,而不会出现操作系统核心需要调用用户程序以得到用户的帮助这样的情况。这条规则,当系统初启,经过初始化(在核心态运行)要转至用户态,控制、管理用户登录及分派用户程序运行时就发生了困难。为此,系统中也安排了由特权级高的核心分派特权级低的用户程序运行的方法(具体方法我们在后面分析)。 二、系统中的各种特权级 ①任务特权 在任何时候,80386中的一个任务总是在4个特权级之一下运行,任务在特定时刻的特权级,称为当前特权级CPL,它是由当前正在执行的码的码段寄存器CS的最低两位决定的。当任务在用户态执行时,执行的是用户程序的码段,它的当前特权级就为3;而当任务因各种原因(中断、异常或系统调用)进入核心态,执行的是操作系统核心的码段,则它的当前特权级就为0. 通常,当一个任务由系统的任务转换操作(操作系统的进程调度任务)启动时,它就在由代码段寄存器(CS )所规定的CPL值所规定的特权级(通常为特权级3)上执行,一个任务的当前特权级CPL是不能随意改变的,只有在系统发生了中断或异常,或任务中通过调用门实现控制转移时才能改变。 ②描述符特权 80386中的每一个存储段都与一定的特权级相联系,每一个存储段的访问都要通过它的描述符。每一个描述符的访问权字节中,都有两位规定了此描述符的特权级DPL(Descriptor Privilege Level) 。DPL规定了可以访问该描述符的任务的最低特权级,也即CPL值的最高界限。换句话说,只有满足条件CPL=DPL (数值)时,当前的任务才可以访问该描述符。显然。具有DPL=0的描述符,受到最大的保护,只有在特权级0执行的任务,才能访问它们;具有DPL=3的描述符,受到最少的保护(即具有最少的访问限制),因为工作在特权级0,1,2,3上的任何任务,都可以访问它们。除了LDT描述符(该描述符的DPL字段没有意义)外,这个规则适用于所有的描述符。 ③选择子特权 一个选择子的特权,是由它的最低两位即请求特权级RPL (Request Privilege Level)字段所确定的。一个具有当前特权级CPL的任务,要访问某一个段,就要通过一个选择子以寻找此段的描述符。如前所述,段描述符中包含了此段的32位基地址、20位的段界限(还包括粒度位G)以及此段的访问权字节(包括此段的DPL) ,80386对这样的访问要进行特权检查,现在有三个特权级,即任务的当前特权级CPL、选择子的请求特权级RPL和描述符特权级DPL ,检查应如何进行呢?选择子的RPL的存在,建立了一个等于或低于任务的当前特权级的特权级,称为任务的有效特权级EPL(Effective Privi-lege Level],它取RPL和CPL中的较大值,即EPL = max (CPL ,RPL )。具有RPL = 0的选择子,在使用上没有附加特权的限制,而具有RPL = 3的选择子,附加了最大的特权限制,不管任务的CPL是什么,EPL都为3,就只能访问特权级为3的段。在附加了RPL后的描述符的访问条件为:
文档评论(0)