前几天我正在阅读一篇文章,作者在谈论DMA,以及它如何帮助将数据包通过PCI总线复制到内存中,而不涉及CPU。
然后它说:
唯一的开销是大约一毫秒,CPU需要唤醒并告诉驱动程序哪些数据包缓冲区是免费的。
这部分我不太明白 - 为什么CPU会告诉驱动程序有关可用的缓冲区以及它是如何工作的?任何链接/参考将不胜感激。
感谢。
答案 0 :(得分:1)
一旦调用了驱动程序的transmit()
等功能,硬件就“拥有”内存。没有你描述的行为,那个记忆就会泄露。因此,DMA子系统通知驱动程序/相关子系统硬件已“完成”访问内存。此时,它可以被回收以供其他人使用。