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

有关x86 CPU权限环的一些问题:

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

  • 有没有实际使用这些戒指的操作系统? 还是完全没有使用?

作为业余爱好者的操作系统作者,我发现由于分页(现代保护模型的主要部分)只具有特权(环0,1,2)和无特权的概念,所以环1和2的好处大大减less了。

英特尔在第一和第二环的意图是让操作系统把设备驱动程序放在那个级别,所以它们是有特权的,但是与其他内核代码有些分离。

戒指1和2在某种程度上是“大多数”的特权。 他们可以访问主pipe页面,但是如果他们试图使用特权指令,他们仍然像GP3一样GPF。 因此英特尔计划对司机来说并不是一个糟糕的地方。

也就是说,他们肯定在某些devise中有用处。 事实上,并不总是直接由操作系统。 例如, VirtualBox是一个虚拟机 ,它将来宾内核代码放在第一个环中。我也确信一些操作系统可以利用它们,我不认为这是一个受欢迎的devise。

从操作系统devise的angular度来看,具有多个特权环是x86的一个奇怪的 – 大多数其他CPU只有两种模式(pipe理员和用户)。 因此,devise一个需要多种特权模式的操作系统将会立即阻止它被移植到任何其他CPU上。 此外,许多现代虚拟化软件包不能正确模拟除0和3以外的特权级别,使得使用这些级别的操作系统更难以testing。

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

然而,额外的两个戒指从来没有真正的帮助,因此很less使用。 TBH,大多数使用环1和环2的代码将它们从原始用途(例如pipe理程序)中重新利用。 现在大多数windows代码似乎都把系统看作只有两个级别(内核和用户),可能是由于进入和离开内核的开销