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

Pika 2026-09-02 14:14 1

前言


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


什么是 DMA


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


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



DMA 工作流程


一次完整的工作流程:



  1. CPU 启动磁盘,将搬迁的数据信息告诉 DMA 控制器。

  2. 等磁盘数据准备好,告诉 DMA 控制器开始"工作"。

  3. DMA 控制器向 CPU 申请系统总线。

  4. DMA 控制器接管总线,数据直接从磁盘搬进内存,不经过 CPU。

  5. DMA 控制器通知 CPU"完成",CPU 来做收尾。



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




DMA 使用场景






































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

最新回复 (12)
  • x1a02 09-02 14:20
    1

    学408的时候接触过,现在也都忘的7788

  • 晨旭 09-02 14:34
    2

    搞嵌入式的应该很熟悉dma这东西,节省cpu资源的神器,数据传来传去基本不占用资源

    总之不算是什么新东西了


    随便打开个芯片的手册


  • Pika 楼主 09-02 14:55
    3

    嵌入式现在行情咋样?应该没被 AI 波及到吧

  • 晨旭 09-02 15:14
    4

    文档和资料完善的厂商,AI支持的比较好

    但是本来这些厂商就不缺人来开发,缺人的是那些资料很难看的国产厂商开发


    硬件就更不用说了,依旧在起步阶段,等他们慢慢搞吧

  • AFLY 09-02 15:22
    5

    去年还专门买了DMA、融合器玩PUBG,那才叫一个通透 ^-^

    玩了两月没玩了,某鱼卖掉了

  • 菜鸡rrr 09-02 15:29
    6

    上学的时候老师专门讲了,现在已经全忘完了 ^-^

  • zhangpy 09-03 10:10
    7

    这样做的效果是通信速度更快吗?手机上是不是有厂商使用了这个技术?

  • 别碰代码 09-03 10:16
    8

    因为这个原理,dma现在好像还是没有非常强硬的检测手段,只能通过游戏的行为进行智能分析 ^-^

  • Pika 楼主 09-03 10:43
    9

    我也是,现在学校里学的知识全还给老师了

  • Pika 楼主 09-03 10:45
    10

    手机也可以理解为小电脑,只要涉及数据搬迁的都用了这个技术。

  • Pika 楼主 09-03 10:46
    11

    哈哈哈哈,是的,前一阵子看到一个博主吐槽,讲 DMA 反制目前还是太难做到,毕竟完全不经过 CPU 之类的。

  • CKIN 09-03 11:01
    12

    现在有IOMMU这种技术吧,OS可以让设备只能读指定区域的物理内存

* 帖子来源Linux.do
返回