操作系统I/O控制方式
程序直接控制方式
1)I/O发送读请求之后,设备启动,并且状态寄存器置为1即未就绪状态
2)CPU轮询,查看寄存器状态何时就绪
3)输入设备准备数据,传给控制器并且报告自身的状态
4)控制器拿到数据存到数据寄存器,状态寄存器置为0(已就绪)。
5)CPU拿到数据读入CPU寄存器,并且写入内存
- CPU干预频繁,每次I/O操作完成前后都需要一次,还有轮询。
- 每次读写都是1个字
- 数据流向
I/O设备===》CPU===》内存 读
I/O设备《===CPU《===内存 写 - 明显缺点是CPU资源利用率太低,一直在忙等状态,CPU速率快 I/O慢,速度矛盾,
唯一优点是实现简单,读写和轮询。
中断控制方式
其实是为了优化之前的程序直接控制法,提升CPU的资源利用率
从I/O的角度看,首先输入输出控制器从CPU拿到读指令,然后从外围设备读数据,然后存到数据寄存器,然后通过控制线给CPU发送中断信号,CPU存到自己的寄存器里,然后写入内存从CPU的角度看,发起了读指令之后,先保存运行程序的上下文,接着去执行其他进程,每次指令周期结束之际,去检查有没有I/O的中断,如果有去处理中断,拿到数据,存入内存。
- CPU干预频率在I/O切换进程时才会执行
- 数据传输是1个字
- 数据流向
I/O设备===》CPU===》内存 读
I/O设备《===CPU《===内存 写 - 优点:CPU和I/O设备并行,资源利用率提高
- 缺点:中断在每次I/O的时候都需要,比较频繁,影响性能。
DMA方式(Direct Memory Access)
- 为了解决中断控制方式的CPU干预,中断引起的性能问题,优化方式为不通过CPU干预,直接和内存进行数据传输。
- DMA控制器组成: MAR 内存地址寄存器,DR 数据寄存器 ,DC 数据计数器, CR 命令/状态寄存器
CPU接到请求,发送一条请求给I/O控制器,控制器负责启动DMA控制器,CPU把任务清单给到DMA,DMA负责操作传输数据,传送数据块,在一次任务全部完成之后DMA会发送一条中断指令给CPU,只有开始结束的时候才需要CPU的参与
- CPU只有在开始和结束的时候干预
- 每次传输1个数据块
- 数据流向
I/O设备===》内存 读
I/O设备《===内存 写 - 优点 CPU介入频率小,资源利用率高
- 缺点 CPU每次只能发一条I/O ,只能读写连续的数据块
通道控制方式
通道是一种硬件
完成一组数据块的读写后才发出中断信号,数据传输单位是一组数据块,其数据流向也是不经过CPU的,优点是CPU,I/O,通道并行,资源利用率进一步提高,缺点是实现复杂,需要硬件支持。