首页/操作系统/05-io/IO软件层次 🔗 在 Obsidian 中打开
操作系统 · 05-io

IO软件层次

重要度 ⭐⭐⭐⭐ 操作系统/IO管理IO软件设备驱动设备独立性用户IO
速查
IO 软件四层(自上而下):用户IO软件 → 设备独立性软件 → 设备驱动程序 → 中断处理程序;设备独立性使用户程序不关心具体设备。

速查

项目
四层结构用户IO软件 → 设备独立性软件 → 设备驱动程序 → 中断处理程序
设备独立性用户程序不关心具体设备,由 OS 映射
设备驱动直接控制设备控制器的软件
最底层中断处理程序(硬件中断响应)

核心概念

IO 软件采用层次化结构,从上到下分为四层。

1. 用户IO软件(最上层)

  • 用户程序中的 IO 调用(如 printf、scanf)
  • 通过系统调用请求 OS 的 IO 服务
  • 不直接访问硬件

2. 设备独立性软件

  • 实现设备无关的 IO 功能
  • 用户程序使用逻辑设备名,由 OS 映射到物理设备
  • 提供统一的接口:打开、关闭、读、写
  • 实现设备分配、缓冲管理、差错处理

3. 设备驱动程序

  • 每类设备对应一个驱动程序
  • 直接控制设备控制器,发送命令、读写数据
  • 将上层的抽象请求转换为具体的设备操作
  • 是 OS 中唯一知道设备控制器细节的部分

4. 中断处理程序(最下层)

  • 响应硬件中断(IO 完成、错误等)
  • 唤醒等待 IO 的进程
  • 进行错误处理

关键性质

层次功能可见性
用户IO软件IO 系统调用用户可见
设备独立性软件统一接口、设备映射OS 内核
设备驱动程序控制设备控制器OS 内核
中断处理程序响应硬件中断OS 内核

常见考法

考法解题套路
四层排序用户IO → 设备独立性 → 设备驱动 → 中断处理
设备独立性用户用逻辑设备名,OS 映射到物理设备
设备驱动的作用将抽象请求转为具体设备操作
为什么要层次化模块化、易扩展、设备无关性

易错点

注意
  1. 设备独立性软件在设备驱动之上——用户不直接调用驱动
  2. 设备驱动程序是唯一知道设备控制器细节的软件
  3. 中断处理程序是最底层——直接响应硬件中断
  4. 设备独立性 $\neq$ 设备驱动——独立性是上层抽象,驱动是下层实现
  5. 每类设备需要一个驱动程序,但设备独立性软件是通用的

核心结论

必背
  1. IO 软件四层:用户IO → 设备独立性 → 设备驱动 → 中断处理
  2. 设备独立性使用户程序不关心具体设备,提高可移植性
  3. 设备驱动是唯一与设备控制器直接交互的软件层
  4. 中断处理是最底层,响应 IO 完成和错误中断
  5. 层次化设计使 IO 系统模块化、易扩展

记忆卡片

IO 软件的四层结构?
用户IO软件 → 设备独立性软件 → 设备驱动程序 → 中断处理程序。
设备独立性的作用?
用户用逻辑设备名,OS 映射到物理设备,用户不关心具体设备。
设备驱动程序的作用?
直接控制设备控制器,将抽象请求转为具体设备操作。
哪一层直接与硬件交互?
中断处理程序(最底层)和设备驱动程序。
为什么需要层次化设计?
模块化、易扩展、实现设备无关性。

交互动画 · 四层请求与中断返回

IO 软件四层(自上而下) 用户IO软件系统调用 | 不直接访问硬件 设备独立性软件逻辑设备名 → 物理设备 | 统一接口 设备驱动程序唯一知道设备控制器细节 中断处理程序响应硬件中断 | 唤醒进程 设备硬件
点击按钮查看请求沿四层向下传播,或中断向上返回
四层:用户IO → 设备独立性 → 设备驱动 → 中断处理

相关知识点

io-device-classification device-management

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。