步骤 3 / 7
切到内核态
CPU 有两种模式,陷入时从用户态切到内核态。
CPU 自己记着当前是“用户态”还是“内核态”,用户态里很多操作会被硬件直接拦下。 陷入发生时,CPU 记下程序停在哪里,切换到内核态,从内核指定的入口开始执行。 这种切换由硬件保证,程序没法自己把自己变成内核态。
操作系统
程序不能直接碰硬件,想读写文件、上网、打印,都得通过“系统调用”这扇门请内核代办。
以 Linux(x86-64)上一个程序往终端打印一行字为例。
步骤 3 / 7
CPU 有两种模式,陷入时从用户态切到内核态。
CPU 自己记着当前是“用户态”还是“内核态”,用户态里很多操作会被硬件直接拦下。 陷入发生时,CPU 记下程序停在哪里,切换到内核态,从内核指定的入口开始执行。 这种切换由硬件保证,程序没法自己把自己变成内核态。
| 当前状态 | 发生了什么 |
|---|---|
| 用户态 | 程序想打印文字,但无权直接操作硬件 |
| 用户态 | 程序发起 write 系统调用 |
| 用户态 → 内核态 | CPU 切换模式,内核接手 |