关于IO大题,最常考的是三种/O 控制方式,下面我们就围绕IO控制方式对此类大题进行总结~
三种IO控制方式
(一)程序查询方式
设备向缓冲区输入数据,CPU定时查询缓冲区获取数据,适合输入效率慢的设备。查询最长间隔计算公式如下:
(二)中断处理方式
如果说程序查询方式是CPU主动型,那么中断处理方式就是缓冲区主动型,缓冲区充满一次就发起一次中断请求,不过要注意一点,就是缓冲区充满一次所需要的时间要大于执行一次中断的时间,否则前一次IO中断还未执行完,后一次IO缓冲区就已经充满了,会因为覆盖导致数据丢失。
(三)DMA方式
DMA是CPU的小弟,可以帮助CPU处理IO请求,毕竟IO本质上就是个复制粘贴工作,DMA方式可以减少CPU处理时间,从而把CPU的精力给到更有价值的工作。DMA方式下,CPU首先告诉DMA要写的位置是哪(预处理),设备先向DMA中的缓冲区写,DMA再写入存储器的指定块中(数据传送),然后写完一个块后(注意是一块,不是一个缓冲区),告诉大哥CPU工作已完成(DMA中断),CPU来查收一下(后处理),这样就写完了一块,相较于一个缓冲区CPU就要处理一次的方式,DMA方式工作效率大大提高,适合输入效率快的设备。充满一块的时间计算公式如下:
常考三种方式下CPU用于该外设/O的时间占整个CPU时间的百分比是多少,对于这个问题,公式如下:
百分比=CPU用于该外设的时间(查询、中断、DMA处理时间)/充满一个传输单位(缓冲区)的时间x100%=中断请求的响应与处理时间/发出中断请求间隔x100%
关于DMA方式有一个常考的概念——周期挪用,DMA控制器每隔一段时间挪用若干个存取周期传送数据,传送完一个数据字后立刻释放总线,而非在传送完一个DMA数据块后释放总线。即在DMA传送方式中,当I/O设备没有DMA请求时,CPU按程序的要求访问主存,一旦I/O设备有DMA请求并与CPU访存发生冲突时,CPU要暂停一个存取周期访存,把总线控制权让给DMA。这就好比I/O设备挪用了CPU的访存周期,故称周期挪用或周期窃取,周期挪用法由DMA控制器挪用一个或几个主存周期来访问主存,传送完一个数据字后立即释放总线,是一种单字传送方式,每个字传送完后CPU可以访问主存。
写在后面
这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!
参考资料
[1]王道408教材(2025版)
[2]王道课程资料