权限级别实现

cri*_*005 5 cpu privileges operating-system

据我所知,一般情况下,cpu可以运行两种模式之一:高级权限模式,其中启用对硬件中"安全"区域的访问,以及访问其余模式时使用的低级权限模式. cpu功能.

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

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

Lin*_*ios 5

这取决于处理器,但我会选择 x86。

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

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