Linux 中的 DMA 和 CPU 驱动程序交互



前几天我在读一篇文章,作者在谈论DMA,以及它如何帮助将数据包通过PCI总线复制到内存中,而无需CPU参与。

然后它说:

唯一的开销是大约每毫秒一次,CPU 需要唤醒并告诉驱动程序哪些数据包缓冲区可用。

这部分我不太明白 - 为什么CPU会告诉驱动程序可用的缓冲区以及它是如何工作的?任何链接/参考将不胜感激。

谢谢。

一旦调用驱动程序的transmit()等函数,硬件就会"拥有"内存。如果没有您描述的行为,该内存将被泄露。因此,DMA 子系统会通知驱动程序/相关子系统硬件已"完成"对内存的访问。此时,它可以回收供其他人使用。

最新更新