一、DMA的引入
Non-DMA:CPU直接与设备进行数据交互,CPU的负载会随着数据的读写而增加;
DMA:CPU不参与数据的直接传输,DMA Controller负责Device与Memory之间的数据搬运,并以中断信号的形式通知CPU;
可以看出,DMA可以提高CPU的使用率。
二、IOMMU与DMA的关系
可以看出,IOMMU是DMA过程中的一环,也是实现DMA的一种手段。(当然DMA也可以不走IOMMU,但是有的安全隐患)
三、IOMMU的作用
1、IOMMU是设备访问物理地址的媒介, IOMMU使得设备无法直接访问物理地址,大大增加了设备进行DMA攻击的难度。(安全性)
2、部分设备的引脚数较少,导致其位数较低,无法寻址到整个物理内存空间。(成本原因?越多引脚意味着更大的寻址范围(越多的bit位))
以目前主流的32位设备为例,其在物理内存中直接寻址的范围是[0, 4GB)。但是,现代操作系统的内存往往大于4GB。如果设备申请DMA时,内核为设备分配的DMA buffer的地址高于4GB(以下简称为“high