1.中断机制的诞生:
早期计算机只能一个一个执行,程序串行执行,同一时刻只有一个程序在执行,资源利用率低。
之后人们发明了操作系统,引入中断机制,实现了多道程序并发执行。
本质:发生中断就意味着需要操作系统介入,展开管理工作。
当中断发生时,CPU会立即进入核心态
当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
对于不同中断信号,会进行不同处理
发生了中断,就意味着需要操作系统介入,开展管理工作。
由于操作系统的管理工作(比如:进程切换、分配I/O设备等)需要使用特权指令,
因此CPU要从用户态转为核心态。
中断可以使CPU从用户态切换为核心态,是操作系统获得计算机控制权。
有了中断才能实现多道程序并发。
2.切换
用户态——>核心态切换:是由中断实现,且中断为唯一途径。
核心态——>用户态切换:通过一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。
3.中断的分类:
3.1 内中断(也称异常、例外、陷入)
信号来源:CPU内部与当前执行的指令有关
自愿中断——指令中断(trap指令)
强迫中断——硬件故障(缺页)、软件中断(整数÷0)
3.2 外中断(狭义的中断)
信号来源:与当前指令无关
外设请求(eg:打印机用完了,I/O设备操作完成的请求)
人工干预(用户强行终止一个进程)
中断分类另一种方式
4.外中断的处理过程
假设CPU正在用户态下进行一系列指令
step1: 执行完每一个指令,CPU都要检查当前是否有外部中断信号。
step2:如果检测到外部中断信号,则需要保护被中断进程的CPU环境。
(如:程序状态字PSW,程序计数器PC,各种通用寄存器)
(类似玩游戏玩一半暂停游戏存档)
step3:根据中断信号类型转入相应的中断处理程序。
step4: 恢复原进程的CPU环境并推出中断,返回原程序继续向下执行。