DMA介绍

什么是DMA

DMA(Direct Memory Access),直接内存访问

DMA的作用是帮助CPU在硬件设备之间传输数据,避免硬件设备之间低速的数据传输拖住执行速度极高的CPU

在使用DMA之前的数据拷贝

 当想要读取磁盘上的某个文件时,CPU向磁盘发出IO请求

磁盘将数据放入到磁盘控制器的缓冲区中,准备好后,向CPU发起中断,告诉CPU可以读取了

CPU将磁盘控制器缓冲区中的内容传输到内存中。

这种数据拷贝存在的问题

需要CPU亲自将数据从磁盘控制器缓冲区传输到内存。CPU是整个硬件系统中执行速度最快,也是最昂贵的设备。因此内存和磁盘控制缓冲区低速的读写,会拉低CPU的速度,让CPU把时间浪费在搬运数据的过程上。如果需要拷贝的数据量极大,那么对CPU的占用对于其他任务来所无意是噩梦。

基于此,引入了DMA技术

DMA

在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务。

有了DMA之后的数据拷贝

当想要读取磁盘上的某个文件时,CPU通知DMA我想要把磁盘上的某些数据拷贝内核内存中

DMA负责准备数据,DAM数据准备好后,向CPU发起中断告诉CPU,你要的数据我已经准备好了。

可以看到:有了DMA之后,拷贝数据这样的笨活和重活就不需要CPU来干了

DMA将数据从磁盘拷贝到内核内存的具体过程为:DMA向磁盘发起IO请求,磁盘收到请求后将数据放入到磁盘控制器缓冲区,磁盘控制器缓冲区放满数据后,向DMA发起中断,通知DMA将数据从磁盘控制器缓冲区放入到内核内存中。当DMA准备好数据以后,发起中断通知CPU。

 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值