跳到主要内容

图解 DMA:数据绕过 CPU 直达内存

前言

最近偶然了解到 DMA 游戏外挂实现原理,作为一个计算机从业人员,探索心作祟,顺便了解一下 DMA 原理。

什么是 DMA

DMA(Direct Memory Access,直接存储器访问) 是一种让外设绕过 CPU、直接和内存交换数据的机制

简单来说,CPU 就是一个“老板”,一个人干活的时候必须要亲力亲为,DMA 是“老板”招的“员工”。老板通知员工干活,员工开始干,干完之后再通知给老板就行了。

DMA 控制器连接 CPU、内存与磁盘

DMA 工作流程

一次完整的工作流程:

  1. CPU 启动磁盘,将搬迁的数据信息告诉 DMA 控制器。
  2. 等磁盘数据准备好,告诉 DMA 控制器开始"工作"。
  3. DMA 控制器向 CPU 申请系统总线。
  4. DMA 控制器接管总线,数据直接从磁盘搬进内存,不经过 CPU。
  5. DMA 控制器通知 CPU"完成",CPU 来做收尾。

CPU 只做"发起"和"收尾",搬运全程不参与。

DMA 数据传输工作流程

DMA 使用场景

应用场景传输路径传输内容
文件读写磁盘 ⇄ 内存文件数据块
网络收发网卡 ⇄ 内存网络数据包
图形渲染内存 → 显存视频帧数据
音频播放内存 → 声卡音频数据流
视频采集摄像头 → 内存视频帧数据

💬 评论区