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

时间:2011-07-15 16:13:59

标签: x86 cpu privileges

有关x86 CPU权限的几个问题:

  • 为什么大多数操作系统都没有使用第1和第2环?是仅仅维护代码与其他架构的兼容性,还是有更好的理由?

  • 是否有任何实际使用这些环的操作系统?或者他们完全没用?

3 个答案:

答案 0 :(得分:80)

作为一个业余爱好者操作系统编写者,我发现因为分页(现代保护模型的一个主要部分)只有特权(环0,1,2)和非特权的概念,所以环1和环2的好处是大大减少了。

英特尔在第1和第2环中的意图是让操作系统将设备驱动程序置于该级别,因此它们具有特权,但与其他内核代码有些分离。

第1和第2环在某种程度上,“大部分”都是特权。他们可以访问超级用户页面,但如果他们尝试使用特权指令,他们仍然像环3那样的GPF。所以对英特尔计划的司机来说,这不是一个糟糕的地方......

也就是说,它们确实在某些设计中有用。实际上,并不总是直接由OS。例如,VirtualBox,一个Virtual Machine,将来宾内核代码放在第1环中。我也确定某些操作系统会使用它们,我只是觉得它不是一个受欢迎的设计那一刻。

答案 1 :(得分:18)

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

答案 2 :(得分:5)

根据维基百科(http://en.m.wikipedia.org/wiki/Ring_(computer_security)),环1和2用于驱动程序(环1),客户操作系统(环1)和i / o特权代码(环2),超级遮阳板坐在-1/0(取决于超级遮阳板),如前所述,不是1。

然而,额外的两个戒指从未真正帮助过,因而很少使用。 TBH,大多数使用环1和2的代码都使用它们的原始用途(例如虚拟机管理程序)进行半重新调整。现在大多数Windows代码似乎都认为系统只有两个级别(内核和用户),可能是由于进入和离开内核的负担而导致