5. 中断 & 异常
Last updated
Last updated
中断会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权
中断是让操作系统内核夺回 CPU 使用权的唯一途径。如果没有中断机制,那么一旦应用程序上 CPU 运行,CPU 就会一直运行这个应用程序
内中断:与当前执行的指令有关,中断信号来源于 CPU 内部
例子:
试图在用户态下执行特权指令
执行除法指令时发现除数为 0
执行一条特殊指令 —— 陷入指令,该指令会发出一个内部中断信号
执行陷入指令,就意味着应用程序主动把 CPU 控制权还给操作系统内核。系统调用就是通过陷入指令完成的
外中断:与当前执行的指令无关,中断信号来源于 CPU 外部
例子:
时钟中断 —— 由时钟部件发来的中断信号
I/O 中断 —— 由输入/输出设备发来的中断信号
不同的中断信号,需要不同的中断处理程序来处理。当 CPU 检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
中断处理程序一定是内核程序,需要运行在内核态。