Appearance
I/O软件层次结构
考情分析
I/O 软件层次结构及各层功能是选择题常考内容。🔥🔥 中频。
硬件只管最底层的信号传输,但从用户的一句 read() 到磁头真正动起来,中间要经过好几层软件的接力——每层各管一摊事,缺一层都转不起来。
I/O 软件的四层结构
从上到下:
各层的功能
第 1 层:用户层 I/O 软件
| 功能 | 说明 |
|---|---|
| 系统调用接口 | 提供 read/write/open/close 等接口 |
| 库函数 | 如 printf、scanf(封装系统调用) |
| SPOOLing | 假脱机程序(部分实现在用户层) |
第 2 层:设备无关的操作系统软件
| 功能 | 说明 |
|---|---|
| 统一接口 | 为上层提供统一的 I/O 接口,屏蔽设备差异 |
| 设备命名 | 将设备名映射到设备驱动程序 |
| 设备保护 | 检查用户是否有权限访问设备 |
| 缓冲管理 | 管理缓冲区 |
| 设备分配与回收 | 分配和释放设备 |
| 差错处理 | 处理设备无关的错误 |
核心思想
设备无关层的目标是让上层软件不关心具体使用的是哪种设备。比如读文件时,不需要知道文件存储在磁盘还是 SSD 上。
第 3 层:设备驱动程序
| 功能 | 说明 |
|---|---|
| 接收上层命令 | 将抽象的 I/O 请求翻译为具体的硬件操作 |
| 操作设备控制器 | 设置设备控制器的寄存器,启动 I/O |
| 设备特定 | 每种设备有自己的驱动程序 |
驱动程序是唯一与设备硬件细节打交道的软件。可以把驱动程序理解为"翻译官"——上层说的是人话(read 512 字节),驱动程序翻译成设备听得懂的寄存器指令。
第 4 层:中断处理程序
| 功能 | 说明 |
|---|---|
| 响应中断 | I/O 完成时,设备发出中断 |
| 保存/恢复现场 | 保存和恢复被中断进程的状态 |
| 唤醒驱动程序 | 通知驱动程序 I/O 操作已完成 |
一次 I/O 请求的完整流程
以读磁盘为例:
各层的对应关系
| 层次 | 运行态 | 与硬件关系 |
|---|---|---|
| 用户层 | 用户态 | 无关 |
| 设备无关层 | 内核态 | 无关 |
| 驱动程序 | 内核态 | 与特定设备相关 |
| 中断处理 | 内核态 | 与硬件中断机制相关 |
考研高频考点
- 🔥🔥🔥 I/O 软件四层结构及各层功能
- 🔥🔥 设备无关层的作用(统一接口、屏蔽差异)
- 🔥🔥 驱动程序是唯一与硬件细节打交道的层
- 🔥 I/O 请求从用户层到硬件的完整流程
层次结构讲清了"谁负责什么",下一篇来看用户程序那一端——应用程序通过哪些接口向 OS 发起 I/O 请求。