以硬盘读写为例,说明在主机和外设之间进行数据传送,为什么需要采用dma方式

如题所述

如果在安装时DMA是disable的,那该怎么才能激活DMA呢看通过重新编译内核可以激活DMA支持,但编译内核对新手显然太过复杂。下面的方法无需编译内核,就可以激活DMA支持。
一、检查系统中的DMA选项是否已被激活
在进行操作前,先确认硬盘是否已经在使用DMA方式传输数据了。方法:查看/proc/ide/hda/settings文件,其中有一行的内容为:using_dma,如果其后面的值被设置为1就说明系统已经支持DMA了,那么下面的操作就可以免了,当然如果你要关闭DMA功能的话,还要往下看看哟:)。
Linux中的hdparm命令是用来进行与硬盘相关操作的,用hdparm -i /dev/hda可以列出IDE可能支持的DMA模式,如:
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4
二、激活DMA支持
方法1:在lilo.conf中加入:idex=dma,其中x代表硬盘序号,其取值范围0-3,分别代表系统中的四个IDE硬盘设备。
方法2:使用hdparm命令,hdparm d1 /dev/hda 其中d1表示使能DMA,你可以将其加到rc.locl中以便每次启动时都硬盘都能使用DMA方式传输数据。
三、关闭DMA支持
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-12
DMA(直接内存存取)方式。DMA方式是使用DMA控制器来管理和控制数据传输的,DMA控制器和CPU共享系统总线,并且都可以独立访问存储器。在使用DMA工作方式进行数据传输时,DMA控制器控制了系统总线,由DMA控制器提供存储器地址及必需的读写控制信号,实现外部设备与存储器之间的数据传输。
实际过程中只需要CPU完成初始化动作,剩下的存取操作由DMA控制器完成,适合大量数据的存取操作,存取过程中不会占用大量CPU时间,存取完成后会由DMA控制器通知CPU操作完成
相似回答