DMA 的英文拼写是 “Direct Memory Access” (存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过 CPU ,也不需要 CPU 干预。整个数据传输操作在一个称为 "DMA 控制器 " 的控制下进行的。 CPU 除了在数据传输开始和结束时做一点处理外,在传输过程中 CPU 可以进行其他的工作。这样,在大部分时间里, CPU 和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
   
Ultra-DMA/33 ), 1996 年由 Intdl Quantum 制定的一种数据传输方式,该方式 I/O 系统的突发数据传输速度可达 33MB/s ,还可以降低 I/O 系统对 CPU 资源的占用率。现在又出现了 UDMA/66 ,速度多出两倍。

      PIO
的英文拼写是 “Programming Input/Output Model” PIO 模式是一种通过 CPU 执行 I/O 端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下, CPU 占有率也很高,大量传输数据时会因为占用过多的 CPU 资源而导致系统停顿,无法进行其它的操作。 PIO 数据传输模式又分为 PIO mode 0 PIO mode 1 PIO mode 2 PIO mode 3 PIO mode 4 几种模式,数据传输速率从 3.3MB/s 16.6MB/s 不等。受限于传输速率低下和极高的 CPU 占有率,这种数据传输模式很快就被淘汰。
 
如何使用磁盘的 DMA 模式呢?使用 hdparm 工具可以查看:
比如我们查看磁盘缓存时,会出现如下错误:
[cnangel@cadev03 ~]$sudo hdparm -i /dev/sda
/dev/sda:
 HDIO_GET_IDENTITY failed: Invalid argument
禁止使用 DMA 模式:
[cnangel@cadev03 ~]$sudo hdparm -d0 /dev/sda
/dev/sda:
 setting using_dma to 0 (off)
 HDIO_SET_DMA failed: Invalid argument
因为系统安装完毕後,硬盘的 DMA 模式默认是没有打开的,一般方法是在 /etc/rc.d/rc.local 最後面加上一行
/sbin/hdparm -d1 -c3 -m16 /dev/sda
这样每次开机後,硬盘的 DMA 就会开启,不必每次手动设定。
 
 xp 系统正常使用时突然速度很慢,运行程序特卡, CPU 及内存使用率正常。使用查杀没有病毒。可能是因为硬盘的模式由 DMA 可能变成了 PIO 造成。
1. 右键 我的电脑 选择 属性 ,再选择 硬件 选项卡下的 设备管理器
2. 展开 “IDE ATA/ATAPI 控制器 节点;
3. 双击您的 主要 IDE 控制器
4. 点击 高级设置 ,改为 DMA 即可