程序查询与程序中断
查询流程
单设备
- 检查状态标记
- (是)交换数据
多设备
- 检查设备1状态标记
- (否)检查设备2状态标记…
- (否)检查设备N状态标记
- (是)处理设备1->处理设备N
程序中断方式
概念
CPU在执行中,遇到特殊事件或者异常时,暂停原来的程序,去处理这个事件(执行中断服务程序),之后再返回
I/O中断处理过程
CPU响应中断的条件:
- 允许中断触发器EINT=1
- 开中断,将EINT置1
- 关中断,将EINT置0,或者硬件自动复位
CPU响应中断的时间:
- D=1 && MASK=0
- 每条指令执行结束前
- CPU发出终端查询信号
以输入为例的 I/O中断处理过程:
- 启动命令
- 启动设备
- 输入数据
- 设备工作结束
- 中断查询
- 中断请求
- 中断响应
- 向量地址
中断服务程序流程
- 保护现场
- 中断服务
- 恢复现场
- 中断返回
单中断
中断服务程序不能被中断:
- 取指令
- 执行指令
- 是否中断
- (是)中断响应
- 保护现场
- 设备服务
- 恢复现场
- 开中断
- 中断返回
多重中断
中断服务程序可以被更高优先级的中断源中断
- 取指令
- 执行指令
- 是否中断
- (是)中断响应
- 保护现场
- 开中断
- 设备服务
- 恢复现场
- 中断返回
流程上的直观区别就是,多重中断保护完现场就开中断了,而单中断要到恢复完现场再开中断