5

我知道通常 cpu 可以以两种模式之一运行:高级权限模式,其中启用对硬件中“安全”区域的访问,以及访问其余部分时使用的低级权限模式。中央处理器功能。

我也知道有某种形式的保护机制强制只有操作系统才能在处理器上运行,而它处于高级特权模式(有时称为环 0),并且当任何用户空间进程正在运行处理器时处于低级特权模式(环 3)。

我的问题是:cpu 如何区分在 ring 0 模式下运行的 OS 进程和在 ring 3 中运行的用户空间进程?有什么机制可以确保用户级别的进程永远无法获得 ring 0 特权级别?

4

2 回答 2

5

这取决于处理器,但我将使用 x86。

CPU 不理解进程的概念。那是切换出当前正在运行的代码的操作系统抽象。CPU 通过它所在的页面了解运行代码的权限。

在分页操作系统中,操作系统代码位于页表中标记为主管的页面中,而用户模式代码在页表中标记为用户模式。当 CPU 访问任何内存位置时,在本例中是通过 EIP 的当前指令,CPU 会进行虚拟内存查找。在进行此查找时,CPU 会查看页表并能够检查主管/用户模式标志并以这种方式解释当前指令。

于 2012-11-19T04:31:26.243 回答
0

INT指令自动改变CPU的标志/状态/状态寄存器,从而可以执行特权指令。CPU 的环/特权级别由 CPU 内部的标志/状态/状态寄存器指示。特权指令与状态寄存器的某些位进行“与”运算以执行。

于 2013-11-05T02:48:41.953 回答