内核/用户模式下的CPU

问题描述:

CPU可以处于内核模式(完全权限)或用户模式。内核需要内核模式,而应用程序需要以用户模式运行。但是,CPU如何一次处于两种模式?内核/用户模式下的CPU

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

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

+2

除了supercat的回答之外,CPU并不是一次处于两种模式。它要么正在运行用户模式代码,要么正在运行内核模式代码(在同一个逻辑核心上)。 – tangrs 2014-09-19 22:41:20

+0

@tangrs:任何给定的执行上下文将只处于一种模式。如果一个CPU可以同时处理句柄执行上下文(例如,使用多个内核或单核上的超线程),那么CPU的逻辑分离部分可以处于一种模式,而部分处于另一种模式。 – supercat 2014-09-20 18:14:54

+0

supercat&tangrs,谢谢澄清我的主题。 – Mark 2014-09-20 22:07:41