Skip to content
难度基础(★)
建议时长45分钟

2.8 IO管理软件

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学

I/O 管理软件的目标是屏蔽设备差异,让上层程序以相对统一的方式访问键盘、磁盘、打印机、网络设备等硬件。设备种类很多,速度差异大,控制命令也不同;如果每个应用都直接和设备硬件打交道,程序会难以移植,也容易破坏系统稳定性。

因此操作系统在用户程序和硬件之间分出多层 I/O 软件:上层提供统一接口,中间处理设备无关逻辑,底层驱动和中断处理程序与具体设备交互。

I/O 软件层次

层次作用
用户层 I/O 软件提供库函数、用户态接口等
设备独立软件统一命名、保护、缓冲、错误处理等,与具体设备解耦
设备驱动程序把通用 I/O 请求转换为具体设备命令
中断处理程序处理设备完成、错误等中断事件
硬件设备实际执行输入输出

设备驱动程序是“设备相关”的关键层。应用程序说“读文件”或“打印”,驱动程序才知道怎样向具体磁盘控制器或打印机发送命令。

常见机制解决什么问题

机制解决的问题关键词
中断设备完成后通知 CPU,避免 CPU 一直忙等完成通知、异常通知
DMA设备与内存直接传输大批量数据,减少 CPU 搬运直接存储器访问、大量数据
缓冲协调高速 CPU/内存与低速设备之间的速度差速度匹配、临时存放
SPOOLing用磁盘缓冲把独占设备改造成逻辑共享设备打印队列、假脱机

DMA 不是缓存,它的核心是减少 CPU 对数据搬运的直接参与。SPOOLing 也不是普通复制文件,它通过磁盘队列让多个作业看起来都能提交给独占设备,例如多个打印任务排队进入打印队列。

为什么这些技术会出现

早期或简单 I/O 中,CPU 可能需要不断查询设备是否完成,或者亲自参与大量数据搬运。这会浪费 CPU 时间。中断让设备完成后再通知 CPU;DMA 进一步让设备和内存直接交换数据;缓冲减少速度不匹配造成的等待;SPOOLing 用外存队列把独占设备变成逻辑共享,提高系统吞吐和用户体验。

做题路线

  1. 看到“大量数据传输、减少 CPU 干预”,选 DMA。
  2. 看到“设备完成后通知 CPU”,选中断。
  3. 看到“速度差异、临时存放、协调快慢设备”,选缓冲。
  4. 看到“打印队列、独占设备共享、假脱机”,选 SPOOLing。
  5. 看到“把通用请求转成具体硬件命令”,选设备驱动程序。

例题

单选
能减少 CPU 直接参与大量数据搬运的机制是:
单选
用磁盘缓冲打印任务,把独占设备改造成逻辑共享设备,属于:
单选
把通用 I/O 请求转换成具体设备命令的通常是:

自查要点

  1. DMA 解决了什么问题?
  2. SPOOLing 为什么能改善独占设备使用?
  3. 设备驱动处在 I/O 软件层次中的什么位置?