跳到主要内容

用户态和内核态

· 阅读需 3 分钟

印象

这两个名词可能我们曾经在一些文章中见过或者听说过,但是我们可能不知道它到底代表着什么意思。

只知道可能用户态可以做我们代码中编写的一些逻辑的事情,但是具体涉及到什么系统调用之类的操作就需要在内核态才能完成了。

这可能都只是初步印象。

初识

在 《许式伟的架构课》,我学习到,保护模式下,CPU 引入了“保护环 (Protecting Rings)”的概念,用来对 CPU 指令做权限划分。

如 Intel CPU 通常把权限划分为 Ring 0-3 四个等级。

操作系统内核在 Ring 0 (内核态),常规应用软件在 Ring 3 (用户态)。一次中断调用,不只是 “函数调用”,重要的是改变了执行权限,从用户态到了内核态。

因此,我们上面提到的一些情况,应该是由于我们在用户态时,执行权限较低,而某些需要在内核态才能调用的操作只能交给操作系统内核来完成了。