Operating system 特权级别实现

Operating system 特权级别实现,operating-system,cpu,privileges,Operating System,Cpu,Privileges,我了解,一般来说,cpu可以在两种模式中的一种模式下运行: 一种高级权限模式,允许访问硬件中的“安全”区域;另一种低级权限模式,在访问其余cpu功能时使用 我还了解到,存在某种形式的保护机制,强制执行只有操作系统才能在处理器处于高级特权模式(有时称为环0)时在处理器上运行,并且当任何用户空间进程正在运行时,处理器处于低级特权模式(环3) 我的问题是: cpu如何区分在0环模式下运行的操作系统进程和在3环模式下运行的用户空间进程?有什么机制可以确保用户级进程永远无法获得环0权限级别?这取决于处理器

我了解,一般来说,cpu可以在两种模式中的一种模式下运行: 一种高级权限模式,允许访问硬件中的“安全”区域;另一种低级权限模式,在访问其余cpu功能时使用

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

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

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

CPU不理解进程的概念。这是对当前运行的代码进行切换的操作系统抽象。CPU了解运行代码的权限,它位于哪个页面


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

INT指令自动更改CPU的标志/状态/状态寄存器,以便可以执行特权指令。CPU的环/特权级别由CPU内的标志/状态/状态寄存器指示。特权指令与状态寄存器的某些位进行AND运算以供执行。

检查这个问题。实际上,我对CPU本身在特权级别之间切换的方式更感兴趣。也就是说,在某个时刻,CPU必须在用户模式级别(环3)下运行,然后,需要执行一些需要环0权限的操作。当这个新命令被加载时,会发生什么样的过程,导致CPU的当前特权级别(CPL)发生变化?嗯,对于honset来说,这是一件非常复杂的事情。你想知道实际电路中发生了什么吗?因为那样我就帮不了你了。