关于DMA
在介绍直接I/O方式前,先温习一下DMA(Direct Memory Access)传输。DMA传输是指可以在内存和I/O之间直接进行数据交换的结构(如图5-21所示)。
图 5-21 Native操作系统的DMA传输
现在的PCI设备大多数都具有称为总线控制DMA方式的传输结构。DMA传输一般按照如下流程进行。
1.确保DMA传输用的内存。
2.在设备的寄存器中确保第1步设置中的DMA传输用内存的地址。
3.在设备的寄存器中确保第1步设置中的DMA传输用内存的大小。
4.向DMA控制器请求开始在设备和内存之间进行数据传输。
5.DMA传输完成后,设置DMA完成标志,将中断提交给CPU。
第2步中设置的设备的寄存器地址就是物理内存的地址。第4步处理完成后,设备就会对所设置的物理内存进行数据的访问。这时物理内存和设备不在由CPU直接进行数据交换。