“内核模式”和“用户模式”是硬件特性还是软件特性?

DSc*_*ipt 3 linux cpu kernel architecture

我读到有两种称为“内核模式”和“用户模式”的模式来处理进程的执行。(了解 Linux 内核,第 3 版。)这是由 Linux 控制的硬件开关(内核/用户),还是由 Linux 内核提供的软件功能?

Gil*_*il' 7

内核模式和用户模式是硬件特性,特别是处理器的特性。为中高端系统(PC、功能手机、智能手机、除最简单的网络设备之外的所有设备……)设计的处理器都包含此功能。内核模式可以有不同的名称:主管模式、特权模式等。在 x86(PC 中的处理器类型)上,它被称为“ring 0”,而用户模式被称为“ring 3”。

处理器在寄存器中有一点存储空间,用于指示它是处于内核模式还是用户模式。(在具有两种以上此类模式的处理器上,这可能不止一位。)某些操作只能在内核模式下执行,特别是通过修改控制MMU的寄存器来更改虚拟内存配置。此外,从用户模式切换到内核模式的方法很少,而且都需要跳转到内核代码控制的地址。这允许在内核模式下运行的代码控制在用户模式下运行的代码可以访问的内存。

类 Unix 操作系统(以及大多数其他具有进程隔离的操作系统)分为两部分:

  • 内核以内核模式运行。内核可以做任何事情。
  • 进程在用户模式下运行。进程不能访问硬件,也不能访问其他进程的内存(显式共享除外)。

因此,操作系统利用硬件功能(特权模式,MMU)来强制执行进程之间的隔离。

基于微内核的操作系统具有更细粒度的架构,在内核模式下运行的代码更少。

当用户模式代码需要执行它不能直接执行的操作(例如访问文件、访问外围设备、与另一个进程通信等)时,它会进行系统调用:跳转到内核代码中的预定义位置。

当硬件外设需要请求 CPU 关注时,它会将 CPU 切换到内核模式并跳转到内核代码中的预定义位置。这称为中断

进一步阅读