我遇到了与Direct Memory Access(DMA)概念相关的问题。 OS / Linux内核是否有一些方法可以知道哪条指令正在使用DMA,哪些不是?或者DMA完全由硬件实现,操作系统无法访问DMA控制器?
答案 0 :(得分:1)
你的问题不是很清楚,因为DMA与CPU指令无关。它是一个处理内存访问而不涉及CPU的硬件。例如,从网络适配器逐字节地接收网络数据包将是非常无效的。相反,操作系统设置一个可由网络适配器访问的DMA区域,该区域将接收的数据直接写入该区域,而不必占用CPU。因此,操作系统当然知道DMA,它是管理其配置的任务之一,以便为更有用的工作保留CPU周期。