如果有人能够清楚地解释这3种I / O之间的差异,我将不胜感激。另外,我想知道这些形式的I / O是否依赖于操作系统?
我已经阅读了问题dma vs interrupt-driven i/o,但回答既不明确又矛盾。至少对我(对这些概念不清楚的人)来说,似乎并没有明确回答这个问题。
谢谢。
答案 0 :(得分:5)
轮询(或编程)I / O:CPU手动检查是否有定期可用的I / O请求。如果没有,它会继续执行正常的工作流程。如果有,它会处理IO请求。
中断驱动的I / O:CPU不需要手动检查IO请求。当有可用的I / O请求时,立即使用中断通知CPU,并立即使用中断服务程序处理请求。
DMA:使用DMA允许使用中断驱动的IO。否则,如果DMA不可用,系统必须使用编程的I / O.
DMA是一种允许设备(通常具有非常慢的I / O速度)访问主存储器而无需CPU显式处理请求的方法。当CPU启动从IO设备到主存储器的数据传输时,CPU指示DMA控制器处理此任务。然后CPU会忘记"关于此操作,并继续执行其他任务。当DMA控制器完成传输时,它将使用中断向CPU发出信号。然后CPU将结束"与其启动的数据传输相关的任务。
DMA和中断驱动IO的可用性取决于物理CPU。如果存在DMA和中断硬件,则OS(和您的程序)可以使用中断驱动器IO请求。否则,必须通过轮询定期手动检查I / O请求。