关于DMA

在介绍直接I/O方式前,先温习一下DMA(Direct Memory Access)传输。DMA传输是指可以在内存和I/O之间直接进行数据交换的结构(如图5-21所示)。

关于DMA - 图1

图 5-21 Native操作系统的DMA传输

现在的PCI设备大多数都具有称为总线控制DMA方式的传输结构。DMA传输一般按照如下流程进行。

1.确保DMA传输用的内存。

2.在设备的寄存器中确保第1步设置中的DMA传输用内存的地址。

3.在设备的寄存器中确保第1步设置中的DMA传输用内存的大小。

4.向DMA控制器请求开始在设备和内存之间进行数据传输。

5.DMA传输完成后,设置DMA完成标志,将中断提交给CPU。

第2步中设置的设备的寄存器地址就是物理内存的地址。第4步处理完成后,设备就会对所设置的物理内存进行数据的访问。这时物理内存和设备不在由CPU直接进行数据交换。