【问题标题】:Are "Protection rings" and "CPU modes" the same thing?“保护环”和“CPU 模式”是一回事吗?
【发布时间】:2020-05-05 19:57:22
【问题描述】:

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

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

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

Protection rings

CPU modes

【问题讨论】:

    标签: operating-system cpu cpu-architecture cpu-registers


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 我认为 ring 1 / ring 2 可能对微内核的半特权部分有用。如果有任何 x86 微内核以这种方式使用环,或者这甚至是合理的,则 IDK。
    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多