程序查询方式流程
1 这种方式传送数据时会占用CPU的寄存器,先将寄存器中原有有用信息保护起来
2 设置交换数据计数值
3 设置欲传送数据在内存缓冲区中的首地址
4 启动I/O设备
5 查询设备是否准备就绪(查询接口电路中的状态标志位),当CPU可向接口中的数据寄存器中读取或者输入数据时,表示准备就绪
6 CPU执行I/O指令读取接口中数据寄存器中的内容,并将接口中的状态标志位复位
7 设置新内存地址
8 修改计数值
9 判断计数值(为0表示一批数据传送完毕)
10 结束I/O传送,继续执行现行程序
程序中断方式
概念:遇到异常情况或特殊请求,中断现行程序的执行转而对这些异常情况或特殊请求的处理,处理完成后再继续执行现行程序,称为“中断”,可以提高计算机的性能,凡能向CPU提出中断请求的各种因数统称为中断源
I/O中断的产生:只有当I/O设备准备就绪向CPU提出中断请求后,CPU才中断现行程序转而执行中断服务程序
I/O中断处理过程(以输入为列)
1 CPU通过I/O指令中的地址码选中某个设备,CPU发送启动设备指令,将“D”置0(完成触发器),“B”置1
2 接口启动输入设备开始工作
3 输入设备将数据送至接口中的数据寄存器
4 设备向接口发“设备准备就绪”信号,将“D”置1,“B”置0
5 当屏蔽信号为0(设备未被屏蔽时),中断查询信号(统一在每条指令执行的最后阶段发出查询信号)将接口电路中的中断请求触发器置为1
6 请求触发器置为1标志设备向CPU发出中断请求,将此信号送至排队器进行中断判优(链式排队器)
7 若CPU允许中断且该设备被选中,进入中断响应阶段,由中断响应信号将排队器输出送至设备编码器形成向量地址
8 向量地址送至PC(CPU中的程序计数器),作为下一跳指令的地址
9 该地址保存了一条无条件转移指令,该指令执行后将无条件转入中断服务程序入口地址,开始执行中断服务程序,进入中断服务阶段,通过输入指令将数据缓冲寄存器中的输入数据送至CPU中的通用寄存器,再送至内存相关单元
10 中断服务程序的最后一条指令是中断返回指令,当该指令执行后,中断返回至原程序断点处,中断处理过程结束
总结:中断请求--中断判优--中断响应--中断服务--中断返回
中断服务程序的流程
1 保护现场:保存程序现场和CPU中寄存器的内容
2 中断服务:不同的设备有不同的需求
3 恢复现场:恢复程序中断时CPU的现场
4 中断返回:返回原程序断点处
单中断与多重中断的区别:CPU响应某一中断源的中断请求后由硬件线路自动关中断,单中断的开中断指令设置在“中断返回”之前,意味着在中断处理中不会再响应其他中断源的中断请求,多重中断的开中断指令则设置在“保护现场”后,意味着在“保护现场”后可响应更高级别的中断源的中断请求(中断现行服务程序,执行更高级别中断服务程序)