【问题标题】:CPU in kernel/user mode内核/用户模式下的 CPU
【发布时间】:2014-09-19 21:55:59
【问题描述】:

CPU 可以处于内核模式(完全特权)或用户模式。内核需要内核模式,而应用程序需要在用户模式下运行。但是 CPU 怎么可能同时处于两种模式呢?

【问题讨论】:

    标签: linux-kernel cpu


    【解决方案1】:

    处理器通常包含一个模式标志,它指示处理器在给定时间处于哪种模式;该标志不一定需要做很多事情。在一个简单的实现中,该标志可能只控制是否允许处理器更改内存映射;处理器将包括一条简单地切换到用户模式的指令,以及一条同时切换到内核模式并跳转到特定地址的指令。

    如果内核将自己的代码存储在上述地址,然后切换内存映射以使相关地址受到写保护,那么用户代码将能够通过将其请求存储在某处来请求内核做某事,然后调用“切换到内核模式并跳转”指令。然后内核代码可以启用其私有内存区域,检查用户模式代码存储的请求,根据请求采取行动,禁用其私有内存区域,切换回用户模式,然后返回执行用户模式代码。

    【讨论】:

    • 除了 supercat 的回答之外,CPU 并没有同时处于两种模式。它要么运行用户模式代码,要么运行内核模式代码(在同一个逻辑核心上)。
    • @tangrs:任何给定的执行上下文都只会处于一种模式。如果 CPU 可以同时处理句柄执行上下文(例如,使用多个内核,或在单个内核上使用超线程),那么 CPU 的逻辑分离部分可能处于一种模式,而部分则处于另一种模式。
    • supercat & tangrs,感谢您为我澄清了这个问题。
    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多