DMA传输:不经过CPU的数据传输 140: DMA传输:不经过CPU的数据传输CPU是计算机的大脑,非常强大,但它不应该把所有事情都包揽。比如,把1GB文件从硬盘复制到内存——如果CPU亲自一个字一个字地搬,那得搬到什么时候?CPU这么贵的大脑,怎么能干这种"搬运工"的活?DMA(Direct Memory Access,直接内存访问)就是专门干这种搬运活的"搬运工"——它可以在不经过CPU的情况下,直接在内存和I/O设备之间传输数据。没有DMA的世界先看看没有DMA时数据怎么传输。以"从硬盘读取文件到内存"为例:硬盘 ──→ CPU ──→ 内存过程:CPU发指令给硬盘:“把第N块数据给我”硬盘准备好数据硬盘把数据发给CPUCPU把数据写入内存重复步骤1-4,直到所有数据传输完成假设文件有100万个数据块,CPU就要做100万次"接收+写入"的操作。CPU全程参与,被牢牢占用。就像你搬家,每件家具都亲自搬运——从大件沙发到小件螺丝刀,全是你一个人搬。累死不说,效率极低。有了DMA之后DMA控制器是专门的数据搬运工:硬盘 ──→ DMA控制器 ──→ 内存 ↑ CPU只发一条指令