LPI 101 考试准备: 硬件和体系结构(7)

先前提及的与外围设备通过 IO 端口进行的通信,每次传递一个或者两个字节。对于快速的设备,服务中断会用掉大量 CPU 处理能力。更快的方法是使用 直接内存访问(Direct Memory Access,DMA),使用很少 IO 指令告诉设备到 RAM 中哪个位置去读或写数据,然后 DMA 控制器提供 RAM 和外围设备之间数据实际传输的硬件管理。

谁可以猜出在哪里可以找到关于正在使用的 DMA 通道的信息,请举手。如果您说它是在 /proc/dma 中,那么就说对了。运行 cat /proc/dma 命令,可以看到如清单 7 所示的输出。


清单 7. /proc/dma
4: cascade  

那就足够了吗?重要的是要记住,当 IO 实际发生时,大部分设备只请求一个或者有限数目的 DMA 通道,所以,在我们的示例中 /proc/dma 经常看起来是几乎是空的。也可以像前面处理 IRQ 那样,扫描引导消息来查找具有 DMA 能力设备的证据。


清单 8. /proc/dma
[ian@lyrebird ian]$ dmesg | grep -i dma ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:DMA hda: 312581808 sectors (160042 MB) w/8192KiB Cache, CHS=19457/255/63, UDMA(100) hdc: 398297088 sectors (203928 MB) w/7936KiB Cache, CHS=24792/255/63, UDMA(33) ehci-hcd 00:1d.7: enabled 64bit PCI DMA  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27805.html