一、中断的引入
- 当CPU启动通道(或设备)进行输入输出后,通道可以独立工作,CPU即转去做其他任务;
- 通道(或设备)输入输出完成后,通道通过向CPU发中断告诉CPU此次输入输出结束,让CPU继续执行原任务输入输出后的程序
- CPU执行指令时本身出现算术异常、零做除数、访存指令越界、虚存缺页等;
- 正常异常,即执行了一条trap指令,用于实现系统调用
1、中断:通道(或设备)完成输入输出后,通道会“通知”CPU此次输入输出结束,这个“通知”就是中断。
可以看到,中断与CPU正在执行的指令并没有关系。
2、异常:而异常则是正在执行的指令本身出现了错误(如算术溢出、地址越界)等。
3、但中断和异常的结果都是使得“CPU暂停正在执行的程序”:
CPU接受“中断”后停止当前的任务,去继续上一个任务或继续当时在执行的任务(如何选择则是与调度有关)。
CPU接受“异常”后停止当前任务,去处理这些错误。 处理完成后CPU返回暂停点继续工作。
4、中断:与正在执行的指令无关,可以屏蔽
异常:与正在执行的指令有关,不可屏蔽
四、中断/异常的分类
- 从提高资源利用率角度:高速设备(如磁盘)优先级高,慢速设备(如鼠标键盘)优先级低
- 交互式系统中:可以考虑用户响应满意优先原则
- 实时系统中:实时设备优先
- 硬件支持:屏蔽寄存器
- 软件实现:
屏蔽寄存器怎么设置?
七、中断/异常的响应
中断响应:CPU能够在每条机器指令执行周期内的最后时刻扫描中断寄存器,查看是否有中断信号。若无则CPU继续执行程序的后续指令;若有则转入操作系统内的中断处理程序
异常响应:异常是在执行指令的时候,由指令本身的原因发生的,CPU中指令的执行逻辑发现了异常则转入操作系统的异常处理程序
八、几个概念
PC寄存器:程序计数器,指向马上要执行的那一条指令
断点:检测到中断时,处理机刚执行完的那条执行恢复地址
恢复点:断点的逻辑后续指令地址,PC的值
现场信息:指中断那一刻确保被中断程序能继续运行的有关信息,如PC、通用寄存器、其他特殊寄存器等
核心态(系统态、监督方式、管态):允许特权指令执行的状态;此状态运行访问系统空间和用户空间
用户态(用户态、用户方式、目态):一般程序所运行的状态;只可以访问用户空间
PS(PSW)寄存器:程序状态字(处理机状态字),寄存了处理机的运行状态,包括:
- 当前处理机运行态(核心态or用户态)
- 当前处理机优先级
- 各种控制位(如外中断赋能位)
- 硬件保存PC、PSW
- 软件继续保存现场(保存现场以“栈”的方式)
- 分析原因并转中断/异常处理程序
- (进程调度)恢复现场