2.8 IO管理软件
本课核心知识点整理
本节导学
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 用外存队列把独占设备变成逻辑共享,提高系统吞吐和用户体验。
做题路线
- 看到“大量数据传输、减少 CPU 干预”,选 DMA。
- 看到“设备完成后通知 CPU”,选中断。
- 看到“速度差异、临时存放、协调快慢设备”,选缓冲。
- 看到“打印队列、独占设备共享、假脱机”,选 SPOOLing。
- 看到“把通用请求转成具体硬件命令”,选设备驱动程序。
例题
单选
能减少 CPU 直接参与大量数据搬运的机制是:
单选
用磁盘缓冲打印任务,把独占设备改造成逻辑共享设备,属于:
单选
把通用 I/O 请求转换成具体设备命令的通常是:
自查要点
- DMA 解决了什么问题?
- SPOOLing 为什么能改善独占设备使用?
- 设备驱动处在 I/O 软件层次中的什么位置?