2014-05-06 33 views
0

我有這個問題涉及到Direct Memory Access(DMA)的概念。操作系統/ Linux內核有一些方法可以知道哪些指令使用DMA,哪些不使用?或者DMA完全由硬件實現,操作系統無法訪問DMA控制器?Linux內核是否知道哪個指令與DMA相關?

+0

通過一點搜索,簡單的答案是肯定的。內核文檔(https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt)表明內核確實使用DMA相關的API。接下來的問題是內核需要何時何地使用這些API。 –

回答

1

你的問題不是很清楚,因爲DMA不是關於CPU指令的。這是一塊處理內存訪問而不涉及CPU的硬件。例如,從網絡適配器接收一個字節的網絡數據包將是非常不利的。相反,操作系統設置了一個可由網絡適配器訪問的DMA區域,該區域將接收到的數據直接寫入該區域,而無需佔用CPU。所以,當然操作系統知道DMA,管理其配置以保持CPU週期以進行更有用的工作是它的一項任務。

+0

儘管英特爾和AMD將PCI-e和RAM控制器與CPU集成到同一芯片,但現在可能有些混亂。 –

相關問題