Meh*_*dad 89 cpu privileges x86
有关x86 CPU权限的几个问题:
为什么大多数操作系统都没有使用环1和环2?是仅仅维护代码与其他架构的兼容性,还是有更好的理由?
是否有任何操作系统实际使用这些环?或者他们完全没用?
Eva*_*ran 92
作为一个业余爱好者操作系统编写者,我发现因为分页(现代保护模型的一个主要部分)只有一个特权概念(环0,1,2)和非特权概念,所以环1和环2的好处大大减少了.
英特尔在第1和第2环中的意图是让操作系统将设备驱动程序置于该级别,因此它们具有特权,但与其余的内核代码有些分离.
第1和第2环在某种程度上,"大部分"都是特权.他们可以访问超级用户页面,但如果他们尝试使用特权指令,他们仍然像环3那样的GPF.因此英特尔计划对司机来说这不是一个糟糕的地方......
也就是说,它们确实在某些设计中有用.实际上,并不总是直接由OS.例如,VirtualBox是一个虚拟机,它将来宾内核代码放在第1环中.我也确信有些操作系统会使用它们,我不认为它现在是一种流行的设计.
dus*_*uff 18
从OS设计的角度来看,拥有多个特权环是x86的一个奇怪之处 - 大多数其他CPU只有两种模式(管理员和用户).因此,设计要求多个特权模式的操作系统将立即阻止将其移植到任何其他CPU.此外,许多现代虚拟化软件包无法正确模拟0和3以外的权限级别,因此使用这些级别的操作系统更难以测试.
根据维基百科(http://en.m.wikipedia.org/wiki/Ring_(computer_security)),环1和2用于驱动程序(环1),客户操作系统(环1)和i/o特权代码(环2),超级遮阳板位于-1/0(取决于超级遮阳板),而不是我之前所说的1.
然而,额外的两个戒指从来没有真正帮助,因此很少使用.TBH,大多数使用环1和2的代码都使用它们的原始用途(例如虚拟机管理程序)进行半重新调整.现在大多数Windows代码似乎将系统视为只有两个级别(内核和用户),可能是由于进入和离开内核域的相关开销