5. 中断 & 异常

1. 中断的作用

中断会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权

中断是让操作系统内核夺回 CPU 使用权的唯一途径。如果没有中断机制,那么一旦应用程序上 CPU 运行,CPU 就会一直运行这个应用程序

2. 中断的类型

内中断:与当前执行的指令有关,中断信号来源于 CPU 内部

例子:

  1. 试图在用户态下执行特权指令

  2. 执行除法指令时发现除数为 0

  3. 执行一条特殊指令 —— 陷入指令,该指令会发出一个内部中断信号

    • 执行陷入指令,就意味着应用程序主动把 CPU 控制权还给操作系统内核。系统调用就是通过陷入指令完成的

外中断:与当前执行的指令无关,中断信号来源于 CPU 外部

例子:

  1. 时钟中断 —— 由时钟部件发来的中断信号

  2. I/O 中断 —— 由输入/输出设备发来的中断信号

3. 中断机制的基本原理

不同的中断信号,需要不同的中断处理程序来处理。当 CPU 检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

中断处理程序一定是内核程序,需要运行在内核态。

Last updated