Skip to content

2012年 408 操作系统 第 26 题

操作系统2012年选择题2分

题目

用户程序发出磁盘 I/O 请求后,系统的正确处理流程是操作系统的 I/O 子系统通常由四个层次组成,每一层明确定义了与邻近层次的接口。其合理的层次组织排列顺序是( )。

错因

B

把中断处理放在驱动之上了。但层次结构里驱动在中断之上——驱动启动 I/O 后等待中断;中断到来时由中断处理程序响应,再回到驱动继续后续工作。中断处理是最底层(紧贴硬件),不能凌驾于驱动。

C

把驱动放在设备无关软件之上——倒置了。设备无关软件提供通用接口(缓冲管理、错误处理、命名等),它不依赖具体设备;驱动是设备特定的,更靠下。逻辑上:通用先(上层),特定后(下层)。

D

中断处理放第二位——同 B 的错,把中断当成"早期阶段"了。其实 I/O 软件层次是自顶向下处理请求 → 自底向上响应,中断响应一定在最底(硬件就在它之下)。

总解析

I/O 软件分层(自顶向下):

职责例子
① 用户级 I/O 软件用户态库函数、格式化 I/Oprintfscanf、C 标准 I/O 库
② 设备无关 I/O 软件统一接口:缓冲管理、命名、错误处理、设备分配read/write 内核处理、设备命名空间
③ 设备驱动程序设备相关:把通用请求翻译成具体硬件操作磁盘驱动、网卡驱动、键盘驱动
④ 中断处理程序响应硬件中断、唤醒等 I/O 的进程磁盘 I/O 完成中断

自顶向下处理一次 I/O

用户调用 printf
   ↓ 转换为 read/write
设备无关层处理(缓冲、错误检查)
   ↓ 调用驱动接口
设备驱动构造硬件命令、启动磁盘
   ↓ 等待
(硬件操作)
   ↑ 完成发中断
中断处理程序响应、唤醒等待进程
   ↑ 驱动收尾
   ↑ 设备无关层返回数据
   ↑ 用户得到结果

排序判定原则:越上层越接近用户、越通用;越下层越接近硬件、越特定。中断处理紧贴硬件,必在最底;驱动设备特定,在中断之上但低于设备无关层;设备无关层提供通用接口,最靠上(在用户库之下)。

正确顺序:用户级 → 设备无关 → 驱动 → 中断处理

最终答案是 A

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题