I/O 计算
I/O 在综合题上出现得不多(2009#43、2012#43、2016#44、2018#43、2022#44 是最典型的五道),但选择题几乎每年 3~4 道,而且所有定量题共用一个模型。
知识框架概要
在 408 常见的单设备、无并行重叠简化题中,一次 I/O 可按下面的路径分析;三种方式主要区别在第 3 步“谁来发现设备好了”。若题目出现总线竞争、周期窃取或多设备并行,应以题设为准。
一、路径
- CPU 通过 I/O 接口下发命令字 —— 接口里有三类寄存器:状态、控制、数据缓冲,见 I/O 接口
- 设备准备一个传送单位(准备时间由数据传输率决定)
- 通知 CPU 数据就绪:程序查询 / 程序中断 / DMA,见 I/O 方式
- 传送这个单位:查询与中断经 CPU 寄存器搬,DMA 由控制器直接与主存交换,见 DMA 方式
- 全部传完后收尾:中断方式每单位一次中断,DMA 只在整块结束时中断一次
二、三种方式的分工边界
| 方式 | CPU 每次花在什么上 | 数据传送阶段占 CPU 吗 |
|---|---|---|
| 程序查询 | 查询和传送的那几条指令 | 占 |
| 程序中断 | 中断响应 + 中断服务程序 | 占 |
| DMA | 只有预处理和后处理 | 不占,由 DMA 控制器搬 |
三、中断响应这一段的软硬件分界(选择题的固定落点)
- 硬件(中断隐指令):关中断 → 保存断点 PC 与 PSW → 切内核态 → 按向量转入
- 软件(中断服务程序):保存其余现场 → 具体传送 → 恢复现场 → 开中断返回
见 中断处理流程。
四、磁盘这一段是独立的时间模型
平均存取时间 = 寻道 + 旋转延迟 + 传输 + 控制器延迟,见 磁盘性能指标。
五、总线是所有传输率的上限
总线带宽 = 总线宽度(字节)× 总线时钟频率 ÷ 一次传送占用的时钟周期数
一次突发传送 = 一次寻址 + 连续若干个数据传送周期
三种问法各对应一个除法:**「至少需要多大主存带宽」用每秒要搬的字节数(2012#43 由每秒缺失次数反推)、「一个主存块要几次突发传送」用块大小除以一次突发能传的字节数(2013#43)、「总线请求几次」**用传送总量除以总线宽度(2022#44)。见 总线指标、突发总线传输事务、总线周期。
解题注意点
唯一的模型
1. 一次传送多少字节?—— 看 I/O 接口数据缓冲寄存器的宽度,或总线宽度
2. 每秒传送多少次? —— 数据传输率 ÷ 一次传送的字节数
3. 一次花多少周期? —— 指令条数 × CPI,或题目直接给
CPU 占用率 = 次数 × 单次周期数 ÷ 主频
分子分母都统一成「周期 / 秒」,就不会算错量级。在上述简化假设下,查询和中断把传送本身也算进 CPU 时间,DMA 只算预处理和后处理;DMA 仍会占用总线带宽。
DMA 有两种「次数」,别混:按数据块算的是 DMA 请求次数和结束中断次数,按总线宽度算的是总线请求次数。2022#44 问的是后者——一个 512B 扇区按 64 位总线要请求 64 次。
「能不能用某种方式」一律比时间
把设备准备一个传送单位的时间和该方式的单次响应处理时间比大小,前者更小就会丢数据。
2018#43 第 2 问是这个套路最干净的样本:设备 B 传输率 40MBps,接口是 32 位缓冲寄存器,准备 4 字节需 4B ÷ 40MBps = 0.1μs;而中断响应加处理需 400 ÷ 500MHz = 0.8μs。0.1 < 0.8,所以设备 B 不能用中断方式。
同一道题的第 1 问和第 3 问则用上面的模型算出查询方式和 DMA 方式的 CPU 占用率都是 4%——这说明占用率相同的两种方式,可行性可以完全不同。
磁盘时间必须四项齐全
平均存取时间 = 寻道时间 + 旋转延迟(默认转半圈)+ 传输时间 + 控制器延迟(题目给了才加)
调度题只数磁头移动的磁道数:SCAN 要走到端点再折返,CSCAN 回端点的那一整段位移也要计入,起点上就有的请求距离记 0。见 磁盘性能指标 和 磁盘调度算法。
单位统一
- 传输率里的 MB 按 10⁶ 算,容量里的 MB 按 2²⁰ 算;
- 转速先换成一圈多少毫秒:60 ÷ rpm;
- 主频、周期数、时间三者只保留一种,全部化到「周期 / 秒」再相除。
单位是这一板块唯一的高频失分点。算完先写单位,再写数字。
概念题的高频落点
选择题这部分几乎不考计算,考的是分工边界:
| 问的是 | 边界在哪 | 去处 |
|---|---|---|
| 哪些动作由硬件完成 | 关中断、保存断点、切态、转向量 | 中断处理流程 |
| 哪些由操作系统完成 | 保存其余现场、建中断向量表、设备分配 | I/O 软件层次 |
| 外部中断还是内部异常 | 事件来自 CPU 之外还是指令执行内部 | 异常 |
| 多重中断谁先被处理 | 响应优先级与屏蔽字是两件事 | 中断屏蔽 |
| 哪些工作在驱动程序里 | CHS 换算、下发命令字 | CHS 地址 |