加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

DMA数据处理采用连续内存

发布时间:2020-12-14 02:21:51 所属栏目:大数据 来源:网络整理
导读:DMA传输,是由PCI卡直接将数据送达虚拟内存地址(virtual address),不用CPU中转。 主要操作包括: 1?指定一片虚拟内存地址 2?将地址和大小告知PCI(例如通过将这两样存在PCI卡的寄存器中) 3?PCI卡收到数据后,读2中设置,将PCI卡中物理存储的数据(例如硬件

DMA传输,是由PCI卡直接将数据送达虚拟内存地址(virtual address),不用CPU中转。

主要操作包括:

1?指定一片虚拟内存地址

2?将地址和大小告知PCI(例如通过将这两样存在PCI卡的寄存器中)

3?PCI卡收到数据后,读2中设置,将PCI卡中物理存储的数据(例如硬件队列中的数据)放入虚拟内存。

4?应用程序读取虚拟内存中数据后做处理。

在DMA中,需要注意步骤1中,虚拟内存的分配方式。

分配方式主要是两种:连续分配和断续分配。

连续分配:分配完整的一段内存。

断续分配:CPU分配一段,但不保证没人用时不会被别人占占用。

这断续分配在频繁读写DMA的场景下易于出问题。出问题的原因不在于DMA处理速度,即不在于步骤3.,而在于DMA已经完成步骤3,正在进行步骤4的时候。在步骤4时,就要警惕有人趁机插一腿使用内存,复写了(overwrite)了一部分虚拟内存。

建议频繁读写DMA时,使用连续内存(例如指定page几页专门用于DMA用)分配步骤1所需内存。。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读