【发布时间】:2014-09-19 21:55:59
【问题描述】:
CPU 可以处于内核模式(完全特权)或用户模式。内核需要内核模式,而应用程序需要在用户模式下运行。但是 CPU 怎么可能同时处于两种模式呢?
【问题讨论】:
标签: linux-kernel cpu
CPU 可以处于内核模式(完全特权)或用户模式。内核需要内核模式,而应用程序需要在用户模式下运行。但是 CPU 怎么可能同时处于两种模式呢?
【问题讨论】:
标签: linux-kernel cpu
处理器通常包含一个模式标志,它指示处理器在给定时间处于哪种模式;该标志不一定需要做很多事情。在一个简单的实现中,该标志可能只控制是否允许处理器更改内存映射;处理器将包括一条简单地切换到用户模式的指令,以及一条同时切换到内核模式并跳转到特定地址的指令。
如果内核将自己的代码存储在上述地址,然后切换内存映射以使相关地址受到写保护,那么用户代码将能够通过将其请求存储在某处来请求内核做某事,然后调用“切换到内核模式并跳转”指令。然后内核代码可以启用其私有内存区域,检查用户模式代码存储的请求,根据请求采取行动,禁用其私有内存区域,切换回用户模式,然后返回执行用户模式代码。
【讨论】: