据我所知,一般来说cpu可以运行两种模式之一: 高级权限模式,其中启用了对硬件中“安全”区域的访问,以及访问其余cpu函数时使用的低级权限模式。
我也理解有某种形式的保护机制强制只有操作系统才能在处理器上运行时处于高级特权模式(有时称为ring 0),并且当任何用户空间进程是运行处理器处于低级别特权模式(响铃3)。
我的问题是: cpu如何区分在ring 0模式下运行的OS进程和在ring 3中运行的用户空间进程?有什么机制可以确保用户级进程永远不会获得0级特权级别?
答案 0 :(得分:4)
这取决于处理器,但我会选择x86。
CPU不理解进程的想法。这是切换当前运行代码的操作系统抽象。 CPU了解运行代码所在页面的权限。
在分页操作系统中,OS代码存在于页表中标记为主管的页面中,而用户模式代码在页表中标记为用户模式。当CPU访问任何内存位置时,在这种情况下通过EIP的当前指令,CPU执行虚拟内存查找。在执行此查找时,CPU查看页表并能够检查管理程序/用户模式标志并以此方式解释当前指令。
答案 1 :(得分:0)
INT指令自动更改CPU的标志/状态/状态寄存器,以便执行特权指令。 CPU的环/特权级别由CPU内的标志/状态/状态寄存器指示。特权指令与状态寄存器的某些位进行AND运算。