👌 中断会使CPU由用户态变为内核态,使操作系统重新夺回CPU的使用权。中断也是让操作系统内核夺回CPU使用权的唯一路径。
❓如果没有中断机制的化,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序,那么并发怎么办?这样不久没办法实现并发了嘛。所以要想实现并发,必须要实现中断。
内中断:与当前执行的指令有关,中断信号来源于CPU内部。
外中断:与当前执行的指令无关,中断信号来源于CPU外部。
📒内中断的例子:
这里我们用Java来实现这个例子
public class Demo { public static void main(String[] args) { int i=1/0; } }
- 1
- 2
- 3
- 4
- 5
这里就报了一个异常,表示除零错误。
所以如果执行指令非法或者参数非法或者主动想要切换内核态的话,那么就会引发内中断。
📖外中断的例子:
CPU在每一个指令结束的时候就会例行检查有无外中断信号。
总结
故障:由错误条件引起的,可能被内核程序修复,内核程序修复故障后会把CPU使用权还给应用程序,让他继续执行下去。
终止:内核程序无法修复了,必须终止应用程序。
不同的中断不可能由同一个中断处理程序来出来,所以会由不同。
CPU会根据不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测道中断信号后,会根据中断信号的类型去查询”中断向量表“,以此来找到相应的中断处理程序在内存中的存放位置。