我曾经遇到过内核空间和用户空间的概念。内核代码中的数据和函数不能从用户空间访问。CPU如何准确地区分它运行的代码是否是内核?我知道CPU为内核代码执行设置了一些内核模式位,但代码中到底是什么促使它设置内核模式位。
ntjbwcob1#
这个问题的确切答案取决于CPU架构,但一般来说是这样的:在以下情况下,CPU将进入内核模式:
你可能会注意到,当CPU进入内核模式时-它总是跳转到一些预定义的地址。此外,这些地址只能在内核模式下更改-用户程序永远不允许决定目的地。内核完全控制进入内核模式的所有入口点。用户模式可以通过一个特殊的指令进入。通常,这个指令也会跳转,但这次它允许选择目的地。
1条答案
按热度按时间ntjbwcob1#
这个问题的确切答案取决于CPU架构,但一般来说是这样的:
在以下情况下,CPU将进入内核模式:
你可能会注意到,当CPU进入内核模式时-它总是跳转到一些预定义的地址。此外,这些地址只能在内核模式下更改-用户程序永远不允许决定目的地。内核完全控制进入内核模式的所有入口点。
用户模式可以通过一个特殊的指令进入。通常,这个指令也会跳转,但这次它允许选择目的地。