Linux内存从0到1学习笔记(8.6 DMA-BUF简介)

43 篇文章 62 订阅 ¥39.90 ¥99.00

一,为什么需要DMA?

    CPU指令系统通常只支持CPU(寄存器)-存储器,以及CPU-外设之间的数据传送,那么如果外设需要和存储器进行数据交换就必须经过CPU寄存器进行中转。很显然,中转会大大降低CPU的工作效率,浪费时间。因此,需要在外设和存储器之间开辟一个直接数据传输通道。如果这个通道的数据传输有其他硬件来完成,既可以加快传输效率,又可以减轻CPU对I/O的负载。

1.1. DMA简介

    DMA全称Direct Memory Access(存储器直接访问),是一种高速地数据传输操作,它允许外设和存储器之间进行直接的数据读写操作,既不通过CPU也不需要CPU进行干预。简单来说就是把CPU从大量的数据传输操作中解放出来,交由DMA控制器来完成,让CPU腾出手来做计算、调度等事情。这样一来,CPU除了在数据传输开始和数据传输结尾进行处理外,在传输过程中可以去做其他的事情,大大提高了系统的工作效率。

1.2 DMA传输

    DMA的目的时实现数据的直接传输,而减少了传统数据传输时CPU的参与。DMA传输场景主要包括如下:外设到内存,内存到外设,内存到内存,外设到外设,其传输过程如下:

  1. 外设通过DMA向CPU发送DMA请求。
  2. CPU相应DMA请求,DMA获得总线的控制权。
  3. 由DMA发送存储器的地址,并决定发送数据的长度。
  4. 执行DMA传输。
  5. DMA操作结束后,把总线的控制权归还给CPU。

二,为什么需要DMA-BUF?

    以外设为例,将一种设备中的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高桐@BILL

分享快乐,快乐分享...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值