DMA(Direct Memory Access)即直接存储器访问。将数据从一个地址空间复制到另一个地址空间,提供在外设和存储之间或者存储器和存储器之间的高度数据传输。无需CPU的干预,通过DMA数据可以快速地移动,这样节省了CPU的资源。
DMA中也有CPU(DMA数据传输需要使用CPU,只不过这里使用的CPU不是计算机里面所有进程共享的CPU,而是由另外一个CPU来负责数据传输。这个另外的CPU就是DMA控制器) 只不过里面的CPU可以比通用CPU简单,且价格便宜很多,它只需要能够以不慢于I/O设备的速度进行数据读写即可。其他复杂功能,如算数运算、移位、逻辑运算等功能皆可以不要。
DMA输入输出的过程如下所示:
- CPU对DMA进行设置,告诉其I/O的起始地址和数据长度。
- 启动DMA过程。
- DMA进行数据传输。
- DMA结束后发出中断。
- CPU响应中断并处理结束事宜。