Skip to content

408

操作系统

OS-05-02 I/O控制方式(轮询/中断/DMA)


一、定位信息

  • 所属圈层:核心层
  • 前置知识回顾:理解I/O设备的分类(块设备/字符设备),了解设备控制器的概念。知道CPU与设备控制器通过寄存器通信。
  • 知识网络位置:本单元是I/O管理的核心机制,描述CPU如何控制I/O操作。三种控制方式代表了I/O技术的演进,从CPU全程参与到CPU几乎不参与。向上连接I/O软件层次(OS-05-03),向下连接缓冲区管理(OS-05-04)。
  • 考点热度等级H级(高频重点)——三种I/O控制方式的原理和比较是几乎每年必考的核心知识点。

二、知识点讲解

2.1 轮询方式(Programmed I/O)

轮询方式也称程序直接控制方式,CPU通过不断查询设备状态寄存器来控制I/O操作。

工作流程:

  1. CPU向设备控制器发出I/O命令
  2. CPU读取设备状态寄存器
  3. 若设备忙,回到步骤2继续查询(忙等待
  4. 若设备就绪,CPU从数据寄存器读取/写入数据
  5. 若还有数据要传输,回到步骤2

特点

  • CPU全程参与,忙等待(busy waiting)
  • CPU利用率极低(大量时间花在查询状态上)
  • 实现简单,不需要额外硬件支持
  • 适用于极简单的嵌入式系统

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

中断驱动方式让CPU在设备准备数据时去执行其他任务,设备就绪后通过中断通知CPU。

工作流程:

  1. CPU向设备控制器发出I/O命令
  2. CPU切换到其他进程执行(不再忙等待)
  3. 设备控制器完成数据准备,向CPU发送中断请求
  4. CPU响应中断,执行中断处理程序
  5. CPU从数据寄存器读取/写入数据
  6. 若还有数据要传输,回到步骤1

特点

  • CPU不需要忙等待,利用率提高
  • 每次数据传输都需要CPU参与(每次中断传输一个字/字节)
  • 中断处理有开销(保存/恢复现场、中断响应时间)
  • 适用于字符设备(如键盘、鼠标)

2.3 DMA方式(Direct Memory Access)

DMA方式让设备控制器直接与内存交换数据,不需要CPU干预。CPU只需在传输开始和结束时参与。

工作流程:

  1. CPU向DMA控制器设置传输参数:
    • 内存起始地址
    • 传输数据量
    • 传输方向(设备→内存 或 内存→设备)
  2. CPU切换到其他进程执行
  3. DMA控制器控制数据在设备和内存之间直接传输
  4. 传输完成后,DMA控制器向CPU发送一次中断
  5. CPU处理中断,检查传输结果

特点

  • CPU只在传输开始和结束时参与,传输过程中不干预
  • 数据直接在设备和内存之间传输,不经过CPU
  • 为单位传输,每块传输完才中断一次
  • 适用于高速块设备(如硬盘、SSD)

DMA控制器的寄存器:

  • 命令/状态寄存器(CR):接收CPU命令,报告状态
  • 内存地址寄存器(MAR):数据传输的内存地址
  • 数据计数器(DC):剩余传输数据量

三、记忆与理解辅助

1. 类比记忆

  • 轮询 = 你一直盯着快递员等他送到(CPU全程等待)
  • 中断 = 快递员到了给你打电话(CPU去做别的事,设备准备好了通知)
  • DMA = 快递员直接放快递柜(CPU只管下单和取件,中间不管)

2. 口诀:"轮询忙等待CPU累死,中断每字节CPU跑一次;DMA整块传CPU不管,三种方式效率依次提。"

3. 三种I/O控制方式对比表(★高频考点)

对比项轮询方式中断驱动方式DMA方式
CPU参与程度全程参与每次数据传输参与仅开始和结束参与
数据传输单位字/字节字/字节
CPU是否忙等待
中断次数0每字/字节一次每块一次
数据流向设备→CPU→内存设备→CPU→内存设备→内存(直接)
CPU利用率极低
适用设备极简单设备低速字符设备高速块设备
硬件需求最少中等DMA控制器

4. CPU介入频率对比

  • 轮询:每个时钟周期都介入(查状态)
  • 中断:每传输1个字/字节介入1次
  • DMA:每传输1个块(如4KB)介入1次

四、例题与精解

例题1(基础巩固)

题目:某系统需要从硬盘读取一个 4KB4\text{KB} 的数据块。硬盘数据传输速率为 100MB/s100\text{MB/s},CPU时钟频率为 1GHz1\text{GHz}。每次中断处理需要 10001000 个时钟周期。分别计算使用中断驱动方式和DMA方式时,CPU用于I/O处理的时间。

命题意图:考查中断方式和DMA方式的CPU开销对比。

精解

1. 审题分析:4KB数据块,传输速率100MB/s,每次中断1000周期。需要计算两种方式的CPU开销。

2. 解题思路:中断方式每字节中断一次,DMA方式每块中断一次。

3. 完整步骤

中断驱动方式

  • 每次中断传输1字节,4KB = 4096字节 → 需要4096次中断
  • 每次中断处理需要1000个时钟周期
  • CPU用于I/O的时间 = 4096×1000=4,096,0004096 \times 1000 = 4,096,000 个时钟周期
  • 换算为时间 = 4,096,000/109=4.096ms4,096,000 / 10^9 = 4.096\text{ms}

DMA方式

  • 整个块传输完成中断1次

  • CPU用于I/O的时间 = 1×1000=10001 \times 1000 = 1000 个时钟周期

  • 换算为时间 = 1000/109=0.001ms=1μs1000 / 10^9 = 0.001\text{ms} = 1\mu\text{s}

  • CPU开销比 = 4096:14096:1,DMA方式的CPU开销仅为中断方式的 1/40961/4096

4. 方法反思:这个例题清楚地展示了DMA的巨大优势——中断次数从4096次减少到1次。对于高速设备大量数据传输,DMA几乎是必须的。

例题2(中等提升)

题目:某系统采用中断驱动方式从键盘读取数据。键盘输入速率为 1010 字符/秒,每次中断处理需要 2ms2\text{ms}。 (1)CPU用于键盘I/O的时间占比是多少? (2)如果改用轮询方式,每 100ms100\text{ms} 查询一次键盘状态,CPU用于键盘I/O的时间占比是多少?

命题意图:考查中断方式和轮询方式在低速设备上的CPU开销对比。

精解

1. 审题分析:键盘10字符/秒,中断处理2ms,轮询100ms一次。

2. 解题思路:计算每秒内CPU用于I/O的时间。

3. 完整步骤

(1)中断驱动方式

  • 每秒中断次数 = 10次
  • 每秒CPU用于I/O的时间 = 10×2ms=20ms10 \times 2\text{ms} = 20\text{ms}
  • CPU时间占比 = 20ms/1000ms=2%20\text{ms} / 1000\text{ms} = 2\%

(2)轮询方式

  • 每秒查询次数 = 1000/100=101000 / 100 = 10
  • 每次查询假设需要 0.01ms0.01\text{ms}(极短)
  • 每秒CPU用于I/O的时间 = 10×0.01ms=0.1ms10 \times 0.01\text{ms} = 0.1\text{ms}
  • CPU时间占比 = 0.1ms/1000ms=0.01%0.1\text{ms} / 1000\text{ms} = 0.01\%

4. 方法反思:对于低速设备(如键盘),轮询方式的CPU开销反而可能比中断方式低!因为中断方式每来一个字符就要处理一次中断(2ms),而轮询方式只需定期查询。但轮询方式的缺点是响应延迟——最坏情况下要等100ms才能检测到输入。


五、考情分析

  • 考查频次:I/O控制方式在近5年真题中出现频率高,约4-5次。
  • 常见题型:选择题(三种方式的比较判断)、综合题(CPU开销计算、方式选择)。
  • 分值占比:选择题2分,综合题5-8分。
  • 命题趋势:近年来倾向于给出具体场景,要求计算CPU开销并选择合适的控制方式。DMA的工作原理是高频考点。基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:认为中断驱动方式CPU完全不参与数据传输。 错误原因:忽略了每次中断CPU仍需要执行中断处理程序。 正确理解/做法:中断驱动方式中,CPU不需要忙等待,但每次数据传输(字/字节级别)都需要CPU参与执行中断处理程序。只有DMA方式才能做到CPU几乎不参与数据传输。

  2. 错误表现:认为DMA方式完全不需要CPU参与。 错误原因:忽略了DMA的启动和完成处理。 正确理解/做法:DMA方式中,CPU需要:①设置DMA控制器参数(启动传输);②处理传输完成中断。传输过程中CPU不参与,但开始和结束需要CPU。

  3. 错误表现:轮询方式和中断方式混淆,认为轮询也用中断。 错误原因:对两种方式的机制理解不清。 正确理解/做法:轮询是CPU主动查询设备状态,不使用中断;中断是设备主动通知CPU。两者的核心区别在于"谁发起通知"。

  4. 错误表现:认为对于所有设备,DMA方式都是最优的。 错误原因:忽略了DMA的硬件成本和适用场景。 正确理解/做法:DMA需要专用的DMA控制器硬件,成本较高。对于低速字符设备(如键盘),中断方式已经足够好,使用DMA反而浪费硬件资源。


七、来源标注

  • 依据2026考研统考408大纲
  • 依据《操作系统概念》(Operating System Concepts, Silberschatz)第12章
  • 依据汤小丹《计算机操作系统》第4版第5章

考研全科复习资料 - 基于2026考研统考大纲