I/O 控制与可靠性专题 I/O & Reliability · 中断 DMA 通道 · 串并联
软考 · 软件设计师 | 硬件 6 分里最后的洞| 希赛累计:I/O 控制 11(本模块最高)、可靠性 3、总线 2
CPU / 浮点 / Cache / 流水线 / 校验已经有页。本页只补那三块。2024 上 Q9 原卷是图,本页按选项 D 画等价示意图。
⏱ 考前 10 分钟速览
① 四种 I/O:程序查询 CPU 空转死等;中断 CPU 干别的,设备好了再喊;DMA 成块搬、CPU 只管开头结尾;通道 = 专职 I/O 处理器,比 DMA 更独立。
② 中断向量 = 中断服务程序的入口地址(不是断点、不是设备地址)。
③ CPU 介入从多到少:查询 > 中断 > DMA > 通道。速度反过来:通道 / DMA 最快。
④ 系统总线连 CPU、主存、外设。片内总线才连运算器/寄存器。
⑤ 串联 R=R1×R2(一个挂全挂)。并联 R=1−(1−R1)(1−R2)(都挂才挂)。混联:先算并联块,再当一个元件去串。
⑥ 千小时可靠度:N 台跑 T 小时坏了 k 台 → 失效率 λ=k/(N×T),千小时 R=1−1000λ。或 1000 小时里坏的比例直接 1−k/N(T 刚好 1000 时)。
⚡ 今早先看
| 看见题干 | 闭眼选 |
| CPU 不断查设备好了没有 | 程序查询,效率低 |
| 中断向量提供什么 | 中断服务程序的入口地址 |
| CPU 只在传送开始和结束插手,中间成块搬 | DMA |
| DMA 传送期间谁管总线 | DMA 控制器,CPU 放弃总线 |
| 比 DMA 更独立、本身是处理器 | 通道 / IOP |
| 系统总线用来连接 | 主存和外设部件(以及 CPU) |
| 两个部件都好系统才好 | 串联,R=R1×R2 |
| 两个备份,一个活着就行 | 并联,R=1−(1−R1)(1−R2) |
| 中间两个并联、两头各一个串联 | R × (1−(1−R)²) × R |
① 四种传送方式 谁干活、CPU 管多宽
外设和内存搬数据,CPU 可以管得很多,也可以几乎不管。四种方式就是「CPU 放手到什么程度」。
| 程序查询 | 中断 | DMA | 通道 / IOP |
| 谁搬数据 | CPU 指令一条条搬 | 还是 CPU,但等设备喊才搬 | DMA 硬件成块搬 | 通道处理器执行通道程序 |
| CPU 在干什么 | 死循环问「好了没」 | 可以干别的;被打断后去跑服务程序 | 只在启动和结束过问;中间把总线让出去 | 几乎不管 I/O |
| 适合 | 很慢、很少的设备 | 键盘、慢速字符设备 | 磁盘等成块高速 | 大型机、很多设备 |
| 效率 | 最低 | 中 | 高 | 最高 |
程序查询还有个亲戚叫无条件传送:假定设备永远准备好,连问都不问。卷面少见。
🎯 CPU 介入从多到少:查询 > 中断 > DMA > 通道。速度反过来。看见「成块、不需要 CPU 干涉、只在开始和结束」闭眼 DMA。
② 中断
设备准备好 → 发中断请求 → CPU 做完当前指令 → 保存现场(把 PC 等推进栈)→ 转入中断服务程序 → 搬完数据 → 恢复现场接着跑原来的程序。
| 词 | 是什么 | 不是什么 |
| 中断向量 | 服务程序的入口地址(或用来形成入口地址) | 不是设备地址,不是主程序断点,不是数据起始地址 |
| 中断向量表 | 一张表,中断号 → 入口地址 | — |
| 断点 | 被打断时下一条指令的地址(在 PC 里,要保存) | 不是向量本身 |
| 中断嵌套 | 正在服务时来了更高优先级,先去伺候更急的 | 同级或更低的要等 |
多个中断源怎么认是谁:多根线、软件轮询、菊花链、总线仲裁、中断向量表(最常考)。
练一练 · 2023上 · 中断向量
2023上 中断向量
中断向量提供的是( )。
A. 中断源的设备地址
B. 中断服务程序的入口地址
C. 传递数据的起始地址
D. 主程序的断点地址
答案 B
向量表里存的就是「去哪执行服务程序」。断点是 PC 保存的现场,不是向量提供的。
③ DMA 和通道
DMA:内存 ↔ 外设成块直接搬。
| 步 | 发生什么 |
| 1 | 外设向 DMAC 请求 |
| 2 | DMAC 向 CPU 发 HOLD(请把总线让给我) |
| 3 | CPU 结束当前总线周期,回 HLDA,输出脚改高阻 = 放弃总线 |
| 4~5 | DMAC 管总线,自己发地址和控制信号,把这一块数据搬完 |
| 6 | 搬完撤 HOLD,CPU 拿回总线接着干活 |
DMA 期间 CPU 不能用总线(可以用缓存里已经有的东西做点运算,但访存不行)。
通道是带专用指令的 I/O 处理器(IOP)。CPU 只要丢给它一条通道程序,后面的排队、启动设备、收尾它自己干。比 DMA 更放手。
🎯 中断:CPU 还是搬运工,只是不用空等。DMA:搬运工换成硬件,CPU 当监工(开工、收工)。通道:请了专职物流公司。
三个对照常考:
| CPU 和外设能不能同时干活 | 谁搬数据 | 搬完怎么喊 CPU |
| 程序查询 | 不能,CPU 空转死等 | CPU 指令 | 不用喊,自己在轮询 |
| 中断 | 能。CPU 干别的,设备好了再打断 | 仍是 CPU 在服务程序里搬 | 设备发中断请求 |
| DMA | 能。搬的过程 CPU 不用插手 | DMA 控制器 | 整块搬完再发中断收工 |
中断是外部来的(设备、DMA 收工、键盘)。异常 / 内部中断是指令自己惹的:除零、缺页、非法指令。别把除零当成外设中断。
DMA 占总线的三种教材说法:停 CPU、总线周期分时、总线周期挪用(周期窃取)。卷面问「DMA 传送时谁管总线」→ DMA 控制器;CPU 当前总线周期结束才让出。
练一练 · 中断 / DMA 并行(历年原话高频)
2021下附近 · 高频原话 三种方式对照
以下关于程序查询方式、中断方式和 DMA 方式的叙述中,正确的是( )。
A. 程序查询方式下,CPU 与外设可以并行工作
B. 中断方式下,CPU 与外设可以并行工作
C. DMA 方式下,每传送一个数据都要打断 CPU
D. 中断方式下,数据传送不需要 CPU 执行程序
答案 B
查询在死等,A 错。中断:CPU 干别的,设备喊了才进来,所以能并行;但搬数据仍要跑服务程序,D 错。DMA 是成块搬,不是每个字节都打断 CPU,C 把 DMA 说成中断了。DMA 其实也能并行,但这题四个选项里只有 B 全对。
练一练 · 中断还是异常
2022上附近 · 高频 中断 ≠ 异常
下列事件中,属于异常(内部中断)而不是外设中断的是( )。
A. 打印机缺纸
B. 键盘有键按下
C. 除数为 0
D. DMA 传送结束
答案 C
A、B、D 都是外部设备来喊 CPU。除零是正在跑的指令自己惹的祸,走异常 / 内部中断入口。DMA 收工用的就是一次普通中断。
④ 总线(2 分)
| 总线 | 连接谁 |
| 系统总线 | CPU、主存、I/O 接口 / 外设 |
| 片内总线 | 运算器、控制器、寄存器(芯片里面) |
| 通信 / 外部总线 | 接口和外设、或设备之间 |
练一练 · 2023上 · 系统总线
2023上 总线
计算机中,系统总线用于( )连接。
A. 接口和外设
B. 运算器、控制器和寄存器
C. 主存和外设部件
D. DMA 控制器和中断控制器
答案 C
系统总线挂主机各大部件。B 是片内总线。A、D 更像外部/专用连接。
⑤ 可靠性(串并联)
可靠度 R = 规定时间内还不坏的概率。失效率 λ 很小且恒定时,短时间 R ≈ 1 − λt。
| 结构 | 公式 | 人话 |
| 串联 | R = R1 × R2 × … | 一条绳上的蚂蚱,一个断全断。越多越脆 |
| 并联 | R = 1 − (1−R1)(1−R2)… | 备份,全部挂才挂。两个相同:1−(1−R)² |
| 混联 | 先把并联块收成一个数,再当元件去串 | 从里往外收 |
N 台设备跑 T 小时,坏了 k 台:λ = k / (N×T)。千小时可靠度 = 1 − 1000λ。若 T 正好 1000,就是 1 − k/N。
练一练 · 2024上 · Q9(原卷有图)
2024上 Q9 混联
某系统由下图所示的冗余部件构成。若每个部件的千小时可靠度都为 R,则该系统的千小时可靠度为(9)。(原卷为框图。空白卷没有图。选项 D 对应「两头各一个串联、中间两个并联」。本页等价示意图,不是原卷截图:)
A. (1−(1−R)²)(1−R)
B. (1−R)² (1−R²)
C. R(1−R²)R
D. R(1−(1−R)²)R
答案 D
中间并联:1−(1−R)²。再和前后两个 R 串联:R × [1−(1−R)²] × R。C 把并联写成了 1−R²,那是另一回事。
练一练 · 2022下 · 千小时可靠度
2022下 失效率
某种部件用在 2000 台计算机系统中,运行工作 1000 小时后,其中有 4 台计算机的这种部件失效,则该部件的千小时可靠度 R 为( )。
A. 0.990 B. 0.992 C. 0.996 D. 0.998
答案 D
正好跑了 1000 小时,2000 台坏 4 台 → 千小时失效比例 4/2000=0.002,R=0.998。或 λ=4/(2000×1000)=2×10⁻⁶,1−1000λ=0.998。
真题索引
2021下 中断可并行 ·
2022上 除零是异常 ·
2022下 千小时 R ·
2023上 中断向量 ·
2023上 系统总线 ·
2024上 Q9 混联
2024 上 Q9 原卷是图。空白卷没有框图,本页按选项 D 的标准串并混联画等价示意图。CPU / 浮点 / Cache / 流水线 / 校验见其它专题,本页不重复。
本专题速记总收
① 查询死等;中断被喊再搬;DMA 成块、CPU 只开头结尾;通道是 I/O 处理器。
② 中断向量 = 服务程序入口地址。嵌套只让更高优先级打断。
③ DMA:HOLD 要总线,HLDA 让出,搬完还回去。
④ 系统总线连主存和外设。片内才连运算器寄存器。
⑤ 串联相乘;并联 1−Π(1−Ri)。千小时 R=1−k/N(跑满 1000 小时时)。