首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CPU特权环:为什么不使用环1和环2?

CPU特权环:为什么不使用环1和环2?
EN

Stack Overflow用户
提问于 2011-07-16 00:13:59
回答 3查看 36.8K关注 0票数 118

有几个关于x86 CPU特权环的问题:

  • 为什么大多数操作系统不使用环1和环2?这仅仅是为了保持代码与其他架构的兼容性,还是有更好的理由?
  • 有没有操作系统真正使用这些环?还是说它们完全没人用过?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-16 00:23:31

作为一名业余操作系统作者,我发现由于分页(现代保护模型的主要部分)只有特权(环0,1,2)和非特权的概念,因此环1和环2的好处大大减少。

英特尔设置环1和环2的目的是让操作系统将设备驱动程序放在该级别,因此它们具有特权,但与内核代码的其余部分有所分离。

环1和环2在某种程度上是“大部分”特权的。他们可以访问管理页面,但如果他们试图使用特权指令,他们仍然会像ring 3那样使用GPF。因此,这不是一个英特尔计划的驱动程序的坏地方…

也就是说,它们确实在一些设计中有用武之地。事实上,并不总是由操作系统直接执行。例如,VirtualBox,一个Virtual Machine,将客户内核代码放在环1中。我也确定一些操作系统确实使用了它们,只是我不认为它目前是一个流行的设计。

票数 133
EN

Stack Overflow用户

发布于 2011-07-16 00:31:11

从操作系统设计的角度来看,拥有多个特权环是x86的一个奇怪之处--大多数其他CPU只有两种模式(管理员和用户)。因此,将操作系统设计为需要多个特权模式将立即阻止将其移植到任何其他CPU。此外,许多现代虚拟化包不能正确模拟除0和3以外的特权级别,这使得使用这些级别的OSes更难测试。

票数 27
EN

Stack Overflow用户

发布于 2011-07-16 00:31:33

根据维基百科在Ring Security上的页面,环1和环2用于驱动程序(环1)、客户操作系统(环1)和i/o特权代码(环2),虚拟机管理程序位于-1/0 (取决于超级管理程序),而不是我之前所说的1。

然而,额外的两个环从来没有真正的帮助,因此变得很少使用。TBH,大多数使用环1和环2的代码已经将它们从原来的用途(如虚拟机管理程序)半重新调整了用途。如今大多数windows代码似乎将系统视为只有两个级别(内核和用户),这可能是由于进入和离开内核领域的相关开销。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6710040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档