IO方式
I/O方式
中断
- 中断由硬件保护并完成,主要是为了保证系统运行可靠、正确。
- 提高处理速度也是一个好处,但不是主要目的。
- 浮点数运算
- 浮点数运算下溢,当作
机器零处理
,不会引发中断 - 浮点数
上溢
,表示超过浮点数的表示范围,属于内中断
- 浮点数运算下溢,当作
- 中断由硬件保护并完成,主要是为了保证系统运行可靠、正确。
中断服务程序
是处理器处理的紧急事件,可理解为一种
服务
是通过执行事先编好的
某个特定的程序
来完成的,一般属于操作系统的模块,以供调用执行中断服务程序在
内核态
下执行
区分
中断向量
和中断向量地址
中断向量是
中断服务程序的入口地址
中断向量地址是内存中
存放中断向量的地址
- 即终端服务程序入口地址的地址
- 即中断类型号
DMA方式不需要CPU干预传送操作,仅在开始和结尾借用CPU一点时间,其余不占用CPU任何资源
- 中断方式是程序切换,每次操作需要保护和恢复现场
程序中断过程是由硬件执行的中断隐指令和中断服务程序共同完成的
中断服务程序的最后指令通常是中断返回指令,返回原程序的断点处重新执行
- 与无条件转移指令不同的是,它不仅要修改 PC 值,而且要将 CPU中的所有寄存器都恢复到中断前的状态
周期挪用法
- 准备好一个数据后,由 DMA 控制器立即挪用一个或几个主存周期来访问主存,传送完一个数据字后立即释放总线,是一种单字传送方式
- 每个字传送完后 CPU可以访问主存
只有具有 DMA 接口的设备才能产生 DMA 请求
- 即使当前设备是高速设备或需要与主机批量交换数据,若没有DMA接口的话,也不能产生 DMA 请求。
一般来讲,除不可屏蔽中断外,机器故障的优先级最高
- 不可屏蔽中断用于处理紧急和重要的事件
- 如时钟中断,电源掉电等
- 访管指令也具有较高的优先级
- 访管指令是进入核心态,大多与资源分配有关
- 重新启动要等待其他任务完成后再进行,所以优先级最低
- 不可屏蔽中断用于处理紧急和重要的事件
一条指令执行完毕可以响应中断请求,但他本身不会引起中断请求,不一定会产生中断请求
注意不同部件引起的中断类型不一样
- 如需要进行输入输出
- 用户程序(是指令发起的,属于内中断)需要输入输出时,是CPU发出中断请求,需要调用操作系统的接口(请求操作系统服务),此时会引起访管中断,系统由用户态转为核心态
- 此处也不是程序性中断,程序性中断是一个程序想要占用CPU资源引起中断,使得另一个程序中断
- 当外部IO设备主动进行输入输出时,属于I/O中断,是I/O系统发起的中断请求
- 用户程序(是指令发起的,属于内中断)需要输入输出时,是CPU发出中断请求,需要调用操作系统的接口(请求操作系统服务),此时会引起访管中断,系统由用户态转为核心态
- 如需要进行输入输出
允许中断触发器
- 置0表示关中断
- 由关中断指令实现,而关中断指令由中断隐指令完成,即由硬件自动实现
- 置0表示关中断
中断屏蔽标志技术的一种作用是实现中断升级,即改变中断处理的次序,因此其可以改变多个中断服务程序执行完的次序。
- 注意区分中断响应次序和中断处理次序
- 中断响应次序是由硬件排队电路决定的
- 注意区分中断响应次序和中断处理次序
三种IO的工作
- 程序查询方式中
- CPU与外设串行工作
- 传送与主程序串行工作
- 中断方式中
- CPU与外设并行工作
- 当数据准备好时需中断主程序以执行数据传送,因此传送与主程序是串行工作
- DMA方式中
- CPU与外设并行工作
- 传送与主程序并行工作
- 程序查询方式中
DMA方式是靠硬件电路实现的,与程序无关
- 直接程序传送、程序中断、通道控制都是基本的程序控制方式,需要程序的干预
DMA 方式的数据传送不经过 CPU,但需要经过 DMA 控制器中的数据缓冲寄存器
DMA方式中虽然DMA掌握控制权,但请求信号是由外部设备发出的
- 一个完整的 DMA 过程主要由 DMA 控制器控制,但也需要 CPU 参与控制,只是 CPU干预比较少,只需在数据传输开始和结束时干预(DMA通过中断方式取得和交还总线控制权),从而提高了CPU的效率。
PC 的内容是被中断程序尚未执行的第一条指令地址,PSW寄存器保存各种状态信息。CPU 响应中断后,需要保护中断的 CPU现场,将 PC 和 PSW压入堆栈,这样等到中断结束后,就可以将压入堆找的原 PC和 PSW的内容恢复到相应的寄存器,原程序从断点开始继续执行。
总结
中断处理方式
- 在 I/O设备输入每个数据的过程中,由于无须CPU 干预,因而可使 CPU与 I/O 设备并行工作。仅当输完一个数据时,才需 CPU 花费极短的时间去做一些中断处理。
- 因此中断申请使用的是 CPU 处理时间,发生的时间是在一条指令执行结束之后,数据在软件的控制下完成传送。(外设与主机之间的数据传送通过软件完成)
- 外设准备数据的时间应大于中断处理的时间
- 否则中断处理未结束,外设可能不断传送新数据,导致旧数据被覆盖
- 若外设准备数据的时间小于中断处理时间,则可能导致数据丢失,以输入设备为例,设备为进程准备的数据会先写入设备控制器的缓冲区(缓冲区大小有限),缓冲区每写满一次,就会向CPU发出一次中断请求,CPU响应并处理中断的过程,就是将缓冲区的数据取走的过程。
- 因此若外设准备数据的时间小于中断处理时间,则可能导致外设往缓冲区写入数据的速度快于CPU从缓冲区取走数据的速度,从而导致缓冲区的数据被覆盖,进而导致数据丢失。
- 否则中断处理未结束,外设可能不断传送新数据,导致旧数据被覆盖
DMA 方式
- 数据传输的基本单位是数据块,即在 CPU与 I/O 设备之间,每次传送至少一个数据块
- DMA方式每次申请的是总线的使用权,所传送的数据是从设备直接送入内存的,或者相反
- 仅在传送一个或多个数据块的开始和结束时,才需要 CPU干预,整块数据的传送是在控制器的控制下完成的。
- 每类设备都配置一个设备驱动程序,设备驱动程序向上层用户程序提供一组标准接口,负责实现对设备发出各种具体操作指令,用户程序不能直接和DMA 打交道