程序直接控制方式
完成一次读写操作的流程(以读操作为例子)
1.cpu向控制器发出读指令,于是设备启动,并且状态寄存器设置为1(未就绪)
2.轮询检查控制器的状态
3.输入设备准备好数据后,将数据传给控制器,并且报告自身状态
4.控制器讲输入的数据放到数据寄存器中,并将状态改为0
5.cpu发现设备以及就绪,即可讲数据寄存器的内容读入cpu的寄存器中,再把cpu寄存器中的内容放入内存
6.若还需要继续读如数据,则cpu继续发出读指令
关键词:轮询
cpu干预的频率很频繁,IO操作开始之前完成之后需要cpu介入,并且在等待IO完成的过程中CPU需要不断轮询检查
数据传输的单位
每次读写一个字
数据的流向:
读:从IO设备-》cpu-〉内存
写:从内存-》cpu-〉io设备
每个字的读写都需要cpu帮助
优点:实现简单,在读写之后,加上实现循环的检查一系列指令即可
缺点:cpu和io设备只能串形工作,cpu一直轮询检查,长期处于忙等,cpu利用率低
中断控制方式
引入中断机构,因为io速度很慢,cpu速度快,因此可以阻断等待io的进程。当io完成后,控制器向cpu发出一个中断信号(告诉cpu现在要去做别的事情)
cpu监测到中断信号之后,会保存当前的允许环境信息,转而去执行中断处理程序,处理该中断,处理过程中,cpu从io控制器读一个字的数据传送到cpu寄存器(如果你没有好,我先干别的,如果你好了,发一个字给我)
注意:
1.cpu在每个指令周期末尾检查中断
2.中断处理过程中需要保存,恢复进程的允许环境,这个过程是需要一定时间开销的,可见,如果中断发生频率太高,也会降低系统性能
1.cpu的干预频率
每次io操作开始之前,完成之后需要cpu介入
等待io完成的过程中cpu可以切换到别的进程执行
2.数据传输单位:每次读写一个字
数据的流向:
读:从IO设备-》cpu-〉内存
写:从内存-》cpu-〉io设备
优点:解决了程序直接控制方式最大的缺点,使得cpu和io设备可并行工作,cpu利用率得到明显提升。
缺点:每个字在io设备与内存直接的传输,都需要经过cpu,而频繁中断处理会消耗较多cpu时间
DMA方式
直接存储器存取(Direct Memory Access)
1.数据传输单位是一个块,而不是一个字
2.数据的流向是从设备直接放入内存,或者内存直接到设备,不再需要cpu作为快递小哥
3.仅在传送一个或者多个数据库的开始和结束时,才需要cpu干预
DR(data register):暂存从设备到内存,或者从内存到设备的数据
MAR(memory Address Register)表示数据应该放在内存的什么位置
DC(Data Counter):表示剩余要读写的字节数
CR(Command Register)用来存放cpu发来的io命令
1.cpu干预频率:
仅在传送一个或者多个数据块的开始和结尾才需要cpu干预
2.每次读写一个或者多个块,而不是字(每次读写只能是连续的多个块,且这些块在读如内存后内存中也是连续的)
读:IO设备-》内存
写:内存-〉io设备
优点:数据传输以块为单位,cpu介入评论进一步降低,数据的传输不再需要现经过cpu在写入内存,cpu和io设备的并行性得到提升
缺点:cpu每发出一条io指令,只能读写一个或者多个连续的数据块
通道控制方式
26不考