二、 I/O控制方式与数据通路详解

1. 程序查询方式 (Programmed I/O)

这是最原始的I/O方式。

2. 中断驱动方式 (Interrupt-Driven I/O)

3. 直接存储器存取方式 (Direct Memory Access, DMA)

图示:中断方式 vs DMA方式的数据通路

     +-------+        数据       +-----+       数据      +------+
     |  I/O  | <--------------> | CPU | <------------> | 主存 |
     +-------+    (寄存器中转)    +-----+                +------+
           |                        ^
           |__中断请求/控制________|
      图1:中断驱动方式的数据通路 (数据经过CPU)


     +-------+                                          +------+
     |  I/O  | <------------ 数据直接传送 -------------> | 主存 |
     +-------+                                          +------+
         |                                                 ^
         |                    +---------+                  |
         |__ DMA请求/控制 ____|   DMAC  |____ 总线控制 ____|
                              +---------+
                                  ^
                                  |__ CPU发出指令/接收中断 __
                                  |
                               +-----+
                               | CPU |
                               +-----+
      图2:DMA方式的数据通路 (数据不经过CPU)

四、 总结与边界情况

I/O控制方式 数据是否经过CPU寄存器 CPU介入程度(数据传送阶段) 硬件复杂度 适用场景
程序查询 完全占用CPU 简单 古老、极低速设备
中断驱动 每次传送一个字时介入 较简单 中低速设备
DMA 完全不介入 复杂 (需DMAC) 高速设备 (硬盘、网卡)