文章目录
中断
用户态、内核态之间的切换是怎么实现的?
- 用户态→内核态 是通过中断实现的。并且 中断是唯一途径 。
- 核心态→用户态 的切换是通过执行一个特权指令,将程序状态字 (
PSW
) 的标志位设置为 用户态 。
中断的处理过程:
- 执行完每个指令之后,CPU都要检查当前是否有外部中断信号。
- 如果检测到外部中断信号,则需要保护 被中断进程的CPU环境(如程序状态字
PSW
、程序计数器PC
、各种通用寄存器)。 - 根据中断信号类型转入相应的中断处理程序(进入内核态)。
- 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行。
过程调用
过程调用也就是 微机原理里的 CALL 、编程时调用的 库函数 。由于库函数调用是基于C库的,因此也就不可能用于内核空间的驱动程序对设备的操作。