“保护环”和“CPU模式”是一回事吗?

h4c*_*net 2 cpu operating-system cpu-architecture cpu-registers

我知道 CPU 有特殊的寄存器来跟踪 CPU 的运行模式。我认为“保护环”和“CPU模式”是一回事,但是当我阅读维基百科上关于“保护环”的文章时,我对“保护环”的真正含义感到困惑。我的困惑点是维基百科文章中的这些行:

在某些系统中,环保护可以与处理器模式(主/内核/特权/主管模式与从/非特权/用户模式)结合使用。在支持两者的硬件上运行的操作系统可以使用两种形式的保护或仅使用一种。

那么,“保护环”是操作系统级别的抽象吗?“保护环”和“CPU模式”有什么区别?任何进一步的解释表示赞赏。

保护环

CPU模式

Bre*_*dan 5

“保护环”和“CPU模式”是一回事吗?

这主要取决于 CPU 设计人员/制造商如何定义他们的术语。

对于 80x86;该术语定义为有多种 CPU 模式(实模式、保护模式、长模式等),并且某些 CPU 模式具有非 CPU 模式的特权级别。但是,如果他们愿意,英特尔可以更像“保护模式有 4 个子模式,每个权限级别一个”。

对于其他 CPU,术语可以定义为“管理模式”和“用户模式”(也可能是其他模式——“虚拟化模式”、“IRQ 模式”等)。ARM 像这样定义他们的术语(但如果他们愿意的话,他们可以更像“CPU 只有 2 种模式(正常模式和管理程序模式),其他一切都是别的东西(特权级别)”来定义他们的术语)。

那么,“保护环”是操作系统级别的抽象吗?“保护环”和“CPU模式”有什么区别?

一般而言,保护环的概念(将操作系统分成多个层并具有具有不同权限/特权的层)比 80x86(至少与 1960 年代的 multics 一样古老,但可能更旧,并且可能追溯到1950 年代),而 80x86 保护模式的设计仅仅是一个预先存在的概念的实现。

但是,没有现代操作系统(据我所知)使用这个概念(例如“单个保护域中的所有用户代码”);相反,他们使用了更多的隔离(例如“每个独立进程在其自己的隔离保护域中”),这使得拥有超过 2 个特权级别(一个用于控制隔离,另一个用于彼此隔离的所有内容)变得毫无意义.

  • 我认为环 1 / 环 2 可能对微内核的半特权部分有用。我不知道是否有 x86 微内核以这种方式使用环,或者这是否合理。 (2认同)