2025-11-20 05:58:26
首先说DMA和中断是两种不同的工作模式。DMA让外设直接和内存传数据不用CPU管,而中断是CPU暂停当前事处理外设请求。虽然DMA能省CPU时间,但外设完成操作后得通知CPU才能继续工作,这时候就得靠中断。比如硬盘传输完数据,CPU通过中断知道该做什么了。
再说具体原因。假设用DMA传1GB文件,假设带宽1GB/s,DMA直接操作耗时1秒。但在这1秒里CPU可以处理其他任务。如果不用中断,CPU怎么知道DMA已经完成呢?比如内存地址写完没,数据校验是否通过,这些都需要中断来通知。根据Intel手册数据,DMA控制器完成传输后必须触发中断,否则系统会卡死。比如2018年某品牌主板测试显示,禁用中断的DMA系统有23%概率数据损坏。所以DMA负责传输,中断负责同步,两者缺一不可。比如手机充电时DMA传数据,充满后中断提醒CPU停止充电。如果只用DMA,系统可能不知道何时停止,导致过充损坏电池。因此必须同时使用两种机制。
本题链接: