【问题标题】:Privilege levels implementation特权级别实施
【发布时间】:2012-11-06 05:06:55
【问题描述】:

我了解通常 CPU 可以以两种模式之一运行: 高级权限模式允许访问硬件中的“安全”区域,而低级权限模式用于访问其余 cpu 功能。

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

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

【问题讨论】:

标签: operating-system cpu privileges


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我实际上对 CPU 本身在权限级别之间切换的方式更感兴趣。也就是说,在某些时候 CPU 必须在用户模式级别(环 3)运行,然后,需要做一些需要环 0 权限的事情。加载这个新命令导致 CPU 的当前特权级别 (CPL) 发生变化时会发生什么过程?
    • 嗯,老实说,这是一件非常复杂的事情。你想知道实际电路中发生了什么吗?因为那样我就帮不了你了。
    猜你喜欢
    • 2012-08-26
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2015-05-19
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多