控制I/O设备四种方式
创始人
2024-04-05 01:55:54
0

文章目录

  • 程序直接控制方式
  • 中断驱动方式
  • DMA方式
  • 通道控制方法
  • 总结

程序直接控制方式

一次读数据操作

在这里插入图片描述

  • 其核心就是让我们的CPU去轮询

    1. CPU向控制器发出读指令,于是设备启动,并且将状态寄存器设置位1(未就绪)
    2. 轮询检查控制器的状态(其实就是再不断地执行程序的循环,若状态位一直是1,说明设备还没有准备好要输入的数据,于是CPU会不断地轮询)
    3. 输入设备将准备好的数据传给控制器,并报告自身的状态
    4. 控制器将输入的数据放到数据寄存器中,并将状态位改为0(已就绪)
    5. CPU通过轮询发现数据已经就绪,即可将数据寄存器中的内存读入CPU的寄存器中,然后再将CPU寄存器中的数据读入到内存

在这里插入图片描述

  • 因为需要CPU的寄存器来中转,所以读写的单位是字
  • PU干预的频率很频繁,I/O操作开始之前,完成之后都需要CPU的介入,并且在等待的时候还需要等待I/O的完成过程中CPU需要不断轮询检查——导致CPU和I/O设备只能串行工作
  • 这种方式虽然实现简单,但是效率很低,导致CPU和I/O设备只能串行工作

中断驱动方式

  • 因为轮询会浪费大量的CPU资源,CPU的利用率很低

在这里插入图片描述

  • 由于我们的I/O设备速度很慢,如果采用轮询会大大浪费我们的CPU资源,所以当引入我们的中断机制,当CPU发出了读/写命令之后,可将等待I/O的进程阻塞,先切换搭配别的进程执行,当I/O完成之后,控制器会向CPU发出一个中断信号,CPU检测到中断信号之后,会保存当前进程的允许环境信息,转去执行中断程序,处理中断的过程中CPU从I/O控制器读一个字的数据仅CPU的寄存器,再写入主存

    • CPU会再每个指令周期的末尾进行检测中断
    • 中断处理过程中需要保存和恢复进程的运行环境,这也是需要时间开销,所以中断的频率也不能太高

    在这里插入图片描述

  • 因为还是需要CPU作为中介,每次读写是一个字为单位

  • 优点:与程序直接控制方式的轮询相比,中断驱动方式中,I/O控制会通过中断信号主动报告已完成,CPU就不需要不停的轮询来检查,可以实现CPU和I/O设备可并行工作,提高CPU的利用率

  • 每个字在I/O设备和内存之间的传输还是需要。需要经过CPU,频繁的中断处理会消耗较多的CPU时间

DMA方式

  • 虽然中断驱动方式解决了程序直接控制方式的问题,但是每一次只能读/写一个字,导致CPU频繁切换,耗费了很多时间。于是人们又发明了DMA方式。

在这里插入图片描述

  • DMA的方式数据的传输单位是块——不再需要经过CPU的中转
  • 数据的流向是从设备直接放入内存,或者从内存直接到设备
  • 仅在传输一个或者多个数据块的开始和结束,才需要CPU的干预

在这里插入图片描述

  • DR数据寄存器
    • 暂存从设备到内存,或者从内存到设备的数据
  • MAR 内存地址寄存器
    • 在输入的时候,MAR表示数据应放到内存的什么位置输出的时候表示输出的数据放在内存的什么位置
  • DC 数据计数器 表示剩余要读/写的字节数
  • CR 用于存放CPU发来的I/O命令,或者设备的状态信息

在这里插入图片描述

  • CPU的干预的频率比较低,只要在传输一个或者多个数据块的开始和结束的时候,才需要CPU的干预
  • 读写的单位是一个或者多个块(因为读写的只可能是连续的多个块,且这些块读入内存后再内存中也必须是连续的
  • 缺点:CPU发出一条I/O指令,只能读/写一个或者多个连续的数据块
    • 如果要读/写多个离散存储的数据块,或者要将数据分别写道不同的内存区域中,CPU要分别发出多条I/O指令,进行多次中断处理才能完成

通道控制方法

  • 通道控制的方式是为了解决DMA方式连续存储的问题

在这里插入图片描述

  • 通道:一种硬件,可以理解为是弱鸡版的CPU,通道可以识别一些列的通道指令

    • CPU告诉通道我已经把你要执行的任务放到内存,你去取一下,然后按照这个任务清单去做,做完发个信息通知一下
      1. CPU向通道发出I/O指令,指明通道程序再内存中的位置,并指明要操作哪个I/O设备,之后CPU饥切换到其他进行执行了
      2. 通道执行内存中的通道程序
      3. 通道执行完规定的任务之后,向CPU发出中断信号,之后CPU对中断进行处理

    在这里插入图片描述

  • CPU干预的频率是极低的,通道会根据CPU的指示执行相应的通道程序,只有完成了一组数据块的读/写才需要发出中断信号

  • 传输的单位——每次读/写一组数据块

  • 缺点就是实现复杂,需要专门的通道硬件支持

总结

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...