如果说第一章是“背多分”,那第二章就是“懂多分”——计算机系统是软件设计师上午题的第一章,也是整张卷子的“开场白”。它看起来像把《计算机组成原理》压缩成了一章:CPU、进制、码制、浮点、校验码、流水线、存储、I/O、总线、加密、可靠性……名词密、公式多、图也不少。但把 2009 到 2021 年的真题摊开看,你会发现这一章的考法其实非常“老实”——同一个考点反复考,题干换个说法,答案几乎不变。
这一篇的解析不套固定格式:每个选项为什么对、为什么错都会说清楚;凡是《软件设计师教程(第5版)》第 1 章里有对应内容的知识点(1.1.2 中央处理单元、1.1.3 数据表示、校验码,1.2 存储系统/输入输出/总线,1.3 安全性与可靠性),都会标注出处和原话要点;计算题一律给出逐步推导。文末附速记清单、答案速查表和参考资料。
这一章在上午题里到底占多少分
先给你一个整体印象。上午题 75 分,计算机系统通常稳定占 6~9 分,而且分布很集中:
| 考点 | 常见位置 | 题量(按空计) | 难度 | 命题风格 |
|---|---|---|---|---|
| CPU 组成(运算器、控制器、PC) | 第 1~2 题 | 15 | ★★ | 部件归属、寄存器作用 |
| 内存编址与容量计算 | 第 2~5 题 | 15 | ★★★ | 十六进制减法、芯片数 |
| 原反补移码、浮点 | 第 3~6 题 | 17 | ★★★★ | 求真值、范围、对阶 |
| 寻址方式 | 第 4~6 题 | 6 | ★★ | 概念辨析、速度排序 |
| 校验码(奇偶、海明、CRC) | 第 3~5 题 | 10 | ★★★ | 海明码公式、码距 |
| CISC 与 RISC | 第 2~6 题 | 6 | ★★ | 对比表 |
| 流水线 | 第 5~6 题 | 13 | ★★★★ | 周期、执行时间、吞吐率 |
| 存储系统与 Cache | 第 2~5 题 | 20 | ★★★ | DRAM/SRAM、映射方式 |
| 中断、DMA、I/O | 第 2~6 题 | 19 | ★★★ | 中断向量、并行性 |
| 总线 | 第 3~6 题 | 9 | ★★★ | 三总线、带宽计算 |
| 安全与加密 | 第 7~11 题 | 20 | ★★★ | 签名/证书、算法分类 |
| 系统可靠性 | 第 2~4 题 | 6 | ★★★ | 串并联公式 |
| 杂题(移位、CPI、安全分类) | 第 1~9 题 | 14 | ★★ | 靠语言常识 |
三条主线,先把它们抓住:
- “算”的题:内存容量、码制真值、浮点范围、海明码、流水线、总线带宽、可靠性。这些题只要公式记准、进制别错,就是送分题。
- “认”的题:CPU 部件、CISC/RISC、存储器分类、Cache 映射、I/O 方式、加密算法分类。这些题靠对比表,考前必须能默写。
- “绕”的题:数字签名与数字证书、中断与异常、Cache 由谁映射。这些题不难,但命题人喜欢在“用谁的钥匙”上做文章。
一、CPU:运算器、控制器与指令执行
教材 1.1.2 节“中央处理单元”是这一节所有题的母答案。CPU 的功能有四个:程序控制、操作控制、时间控制、数据处理;CPU 主要由运算器、控制器、寄存器组和内部总线组成。
运算器的组成(教材原话要点):ALU(负责处理数据,实现对数据的算术运算和逻辑运算)、累加寄存器 AC(“当运算器的算术逻辑单元执行算术或逻辑运算时,为 ALU 提供一个工作区……运算的结果是放在累加器中的”)、数据缓冲寄存器 DR(“作为 CPU 和内存、外部设备之间数据传送的中转站”)、状态条件寄存器 PSW(保存进位 C、溢出 V、零 Z、负 N 等标志)。
控制器的组成:指令寄存器 IR(“当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存”)、程序计数器 PC(“CPU 自动修改 PC 的内容,以便使其保存的总是将要执行的下一条指令的地址……修改的过程通常只是简单地对 PC 加 1;当遇到转移指令时,后继指令的地址……得到”)、地址寄存器 AR(“保存当前 CPU 所访问的内存单元的地址”)、指令译码器 ID(“对指令中的操作码字段进行分析解释”)。
1.1 运算器
在 CPU 中,常用来为 ALU 执行算术逻辑运算提供数据并暂存运算结果的寄存器是( )。
查看答案与解析收起答案与解析
A. 程序计数器——错,PC 存的是“下一条指令的地址”,与运算数据无关。B. 状态寄存器——错,PSW 保存的是进位、溢出、零、负等标志位,不是运算数据的工作区。C. 通用寄存器——错,通用寄存器虽然也能放数据,但“专门为 ALU 提供工作区并暂存结果”是累加器的职责描述。D. 累加寄存器——对,教材 1.1.2 节原话:“AC 是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为 ALU 提供一个工作区……运算的结果是放在累加器中的”。
属于 CPU 中算术逻辑单元的部件是( )。
查看答案与解析收起答案与解析
A. 程序计数器——错,属于控制器(存下一条指令地址)。B. 加法器——对,ALU 内部包含加法器、移位器等算术运算部件,教材图 1-1 中 ALU 直接挂在数据总线上完成算术逻辑运算。C. 指令寄存器——错,属于控制器(暂存当前指令)。D. 指令译码器——错,属于控制器(翻译操作码)。
CPU 执行算术运算或者逻辑运算时,常将源操作数和结果暂存在( )中。
查看答案与解析收起答案与解析
A. PC——错,存下一条指令地址。B. AC——对,教材原话:执行减法前“先将被减数取出暂存在 AC 中,再从内存储器中取出减数,然后同 AC 的内容相减,将所得的结果送回 AC 中”——源操作数和结果都在 AC 里暂存。C. IR——错,暂存的是指令本身。D. AR——错,暂存的是内存地址。
1.2 控制器
以下关于 CPU 的叙述中,错误的是( )。
查看答案与解析收起答案与解析
A——对,这正是教材“操作控制”的定义:“一条指令功能的实现需要若干操作信号配合来完成,CPU 产生每条指令的操作信号并将操作信号送到对应部件”。B——错误:PC 只存指令地址,“临时存储算术/逻辑运算结果”是累加器 AC 的活,选 B。C——对,教材:“控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化”。D——对,ID 是控制器的部件(对操作码译码)。
计算机指令一般包括操作码和地址码两部分,为分析执行一条指令,其( )。
查看答案与解析收起答案与解析
C——对,教材原话:“当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存”——整条指令(操作码 + 地址码)都进 IR。A、B——错,PC 是“程序计数器”,只存指令地址,不存指令内容;教材还明确 PC 的修改“通常只是简单地对 PC 加 1”。D——错,PC 不装指令。
在 CPU 的寄存器中,( )对用户是完全透明的。
查看答案与解析收起答案与解析
B. IR——对,教材说 IR 由硬件自动使用(取指后自动送入、译码器自动读取),程序员无法访问——“对用户透明”。A. PC——汇编层面可访问(转移指令本质就是改 PC)。C. 状态寄存器——PSW 的标志位可以被条件跳转指令测试。D. 通用寄存器——程序员天天用。
CPU 中译码器的主要作用是进行( )。
查看答案与解析收起答案与解析
B. 指令译码——对,教材:指令译码器“对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号”。A. 地址译码——错,那是存储器/译码器电路的活。C. 数据译码——不存在这个说法。D——多路选择是 ALU 内部的数据通路,不是译码器的主要作用。
在 CPU 中,( )不仅要保证指令的正确执行,还要能够处理异常事件。
查看答案与解析收起答案与解析
B. 控制器——对,教材原话:“控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件”。A. 运算器——只负责算术逻辑运算。C. 寄存器组——只负责暂存。D. 内部总线——只是数据通路。
计算机执行指令的过程中,需要由( )产生每条指令的操作信号并将信号送往相应的部件进行处理。
查看答案与解析收起答案与解析
A——对,教材“操作控制”的定义:“CPU 产生每条指令的操作信号并将操作信号送到对应部件,控制相应的部件按指令的功能要求进行操作”。B. 运算器——执行运算,不发控制信号。C. DMA 控制器——负责内存与外设间的成块传送。D. Cache 控制器——管理高速缓存。
1.3 程序计数器 PC:永远盯着“下一条”
为实现程序指令的顺序执行,CPU( )中的值将自动加 1。
查看答案与解析收起答案与解析
B. PC——对,教材原话:“CPU 自动修改 PC 的内容,以便使其保存的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对 PC 加 1”。A. IR——存当前指令,不自增。C. AR——存当前访问的内存地址。D. ID——译码器,无存储功能。
在 CPU 中用于跟踪指令地址的寄存器是( )。
查看答案与解析收起答案与解析
C. PC——对,“跟踪指令地址”是 PC 的专属描述。A. MAR/AR——存当前访问的内存地址,被动接收。B. MDR/DR——中转数据。D. IR——存当前指令本身。
计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将( )的内容送到地址总线上。
查看答案与解析收起答案与解析
取指令的第一步是把 PC 的内容送到地址总线,按地址读出指令送入 IR——所以选 C。A. IR——存的是已经取到的指令,是取指的“终点”。B. GR——存运算数据。D. PSW——存标志位。
CPU 在执行指令的过程中,会自动修改( )的内容,以便使其保持的总是将要执行的下一条指令的地址。
查看答案与解析收起答案与解析
题干“自动修改……总是将要执行的下一条指令的地址”就是教材 PC 定义的原文(“CPU 自动修改 PC 的内容,以便使其保存的总是将要执行的下一条指令的地址”),选 B。A——IR 由取指过程填充,不是“自动修改为下一条指令地址”;C——AR 配合访存;D——ID 只译码。
计算机中提供指令地址的程序计数器 PC 在( )中。
查看答案与解析收起答案与解析
A. 控制器——对,教材图 1-1 里 PC 画在控制器虚线框内(与指令寄存器、指令译码器、时序控制相邻)。B. 运算器——只有 ALU、AC、DR、PSW。C——很多人误以为 PC 是“存储器”,其实它是控制器里的一个寄存器,只是装的内容是内存地址。D——无关。
在 CPU 中,用( )给出将要执行的下一条指令在内存中的地址。
查看答案与解析收起答案与解析
A. PC——对,“给出将要执行的下一条指令在内存中的地址”就是 PC 的定义。2010 上、2011 上、2016 下、2018 下、2020 下、2021 上——PC 的题换了六种说法,答案没变过。B. IR——装当前指令;C——主存地址寄存器(AR/MAR)装当前访问地址;D——装标志位。
1.4 CPU 部分的“一句话判断法”
考前如果只剩五分钟,记住这张表:
| 题干关键词 | 选谁 |
|---|---|
| 为 ALU 提供数据、暂存运算结果 | 累加寄存器 AC |
| 属于 ALU 的部件 | 加法器 |
| 装当前正在执行的整条指令 | 指令寄存器 IR |
| 装下一条指令的地址、自动加 1、跟踪指令地址 | 程序计数器 PC |
| 对操作码进行翻译 | 指令译码器 ID |
| 装当前访问的内存单元地址 | 地址寄存器 AR |
| 产生操作信号、处理异常、决定自动化 | 控制器 |
| 对用户完全透明 | 指令寄存器 IR |
二、数据表示:从编址到浮点
这一节是整章计算量最大的部分,拆成四块:内存编址、码制、浮点、寻址。
内存编址的底层公式只有一个:存储单元数 = 末地址 − 首地址 + 1。然后按编址单位换算——按字节编址时单元数就是字节数;按字编址时字节数要除以“字长/8”。芯片数 = 总容量 ÷ 单片容量,位宽不够还要位扩展。
码制(教材 1.1.3 节原话要点):
- 原码:最高位是符号位,0 表示正号,1 表示负号,其余位表示绝对值;0 有两种表示([+0]原=00000000,[−0]原=10000000)。
- 反码:正数与原码相同,负数是“其绝对值按位求反”;0 也有两种表示。
- 补码:正数的补码与其原码和反码相同,“负数的补码则等于其反码的末位加 1”;0 有唯一的编码([+0]补=00000000)。
- 移码:“在数值 X 上增加一个偏移量 2^(n−1) 来定义,常用于表示浮点数中的阶码”;实际在偏移 2^(n−1) 的情况下,只要将补码的符号位取反便可获得相应的移码表示。
- n 位补码的范围:−2^(n−1) ~ 2^(n−1)−1(最小值 −2^(n−1) 是人为定义,如 8 位补码的 −128 = 10000000)。
浮点数(教材 1.1.3 节 + IEEE 754):N = 尾数 × 基数^阶码;阶码的长度决定表示范围,尾数的长度决定精度;IEEE 754 的“E 为指数(阶码),用移码表示;尾数长度为 P,用原码表示”,且“约定小数点左边隐含有一位,通常这位数就是 1”。
2.1 内存编址与容量:三步法,别急着按计算器
设用 2K×4 位的存储器芯片组成 16K×8 位的存储器(地址单元为 0000H~3FFFH,每个芯片的地址空间连续),则地址单元 0B1FH 所在芯片的最小地址编号为( )。
查看答案与解析收起答案与解析
计算过程:
① 芯片数 = (16K×8) ÷ (2K×4) = 16 片;每 2 片 4 位芯片拼成一个 2K×8 组,共 8 组,每组覆盖 2K = 0800H 个地址。
② 8 组的地址区间依次为:0000H~07FFH、0800H~0FFFH、1000H~17FFH、1800H~1FFFH、2000H~27FFH、2800H~2FFFH、3000H~37FFH、3800H~3FFFH。
③ 0B1FH 落在第二组 0800H~0FFFH → 该组芯片的最小地址编号为 0800H,选 B。
A——第一组的最小地址;C、D——第五、六组的最小地址。题目问 0B1FH(0B1F ÷ 0800 = 1 余 …,商 1 即第二组)。
内存单元按字节编址,地址 0000A000H~0000BFFFH 共有( )个存储单元。
查看答案与解析收起答案与解析
计算过程:BFFFH − A000H + 1 = 2000H = 2 × 16³ = 8192 字节 = 8K,选 D。
A. 8192K——单位陷阱!8192 是“字节数”,换成 K 要除以 1024,8192K 是它的 1024 倍;B. 1024K——也不对;C. 13K——把 BFFF−A000 算成 B−A=1、F+1 之类的错位结果。
易错提醒:这类题的坑通常不在减法,而在单位换算——先算出字节数,再除以 1024 变 K。
地址编号从 80000H 到 BFFFFH 且按字节编址的内存容量为(5)KB,若用 16K×4bit 的存储器芯片构成该内存,共需(6)片芯片。
查看答案与解析收起答案与解析
计算过程:
① 容量:BFFFFH − 80000H + 1 = 40000H = 4 × 16⁴ = 262144 字节 = 256KB,选 B。
② 芯片数:16K×4bit 的芯片要 2 片位扩展才能拼出 8 位宽度;256KB ÷ 16KB = 16 组,每组 2 片 → 共 16 × 2 = 32 片,选 C。
(5)A/C/D 分别对应少算/多算一个 16 的倍数;(6)A=8 是忘记位扩展(只算了 16 组里的 8 组),B=16 是忘记位扩展,D=64 是把组数和片数弄反。
若用 256K×8bit 的存储器芯片,构成地址 40000000H 到 400FFFFFH 且按字节编址的内存区域,则需( )片芯片。
查看答案与解析收起答案与解析
计算过程:① 容量:400FFFFFH − 40000000H + 1 = FFFFFH + 1 = 100000H = 2²⁰ = 1MB。② 芯片:256K×8bit = 2¹⁸ 字节/片;2²⁰ ÷ 2¹⁸ = 4 片,选 A。芯片是 8 位宽,与编址宽度一致,无需位扩展。
内存按字节编址,从 A5000H 到 DCFFFH 的区域其存储容量为( )。
查看答案与解析收起答案与解析
计算过程:DCFFFH − A5000H + 1 = 37FFFH + 1 = 38000H。38000H = 3 × 16⁴ + 8 × 16³ = 196608 + 32768 = 229376 字节 = 229376 ÷ 1024 = 224KB,选 D。
技巧:十六进制减法逐位借位——DCFFF − A5000:个位 F−0=F,十位 F−0=F,百位 F−0=F,千位 C−5=7,万位 D−A=3 → 37FFF;再加 1 进位到 38000。
内存按字节编址,从 B3000H 到 DABFFH 的区域的存储容量为( )KB。
查看答案与解析收起答案与解析
计算过程:DABFFH − B3000H + 1 = 27C00H。27C00H = 2×16⁴ + 7×16³ + 12×16² = 131072 + 28672 + 3072 = 162816 字节 = 162816 ÷ 1024 = 159KB,选 B。
验证技巧:27C00H ÷ 400H(=1KB)= 159 余 0 —— 直接得 159KB,比二进制展开更快。
内存按字节编址,从 A1000H 到 B13FFH 的区域的存储容量为( )KB。
查看答案与解析收起答案与解析
计算过程:B13FFH − A1000H + 1 = 10400H。10400H = 1×16⁴ + 4×16² = 65536 + 1024 = 66560 字节 = 65KB,选 C。
技巧:10400H = 10.4 × 1000H = 10.4KB?——错,十六进制没有小数!老老实实按位展开:10400H = 10000H + 400H = 64KB + 1KB = 65KB。
内存按字节编址。若用存储容量为 32K×8bit 的存储器芯片构成地址从 A0000H 到 DFFFFH 的内存,则至少需要( )片芯片。
查看答案与解析收起答案与解析
计算过程:① 容量:DFFFFH − A0000H + 1 = 40000H = 2¹⁸ = 256KB。② 芯片:32K×8bit = 2¹⁵ 字节 = 32KB;256KB ÷ 32KB = 8 片,选 B。芯片 8 位宽与字节编址一致,无需位扩展。
内存按字节编址,地址从 A0000H 到 CFFFFH 的内存,共有(4)字节,若用 64K×8bit 的存储器芯片构成该内存空间,至少需要(5)片。
查看答案与解析收起答案与解析
计算过程:① CFFFFH − A0000H + 1 = 30000H = 3 × 16⁴ = 196608 字节 = 192KB,选 D。② 64K×8bit = 64KB/片;192KB ÷ 64KB = 3 片,选 B。
三个坑:① 减完忘了加 1(A0000H 到 CFFFFH 是闭区间,两端都算);② 30000H 当成十进制 30000(它是 3×16⁴);③ 位宽陷阱(本题 8 位芯片无位扩展,若给 64K×4bit 就要乘 2)。
2.2 原码、反码、补码、移码:一张表解决
设机器字长 n,最高位符号位(教材 1.1.3 节定义与例 1.3、1.4):
| 编码 | 正数 | 负数 | 0 的编码 | n 位范围 |
|---|---|---|---|---|
| 原码 | 符号位 0 + 绝对值 | 符号位 1 + 绝对值 | 两种(±0) | −(2^(n−1)−1) ~ 2^(n−1)−1 |
| 反码 | 同原码 | 绝对值按位求反 | 两种(±0) | 同原码 |
| 补码 | 同原码 | 反码末位加 1 | 唯一 | −2^(n−1) ~ 2^(n−1)−1 |
| 移码 | 补码符号位取反 | 补码符号位取反 | 唯一 | 同补码 |
计算机中常采用原码、反码、补码和移码表示数据,其中,编码相同的是( )。
查看答案与解析收起答案与解析
这道题问的是“0 的编码是否唯一 + 编码体系的对应关系”。C. 补码和移码——教材原话:“实际在偏移 2^(n−1) 的情况下,只要将补码的符号位取反便可获得相应的移码表示”——移码与补码只差符号位,0 的编码都唯一,归为同一类编码体系,选 C。A. 原码和补码——错,正数相同但负数规则不同(反码加 1 vs 直接取绝对值)。B. 反码和补码——错,负数差“末位加 1”。D. 原码和移码——错得更远。
若某整数的 16 位补码为 FFFFH,则该数的十进制值为( )。
查看答案与解析收起答案与解析
计算过程:FFFFH = 1111 1111 1111 1111,符号位 1 → 负数。求真值:先减 1 得 FFFEH,再取反得 0001H = 1 → 真值 = −1。选 B。
快捷结论:全 1 的补码就是 −1(任何位宽都成立)。
若某计算机采用 8 位整数补码表示数据,则下列运算中会产生溢出的是( )。(选项为加减组合式)
查看答案与解析收起答案与解析
完整分析:8 位补码的范围是 −128 ~ +127。127+1 = 128,超出上界 +127 → 上溢。而 −127−1 = −128 恰好达到下界(8 位补码的最小值 −128 是人为定义的 10000000),不溢出。
判断口诀:两个正数相加得负 → 上溢;两个负数相加得正 → 下溢;本题问“会产生溢出”的运算,就是 127+1(原卷四个选项为 127+1、−127−1、−127+1、127−1 一类的组合,文字提取丢失了符号)。
原码表示法和补码表示法是计算机中用于表示数据的两种编码方法,在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以( )。
查看答案与解析收起答案与解析
B——对:补码把减法统一成加法,ALU 只需要一个加法器就能完成四则运算,简化了运算部件的设计。A——错,手工运算是“借位减法”,与补码运算过程完全不同。C——错,补码简化的是“部件”,不是直接提速。D——错,精度由字长决定,与码制无关。
某机器字长为 n,最高位是符号位,其定点整数的最大值为( )。
查看答案与解析收起答案与解析
推导:符号位固定为 0(正数),剩下 n−1 位全 1 时最大:0111…1 = 2^(n−1) − 1。选 B。
A. 2^(n−1)——错,n 位补码最大到 2^(n−1)−1,取不到 2^(n−1)(那是最小值 −2^(n−1) 的绝对值);C. 2^n−1——错,这是 n 位无符号数的最大值(没留符号位);D. 2^n——无意义。
如果 "2X" 的补码是 "90H",那么 X 的真值是( )。
查看答案与解析收起答案与解析
计算过程:90H = 1001 0000,符号位 1 → 负数。求真值:取反 0110 1111,加 1 → 0111 0000 = 112 → 2X = −112 → X = −56,选 B。
A. 72——把 90H 当原码算绝对值还忘了负号;C. 56——算对了绝对值忘了负号;D. 111——把 90H 直接转十进制。
采用 n 位补码(包含一个符号位)表示数据,( )。
查看答案与解析收起答案与解析
n 位补码的范围是 −2^(n−1) ~ 2^(n−1)−1。A——错,2^n 超出范围。B——错,−2^n 也超出。C——错,2^(n−1) 无法直接表示(正数最大 2^(n−1)−1,因为 0 占了一个编码)。D——对,−2^(n−1) 是补码最小可表示值——教材例 1.3:8 位补码 −128 = 10000000 是“人为定义”的。
2.3 浮点数:阶码管范围,尾数管精度
浮点数 N = 尾数 × 基数^阶码(教材记作 N = 2^E × F)。IEEE 754(教材 1.1.3 节表 1-2):“E 为指数(阶码),用移码表示;(尾数)用原码表示”;单精度 32 位(尾数 23、阶码 8、偏移量 +127),双精度 64 位(尾数 52、阶码 11、偏移量 +1023)。且“约定小数点左边隐含有一位,通常这位数就是 1”。
浮点数的一般表示形式为 N = 2^E × F,其中 E 为阶码,F 为尾数。以下关于浮点表示的叙述中,错误的是(3);两个浮点数进行相加运算,应首先(4)。
查看答案与解析收起答案与解析
第(3)空:A——对,阶码管范围、尾数管精度。B——对,教材表 1-2 原话:“E 为指数(阶码),用移码表示;(尾数)用原码表示”。C——错误:规格化是尾数的操作(让尾数绝对值落在 [0.5, 1)),与“阶码用什么码制”无关——C 把格式规定和规格化混为一谈。D——对,规格化的定义。
第(4)空:阶码不同的两个浮点数,尾数的“小数点位置”不同,不能直接相加——必须先对阶(统一阶码,小阶向大阶看齐),再相加。选 D。A、B 的“规格化处理”是对阶之后才可能发生的操作。
计算机中的浮点数由三部分组成:符号位 S、指数部分 E(阶码)和尾数部分 M。在总长度固定的情况下,增加 E 的位数、减少 M 的位数可以( )。
查看答案与解析收起答案与解析
选 A。这道题考的是浮点数格式里“位数分配”的权衡。
浮点数的三个组成部分各有分工:
符号位 S:1 位,决定正负。
阶码 E:决定小数点要移动多少位,也就是表示范围。阶码位数越多,能表示的数越大(或越小)。
尾数 M:决定有效数字有多少位,也就是精度。尾数位数越多,能区分的相邻两个数越接近。
总长度固定,就意味着 E 和 M 是此消彼长的关系:E 多一位,M 就少一位。
本题“增加 E 的位数、减少 M 的位数”,结果就是:阶码范围变大 → 可表示数的范围扩大;尾数变短 → 有效位减少 → 精度降低。
B 错:范围和精度不可能同时提高,那需要增加总位数才能做到。
C、D 错:把方向说反了,E 变长不会缩小范围。
一句话记:阶码管范围,尾数管精度,总长固定就只能二选一。这也解释了单精度(32 位)与双精度(64 位)的区别——位数多了,才能同时兼顾范围和精度。
以下关于数的定点表示和浮点表示的叙述中,不正确的是( )。
查看答案与解析收起答案与解析
A——对,教材:“定点整数(小数点在最低有效数值位之后)和定点小数(小数点在最高有效数值位之前)”。B——不正确:小数点的位置是约定好的,不需要占用存储位。C——对。D——对,同样的位数,浮点通过阶码能把数值“放大”到更大范围。
机器字长为 n 位的二进制数可以用补码来表示( )个不同的有符号定点小数。
查看答案与解析收起答案与解析
推导:n 位二进制共有 2^n 种编码。补码的 0 只有一种编码(不像原码/反码有 ±0),所以每种编码都对应一个不同的值——包括最小的 −1(定点小数的 −1 = 1.0000000)。因此能表示 2^n 个不同的有符号定点小数,选 A。
B、C、D——都少了编码,错在没意识到“补码 0 唯一”省下来的编码给了 −1。
浮点数能够表示的数的范围是由其( )的位数决定的。
查看答案与解析收起答案与解析
B. 阶码——对,阶码决定小数点的位置能“浮动”多远,即数的范围。A. 尾数——决定精度(有效数字位数)。C. 数符——只决定正负。D. 阶符——只决定小数点往左还是往右移。
设 16 位浮点数,其中阶符 1 位、阶码值 6 位、数符 1 位、尾数 8 位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( )。
查看答案与解析收起答案与解析
推导:阶符 1 位 + 阶码 6 位 = 7 位,移码表示的最大阶码 = 2⁶−1 = 63,最小 = −64。尾数 8 位补码的范围 = −1 ~ 1−2^−8。
① 最大正数:(1−2^−8) × 2^63(最大尾数 × 最大阶码);② 最小负数:−1 × 2^63 = −2^63(最小尾数 × 最大阶码)。
所以范围是 −2^63 ~ (1−2^−8)×2^63,选 B(原卷四个选项为上下界的组合,选 63 这一组)。
浮点数的表示分为阶和尾数两部分。两个浮点数相加时,需要先对阶,即( )(n 为阶差的绝对值)。
查看答案与解析收起答案与解析
选 D。对阶的原则是小阶向大阶看齐,且尾数右移。
为什么小阶向大阶看齐?假设 1.0×2³ 和 1.0×2⁵ 相加:
如果把大阶 5 降到 3,1.0×2⁵ 要写成 4.0×2³,尾数左移——尾数变长,可能超出尾数位宽而丢失高位,造成不可逆的精度损失。
反过来,把小阶 3 升到 5,1.0×2³ 写成 0.25×2⁵,尾数右移——丢掉的是低位,影响小得多。所以标准做法是“小阶向大阶看齐”。
为什么尾数右移?阶码每加 1,相当于数值乘了 2;要保持总值不变,尾数就得除以 2,即右移一位。阶差为 n,就右移 n 位。
A 错:方向反了(大阶向小阶),尾数左移还会让数值越算越大。B 错:方向反了,尾数右移也不匹配。C 错:方向对了,但尾数该右移却写成左移,等于数值被放大了 2ⁿ 倍。
一句话记:小阶变大阶,尾数往右挪。挪的时候低位被挤出去,这就是浮点加法会产生舍入误差的根源。
以下关于两个浮点数相加运算的叙述中,正确的是( )。
查看答案与解析收起答案与解析
B——对,小阶向大阶对齐(2018 上原题的文字版)。A——错,方向反了(大阶变小会丢失高位)。C、D——错,不对阶的加法/加阶码都没有意义——两数小数点位置不同,尾数直接相加毫无意义。
某机器的浮点数表示格式为“阶符 1 位、阶码 4 位、数符 1 位、尾数 10 位”(允许非规格化表示)。若阶码以补码表示,尾数以原码表示,则 1 0001 0 0000000001 表示的浮点数是( )。(选项为幂次表达式)
查看答案与解析收起答案与解析
推导:① 前两位“1 0001”是阶码部分(阶符 1 + 阶码值 4 位),按补码求真值:10001 为负数,取反加 1 得 11111 = 15 → 阶码 = −15。② 后 11 位“0 0000000001”是尾数部分:数符 0(正),尾数原码 0.0000000001 = 2^−10。
③ 相乘:2^−15 × 2^−10 = 2^−25 —— 对应选项 B(原选项为 2^−16×2^−10、2^−15×2^−10、2^−16×(1−2^−10)、2^−15×(1−2^−10) 的组合)。
2.4 寻址方式:谁跑得快,谁跑得远
| 寻址方式 | 操作数在哪 | 访存次数 | 速度 |
|---|---|---|---|
| 立即寻址 | 指令里(地址码字段就是操作数) | 0 | 最快 |
| 寄存器寻址 | 寄存器里 | 0 | 很快 |
| 直接寻址 | 指令里给出操作数的内存地址 | 1 | 中等 |
| 寄存器间接寻址 | 寄存器里放的是操作数地址 | 1 | 较慢 |
| 间接寻址 | 内存里放的是操作数地址 | 2 | 慢 |
| 相对寻址 | PC + 偏移量 | 1 | 中等 |
指令系统中采用不同寻址方式的目的是( )。
查看答案与解析收起答案与解析
A、B——错,寻址方式与内存/外存的“获取速度”无关(速度取决于存储器本身)。C——错,译码难度由指令格式决定。D——对,多种寻址方式让有限的指令位宽能访问更大的地址空间(如相对寻址、基址寻址),并让编程更灵活(间接寻址实现指针)。
若某条无条件转移汇编指令采用直接寻址,则该指令的功能是将指令中的地址码送入( )。
查看答案与解析收起答案与解析
无条件转移的本质就是改写 PC——让下一条指令从目标地址取。直接寻址的地址码就是转移目标地址,送进 PC。选 A。B. AR——存访存地址;C. AC——存运算数据;D. ALU——运算部件。
若 CPU 要执行的指令为 MOV R1, #45(即将数值 45 传送到寄存器 R1 中),则该指令中采用的寻址方式为( )。
查看答案与解析收起答案与解析
选 B。要把指令拆成“目的操作数”和“源操作数”两部分看。
指令 MOV R1, #45 的含义是“把数值 45 送入寄存器 R1”。
目的操作数 R1:操作数就在寄存器里,指令中给出的是寄存器编号 → 寄存器寻址。
源操作数 #45:# 是立即数的标志,45 这个值本身写在指令中,不需要去内存或寄存器里取 → 立即寻址。
A 错:直接寻址要求操作数地址直接写在指令里(如 MOV R1, [1000H]),本题没有取地址的动作。
C 错:相对寻址是“PC + 偏移量”,用于跳转指令;本题是数据传送,不涉及。
D 错:寄存器间接寻址要求寄存器里存的是地址(如 MOV R1, [R2]),而本题 R1 是目的地、不是地址指针。
判别窍门:看操作数的“形态”——带 # 是立即数,带方括号是内存,光写寄存器名是寄存器寻址。
若某计算机字长为 32 位,内存容量为 2GB,按字编址,则可寻址范围为( )。
查看答案与解析收起答案与解析
计算过程:2GB = 2³¹ 字节;字长 32 位 = 4 字节/字;按字编址的字数 = 2³¹ ÷ 2² = 2²⁹ = 512M,选 C。
A. 1024M——按 2 字节/字算的(错);B. 1GB——按字节编址的结果(没除以 4);D. 2GB——原始容量没换算。
在机器指令的地址字段中,直接指出操作数本身的寻址方式称为( )。
查看答案与解析收起答案与解析
C. 立即寻址——对,地址字段里放的就是操作数本身(不是地址)。D. 直接寻址——地址字段里放的是“操作数的地址”。A. 隐含寻址——操作数隐含在指令或累加器中(地址字段省略)。B. 寄存器寻址——地址字段里放的是寄存器编号。
计算机指令系统采用多种寻址方式。立即寻址是指操作数包含在指令中,寄存器寻址是指操作数在寄存器中,直接寻址是指操作数的地址在指令中。这三种寻址方式获取操作数的速度( )。
查看答案与解析收起答案与解析
立即寻址的操作数就在指令里,取指时顺带获得,0 次访存;寄存器寻址要读寄存器(寄存器在 CPU 内部,很快);直接寻址要访问内存一次(最慢)。所以“立即 > 寄存器 > 直接”,选 A。
三、校验码:码距是根,三种码是枝
校验码这一块,先抓住一个概念——码距(两个合法码字之间至少相差的位数):码距 ≥ 2 才能检错,码距 ≥ 3 才能纠错。三种校验码都是它的推论:
| 校验码 | 码距 | 检错 | 纠错 | 关键点 |
|---|---|---|---|---|
| 奇偶校验 | 2 | 能(奇数位错) | 不能 | 数 1 的个数 |
| 海明码 | 3 | 能 | 能(1 位) | 2^k − 1 ≥ n + k |
| CRC | 2 | 能 | 不能 | 模 2 除法,数据后接校验位 |
以下关于校验码的叙述中,正确的是( )。
查看答案与解析收起答案与解析
A——对,海明码的本质就是“分组奇偶校验”:把数据位和校验位分成若干组,每组做奇偶校验,出错时各组校验结果的组合正好指向出错位的位号。B——错,“码距 ≥ 1”是废话(任何编码码距至少为 1),海明码的码距是 3。C——错,CRC 码距为 2,能检错不能纠错。D——错,码距为 1 的编码连检错都做不到。
以下关于海明码的叙述中,正确的是( )。
查看答案与解析收起答案与解析
A——对,海明码利用多组奇偶性定位错误。B——错,海明码码距为 3(这样才能纠 1 位错)。C——错,海明码既能检错也能纠错。D——错,数据位 n 和校验位 k 由公式 2^k−1 ≥ n+k 决定,长度不必相同。
以下关于采用一位奇校验方法的叙述中,正确的是( )。
查看答案与解析收起答案与解析
奇校验的原理是让整个码字(数据位+校验位)中 1 的个数为奇数。C——对:奇数个位出错时 1 的个数的奇偶性改变,能检测到;但奇校验无法定位错误,所以不能纠错。A、B——错,“所有奇数位/偶数位”的说法不对——出错的位数是奇数还是偶数才是关键,与位的奇偶位置无关。D——错,偶数个位出错时奇偶性不变,检不出来。
海明校验码是在 n 个数据位之外增设 k 个校验位,从而形成一个 n+k 位的新的码字,使新的码字的码距比较均匀地拉大。n 与 k 的关系是( )。
查看答案与解析收起答案与解析
选 A(2k − 1 ≥ n + k)。这个不等式的每一项都有明确含义,理解了就不用背。
左边 2k − 1:k 个校验位能组合出 2k 种 0/1 状态。其中“全 0”用来表示“没有错误”,剩下的 2k − 1 种状态用来指示“哪一位错了”。
右边 n + k:编码后的总位数。数据位 n 个、校验位 k 个,一共 n+k 个位置,每个位置都可能出错,所以需要 n+k 种“错误位置”编码。
要让校验位能指出所有可能出错的位置,就必须:可用的错误编码数 ≥ 可能出错的位置数,即 2k − 1 ≥ n + k。
B 错:不等号方向反了,等于说“错误编码比位置还少”,无法定位。
C 错:漏掉了“减 1”。全 0 必须留给“无错”,不能用来表示错误位置,否则无法区分“没出错”和“第 0 位出错”。
D 错:方向反了,还漏了减 1。
用这个式子验算:n=16 时,k=4 得 15 ≥ 20(不成立),k=5 得 31 ≥ 21(成立),所以需要 5 位——和真题 52、53 的答案一致。
海明码利用奇偶性检错和纠错,通过在 n 个数据位之间插入 k 个校验位,扩大数据编码的码距。若 n = 48,则 k 应为( )。
查看答案与解析收起答案与解析
选 C。海明码的校验位个数由不等式决定:
2k − 1 ≥ n + k
其中 n 是数据位,k 是校验位,(n+k) 是编码后的总位数。含义是:k 个校验位能组合出 2k 种状态(去掉全 0 的一种,剩 2k−1 种),要足够指出“哪一位出错”(共 n+k 种可能)。
本题 n = 48,逐个试 k:
k = 5:2⁵ − 1 = 31,而 n + k = 53,31 < 53,不够。
k = 6:2⁶ − 1 = 63,而 n + k = 54,63 ≥ 54,够用。
所以最少需要 6 位。
A(4 位)、B(5 位)都不够:4 位只能表示 15 种状态,远少于 52 个可能位置。D(7 位)虽然够,但不是“最少”。
做题技巧:不用从 1 开始试,直接从 2k 接近 n 的量级起步——48 位数据,2⁵=32 明显不够,2⁶=64 刚好,一步定位。
已知数据信息为 16 位,最少应附加( )位校验位,以实现海明码纠错。
查看答案与解析收起答案与解析
选 C。海明码校验位个数的判定式是:
2k − 1 ≥ n + k
n 是数据位数,k 是校验位数,(n+k) 是编码后的总位数。
本题 n = 16,逐个试:
k = 4:2⁴ − 1 = 15,而 n + k = 20,15 < 20,不够。
k = 5:2⁵ − 1 = 31,而 n + k = 21,31 ≥ 21,够用。
所以最少 5 位。
A(3 位):2³−1 = 7,差得更远。B(4 位):刚才算过,不够。D(6 位):够但不是最少。
为什么 k=4 会差一点?因为 4 位校验位只能区分 15 种错误位置,而 16 位数据加上 4 位校验共 20 个位置,漏掉 5 个——错在这几位上就纠不出来。
记住这个不等式的直觉:校验位要能“报出”总位数里每一个位置的编号,包括它自己,所以右边是 n+k 而不是 n。
已知数据信息为 16 位,最少应附加( )位校验位,才能实现海明码纠错。
查看答案与解析收起答案与解析
选 C。这是 2016 下半年原题的重考,数据位同样是 16 位,答案同样是 5 位。
判定式:2k − 1 ≥ n + k,其中 n = 16。
k = 4:2⁴ − 1 = 15,n + k = 20,15 < 20,不够。
k = 5:2⁵ − 1 = 31,n + k = 21,31 ≥ 21,成立。
快速验算技巧:16 位数据处在 2⁴ 和 2⁵ 之间,校验位通常比 log₂n 多 1 位左右。log₂16 = 4,试 4 不够就上 5,一次到位。
A(3)、B(4)都偏少,D(6)偏多——题目问“最少”,够用即可。
顺带记几组常考数值:n=8 需 4 位,n=16 需 5 位,n=32 需 6 位,n=48 需 6 位,n=64 需 7 位。背下来,考场上不用现算。
海明码是一种纠错码……对于 32 位的数据,至少需要增加(4)个校验位才能构成海明码。以 10 位数据为例,其海明码表示为 D9D8D7D6D5D4P4D3D2D1P3D0P2P1,其中数据位 D9 由 P4、P3 和 P2 进行校验(从右至左 D9 的位序为 14,即 14 = 8+4+2),数据位 D5 由(5)进行校验。
查看答案与解析收起答案与解析
(4)完整计算:k=5:31 < 32+5=37 不够;k=6:63 ≥ 32+6=38 够 → 6 位,选 D。
(5)完整推导:本题的校验位记法是 P1~P4,其中 P4 位于第 8 位(2³=8)、P3 位于第 4 位、P2 位于第 2 位、P1 位于第 1 位。D5 的位序是 10,10 = 8+2,所以由第 8 位的 P4 和第 2 位的 P2 校验,选 B。
方法总结:把数据位的位号拆成 2 的幂之和,拆出哪些幂就由哪些位置的校验位负责——与校验位的编号方式无关(P4 在第 8 位还是第 4 位,看题目给的排布)。
循环冗余校验码(CRC)利用生成多项式进行编码。设数据位为 k 位,校验位为 r 位,则 CRC 码的格式为( )。
查看答案与解析收起答案与解析
A——对,CRC 是“数据在前、校验在后”的拼接,不像海明码那样插在中间。B、C、D——都是对 CRC 格式的曲解(校验位既不在前、也不随机、也不等间隔插入)。
在( )校验方法中,采用模 2 运算来构造校验位。
查看答案与解析收起答案与解析
选 D(循环冗余校验 CRC)。模 2 运算是 CRC 的“指纹”——核心步骤就是用生成多项式对数据做模 2 除法,得到的余数就是校验位。
模 2 运算的特点是不进位、不借位,加法和减法都等同于异或。CRC 的计算过程:
① 在数据后面补 k 个 0(k 是生成多项式的阶数);
② 用生成多项式对补 0 后的数据做模 2 除法;
③ 余数(k 位)就是 CRC 校验码,附在数据后面发送。
接收方用同一个生成多项式再除一次,余数为 0 就认为传输无错。
A、B 错:水平/垂直奇偶校验只是“数 1 的个数”,凑成奇数或偶数,不涉及除法。
C 错:海明码是分组奇偶校验——把数据位按 2 的幂次分组,每组配一个校验位,靠多组校验结果的组合定位错误位,同样不用模 2 除法。
三种校验的定位能力要分清:奇偶校验只能检错不能纠错,海明码能检错并纠一位,CRC 检错能力强(尤其擅长突发错误)但不纠错。
四、指令系统:CISC 与 RISC
这一节没有计算,纯对比。教材 1.1.4 节“指令系统”给出 RISC 的定义特征——把对比表背到条件反射即可:
| 对比项 | RISC | CISC |
|---|---|---|
| 指令数量/长度 | 少、固定 | 多、可变 |
| 寻址方式 | 少 | 多 |
| 控制器实现 | 硬布线(组合逻辑) | 微程序 |
| 通用寄存器 | 多 | 少 |
| 访存 | 只有 Load/Store | 多数指令可访存 |
| 流水线 | 适合 | 支持有限 |
以下关于 CISC 和 RISC 的叙述中,错误的是( )。
查看答案与解析收起答案与解析
A——错误:CISC 的复杂指令通常用微程序控制实现(把复杂指令拆成一系列微操作),硬布线逻辑难以实现复杂多变的指令,选 A。B——对,指令复杂则译码和控制都复杂。C——对,RISC 指令简单定长,最适合硬布线。D——对,RISC 的定义特征。
( )不是 RISC 的特点。
查看答案与解析收起答案与解析
A——不是 RISC 的特点——“指令种类丰富”是 CISC 的画风,RISC 追求指令少而精。B——是,RISC 指令定长适合流水线。C——是,寻址方式少。D——是,硬布线控制速度快。
以下关于 RISC 和 CISC 的叙述中,不正确的是( )。
查看答案与解析收起答案与解析
A——不正确:RISC 的指令系统更简单,不是更复杂。B——对,RISC 寄存器多(减少访存)。C——对,RISC 把复杂性转移给编译器,子程序库更大。D——对,RISC 指令定长、结构规整,适合 VLSI 实现。
CISC 是( )的简称。
查看答案与解析收起答案与解析
A. Complex Instruction Set Computer——对。B 是 VLSI;C 是 RISC;D 是 VLIW(超长指令字,把多个操作打包进一条长指令)。
以下关于 RISC 技术的叙述中,错误的是( )。
查看答案与解析收起答案与解析
B——错误:“指令功能强大、寻址方式复杂多样”是 CISC 的特征,RISC 相反。A、C、D 都是 RISC 的标准特征(A 指令少而定长;C 寄存器多减少访存;D 硬布线译码快)。
以下关于 RISC 和 CISC 计算机的叙述中,正确的是( )。
查看答案与解析收起答案与解析
A——错,RISC 更适合流水线(指令定长)。B——错,说反了。C——错,也说反了(RISC 寄存器更多)。D——对,RISC 用组合逻辑(硬布线)控制器,CISC 普遍用微程序控制器。
五、流水线:三个公式,吃遍所有计算题
流水线(教材 1.2.2 节,图 1-3 流水处理的时空图)是把指令的执行过程分解为若干子过程、每个子过程在专用的独立模块上并发工作的技术。三个公式:
- 流水线周期 Δt = 最长一段的时间(瓶颈段决定节拍)。
- 执行时间 T = 第 1 条指令总时间 + (n−1) × Δt(第 1 条走完全程,之后每过一个周期流出一条)。
- 吞吐率 TP = n / T(最大吞吐率 = 1/Δt);加速比 = 不用流水线的时间 / 用流水线的时间。
以下关于指令流水线性能度量的叙述中,错误的是( )。
查看答案与解析收起答案与解析
A——对,最大吞吐率 = 1/Δt,Δt 是最慢段。B——对,断流时流水线空转,加速比下降。C——对,各段时间相同(均衡)时效率最高。D——错误:异步控制会增加控制电路的复杂性,不会明显提高性能,选 D。
某四级指令流水线分别完成取指、取数、运算、保存结果四步操作。若完成上述操作的时间依次为 8ns、9ns、4ns、8ns,则该流水线的操作周期应至少为( )ns。
查看答案与解析收起答案与解析
计算过程:流水线周期 = 最长一段 = max(8, 9, 4, 8) = 9ns,选 C。
易错点:D. 33 是四段之和(8+9+4+8=29?不对,33 是别的组合)——那是“串行执行一条指令的时间”的干扰项,流水线周期只取最长段。
流水线的吞吐率是指单位时间流水线处理任务数,如果各段流水的操作时间不同,则流水线的吞吐率是( )的倒数。
查看答案与解析收起答案与解析
选 C。流水线的吞吐率有两个概念,要分清:
最大吞吐率:流水线装满后,单位时间能完成的任务数,等于 1 / Δt,其中 Δt 是最长流水段的操作时间。
实际吞吐率:考虑装满过程(前 k−1 个任务还没流出),公式是 n / T。
题干问“吞吐率是( )的倒数”,指的就是最大吞吐率,所以答案是“最长流水段操作时间”。
为什么是最长段?流水线像一条装配线,节拍由最慢的工位决定。各段时间不均时,快的工位做完就得等,整条线的产出速度被最慢那段卡住——这就是木桶效应。
A 错:最短段跑得最快,决定不了整体节拍。
B 错:各段之和是“完成一条指令的总时间”,它的倒数是串行执行的速率,不是流水线吞吐率。
D 错:段数乘最长段时间,量纲上就不对,得不出时间。
一句话记:流水线周期 = max(各段耗时),所有流水线计算都从这个 Δt 出发。
下列关于流水线方式执行指令的叙述中,不正确的是( )。
查看答案与解析收起答案与解析
A——不正确:单条指令该走几段还是走几段,执行时间一段都省不了——流水线提高的是吞吐率(单位时间完成的指令数),不是单条指令的速度,选 A。B、C、D——都对,这正是流水线的三个收益。
某指令流水线由 5 段组成,第 1、3、5 段所需时间为 Δt,第 2、4 段所需时间分别为 3Δt、2Δt,那么连续输入 n 条指令时的吞吐率 TP 为( )。(选项为分式表达式)
查看答案与解析收起答案与解析
计算过程:① 各段时间:Δt、3Δt、Δt、2Δt、Δt → 总和 8Δt,最长段 3Δt(周期)。② 执行时间 T = 8Δt + (n−1)×3Δt = (3n+5)Δt。③ 吞吐率 TP = n / T = n / ((3n+5)Δt),选 B。
一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间 3Δt、分析时间 2Δt、执行时间 4Δt 的情况下,若按串行方式执行,则 10 条指令全部执行完需要(5)Δt;若按照流水方式执行,则执行完 10 条指令需要(6)Δt。
查看答案与解析收起答案与解析
(5)串行完整计算:每条 3+2+4 = 9Δt;10 条 = 90Δt,选 C。
(6)流水完整计算:周期 = max(3,2,4) = 4Δt;T = 第 1 条总时间 + (n−1)×周期 = 9Δt + 9×4Δt = 45Δt,选 D。
加速比 = 90/45 = 2(流水线把速度翻了一倍)。
某指令流水线由 4 段组成,各段所需要的时间依次为 Δt、2Δt、3Δt、Δt。连续输入 8 条指令时的吞吐率为( )。(选项为分式表达式)
查看答案与解析收起答案与解析
选 C(8 / 28Δt)。流水线执行时间的标准公式是:
T = 一条指令的总时间 + (n − 1) × 流水线周期
其中流水线周期 Δt = 各段耗时的最大值。
本题 4 段耗时分别是 Δt、2Δt、3Δt、Δt:
① 一条指令总时间 = Δt + 2Δt + 3Δt + Δt = 7Δt
② 流水线周期 = max(1,2,3,1)Δt = 3Δt
③ 连续输入 8 条指令:T = 7Δt + (8 − 1) × 3Δt = 7Δt + 21Δt = 28Δt
④ 吞吐率 TP = 指令条数 / 总时间 = 8 / 28Δt
常见错误是直接用“7Δt × 8”算成 56Δt,那是串行执行的时间,忽略了流水线重叠。
另一个易错点是周期取成平均值(7/4 Δt)或总和(7Δt)——都不对,节拍由最慢段决定。
本题选项在原卷中是公式图,图片转换时丢失,按官方答案选 C。
通常可以将计算机系统中执行一条指令的过程分为取指令、分析和执行指令 3 步。若取指令时间为 4Δt,分析时间为 2Δt,执行时间为 3Δt,按顺序方式从头到尾执行完 600 条指令所需时间为(4);若按照执行第 i 条、分析第 i+1 条、读取第 i+2 条重叠的流水线方式执行指令,则从头到尾执行完 600 条指令所需时间为(5)。
查看答案与解析收起答案与解析
(4)串行:每条 4+2+3 = 9Δt;600 条 = 5400Δt,选 D。
(5)流水:周期 = max(4,2,3) = 4Δt;T = 9Δt + 599×4Δt = 9 + 2396 = 2405Δt,选 B。
易错点:A. 2400 是“600×4”(把 600 条都按周期算,忘了第一条要走完全程 9Δt)——这是本题最大的坑:第 1 条指令必须完整走完 9Δt,之后每 4Δt 才出一条。
将一条指令的执行过程分解为取指、分析和执行三步,按照流水方式执行。若取指时间 4Δt、分析时间 2Δt、执行时间 3Δt,则执行完 100 条指令需要的时间为( )。
查看答案与解析收起答案与解析
选 D(405)。按标准公式算:
T = 一条指令总时间 + (n − 1) × 流水线周期
① 取指 4Δt、分析 2Δt、执行 3Δt,一条指令串行执行需要 4+2+3 = 9Δt。
② 流水线周期 = max(4, 2, 3) = 4Δt(取指段最慢,它是瓶颈)。
③ 100 条指令:T = 9Δt + (100 − 1) × 4Δt = 9Δt + 396Δt = 405Δt。
A(200)错得最离谱:把 100 条指令当成 100 个周期、每周期 2Δt 算,完全没看瓶颈段。
B(300):用了 3Δt 作周期(执行段时间),但真正的最长段是取指 4Δt。
C(400):只算了 100 × 4Δt,漏掉第一条指令的“装满”时间(比稳定状态多出的 9−4 = 5Δt)。
三个错误选项分别对应三种典型错法:用错周期、用错段、漏掉首条指令的填充时间。算完用“(n−1)×周期 + 首条时间”回代验证最稳。
执行指令时,将每一条指令都分解为取指、分析和执行三步。已知取指时间 5Δt、分析时间 2Δt、执行时间 3Δt,如果按照重叠的流水线方式执行指令,从头到尾执行完 500 条指令需( )。
查看答案与解析收起答案与解析
选 B(2505)。同一套公式,换个数据:
① 取指 5Δt、分析 2Δt、执行 3Δt,一条指令总时间 = 5+2+3 = 10Δt。
② 流水线周期 = max(5, 2, 3) = 5Δt(取指段是瓶颈)。
③ 500 条指令:T = 10Δt + (500 − 1) × 5Δt = 10Δt + 2495Δt = 2505Δt。
A(2500):直接用 500 × 5Δt,漏掉首条指令的填充时间——正确应是 499 个周期加首条 10Δt。
C(2510):多算 5Δt,把首条指令算成了 15Δt。
D(2515):多算 10Δt,等于把首条指令重复计了一次。
三个错误选项都只差几个 Δt,说明命题人就是冲着“边界处理”来的。做这类题必须把公式写全:T = 首条指令时间 + (n−1) × 周期,不能图省事写成 n × 周期。
这道题和真题 71 是同一模型(取指最长),只是段时长和指令数不同。连着做两道,公式就固化了。
六、存储系统:速度、容量、成本的三角恋
存储系统的底层逻辑是用层次结构解决“容量、成本、速度”的矛盾(教材图 1-6 存储系统的层次结构):寄存器 → Cache → 主存 → 联机磁盘 → 脱机光盘/磁盘,速度递减、容量递增、单位成本递减。
存储器分类(教材 1.2.1 节):按位置分内存/外存;按材料分磁存储器、半导体存储器(双极/MOS,静态/动态)、光存储器;按工作方式分读写存储器(RAM)和只读存储器(ROM、PROM、EPROM、EEPROM)。
( )是指按内容访问的存储器。
查看答案与解析收起答案与解析
B. 相联存储器——对,按内容访问(把数据或数据的一部分作为关键字,与存储单元逐一比较找出相同数据)。A. 虚拟存储器——主存+辅存组成的层次(扩大容量)。C. Cache——按地址访问的高速缓存。D. 随机访问存储器——按地址访问。
相联存储器按( )访问。
查看答案与解析收起答案与解析
选 C(内容)。相联存储器(Associative Memory)又叫内容寻址存储器(CAM),特点是不按地址查找,而是按内容查找。
普通存储器(RAM)的工作方式是“给地址、取数据”;相联存储器反过来——你把要找的内容(或其中一部分)放进去,它并行比较所有存储单元,把匹配的全部找出来。
在计算机里的典型应用:
① Cache 的地址映射:全相联和组相联映射中,判断某个主存块是否在 Cache 里,就靠相联存储器并行比较标记。
② TLB(快表):页表项的高速缓存,按页号并行查找。
③ 虚拟存储器的地址转换:快速完成“逻辑页号 → 物理页号”的映射。
A 错:按地址访问是普通 RAM 的方式。B、D 错:先入后出是栈、先入先出是队列,都是数据结构的操作规则,不是存储器的访问方式。
( )不属于按寻址方式划分的一类存储器。
查看答案与解析收起答案与解析
按寻址方式分三类:随机存储器(RAM,按地址直接访问)、顺序存储器(SAM,如磁带,按顺序访问)、直接存储器(DAM,如磁盘,先直接定位再顺序读)。C. 相联存储器属于按访问方式(按内容访问)的分类,不属于按寻址方式的分类,选 C。
常用的虚拟存储器由( )两级存储器组成。
查看答案与解析收起答案与解析
A. 主存—辅存——对,虚拟存储器由主存和辅存(磁盘)两级组成,由操作系统+硬件(MMU)把辅存“伪装”成主存的一部分,从而扩大逻辑地址空间。C. Cache—主存——那是 Cache 系统的组合,目的是提高速度而非扩大容量。
虚拟存储体系由( )两级存储器构成。
查看答案与解析收起答案与解析
选 A(主存—辅存)。这道题考的是“存储层次和各自要解决的问题”。
计算机的存储层次有几种典型组合,目的各不相同:
寄存器—Cache:解决 CPU 与 Cache 之间的速度差。
Cache—主存:解决的也是速度问题。Cache 快但小、贵,用它把主存中最近常用的数据缓存起来,让 CPU 感觉主存也很快。
主存—辅存:解决容量问题。主存快但容量有限、断电丢失;辅存(磁盘、SSD)容量大、便宜、持久。把暂时不用的数据放到辅存,需要时再调入主存——这就是虚拟存储体系。
所以虚拟存储由“主存—辅存”两级构成。
B、C、D 都错:它们的组合里没有辅存,解决的都是速度问题,不是“让小内存看起来很大”的虚拟存储。
一句话对比:Cache—主存 提高速度,主存—辅存 扩大容量。这两个层次的目的最容易被搞反,是本题的核心陷阱。
计算机系统的主存主要是由( )构成的。
查看答案与解析收起答案与解析
A. DRAM——对,动态随机存储器:集成度高、成本低、需要周期性刷新,适合做主存。B. SRAM——静态随机存储器:快但贵,做 Cache。C. Cache——本身就是 SRAM 做的。D. EEPROM——电擦除只读存储器,存 BIOS 等固件。
CPU 访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为( )。
查看答案与解析收起答案与解析
选 C(空间局部性)。题干的关键句是“邻近的存储单元有可能还要被访问”——“邻近”对应“空间”。
程序访问存储器有两条局部性规律:
空间局部性:如果一个单元被访问,它附近的单元很可能马上被访问。原因是程序顺序执行、数组按行存储、指令连续存放。
时间局部性:如果一个单元被访问,它很可能在不久后再次被访问。原因是循环、反复调用的函数、重复使用的变量。
这两条是 Cache 能起作用的理论基础:正因为有局部性,把“最近用过的”和“旁边的一批”放进 Cache,命中率才会高。
A“数据局部性”、B“指令局部性”不是标准分类。局部性只分时间和空间,数据/指令是按内容类型分的,不属这个维度。
D 错:时间局部性强调“同一地址再次被访问”,与题干的“邻近单元”不符。
判断口诀:出现“附近/相邻/连续区域”就是空间,出现“再次/重复/循环”就是时间。
以下关于闪存(Flash Memory)的叙述中,错误的是( )。
查看答案与解析收起答案与解析
A——对,闪存非易失。B——对,闪存按块删除(先擦除再写)。C——错误:闪存的读写速度和寿命(擦写次数有限)不适合做主存——主存还是要用 DRAM。D——对,嵌入式系统常用 Flash 代替 ROM 存固件。
( )是一种需要通过周期性刷新来保持数据的存储器件。
查看答案与解析收起答案与解析
B. DRAM——对,用电容存数据,电容会漏电,必须周期性刷新。A. SRAM——用触发器存数据,不需要刷新。C. FLASH——非易失,不需要刷新。D. EEPROM——同上。
真题 82~87(Cache 映射由谁完成——六年六考)
以下六道题题干不同、年份不同,答案却是同一个:
- 2011 下·题 3:在程序执行过程中,Cache 与主存的地址映像由( )→ A. 专门的硬件自动完成
- 2012 上·题 1:主存地址与 Cache 地址之间的转换工作由( )→ A. 硬件
- 2013 下·题 1:Cache 与主存的地址映像由( )→ A. 硬件自动完成
- 2016 下·题 6:以下关于 Cache 与主存间地址映射的叙述中,正确的是( )→ D. 由硬件自动完成
- 2017 下·题 1:Cache 与主存的地址映射是由( )完成的 → C. 硬件自动
- 2020 下·题 1:高速缓存与主存间的地址映射由( )→ D. 硬件自动完成
查看答案与解析收起答案与解析
统一解析:Cache 的地址映射、替换、一致性维护全部由硬件自动完成,程序员和操作系统都不需要(也不能)直接干预——这是“透明性”的典型体现。选项里只要出现“操作系统管理”“程序员调度”“应用软件调度”,一律排除。
以下关于 Cache 的叙述中,正确的是( )。
查看答案与解析收起答案与解析
B——对,Cache 的设计思想就是用“小而快”的 SRAM 在合理成本下尽量提高命中率。A——错,命中率主要受容量、映射方式、程序局部性影响,替换算法的时间复杂度不是关键。C——错,Cache 容量远小于主存(成本太高)。D——无此说法。
Cache 的地址映像方式中,发生块冲突次数最小的是( )。
查看答案与解析收起答案与解析
A. 全相联映像——对,主存的任意块可装入 Cache 的任意块,冲突自然最少(代价是比较电路最复杂、成本最高)。C. 直接映像——主存块只能进固定的 Cache 块(块号 mod Cache 块数),冲突最多。B. 组相联——两者的折中。
主存与 Cache 的地址映射方式中,( )方式可以实现主存任意一块装入 Cache 中任意位置,只有装满才需要替换。
查看答案与解析收起答案与解析
选 A。题干的两句话几乎就是全相联映射的定义:“任意一块装入任意位置”“只有装满才需要替换”。
三种地址映射方式的区别,全在“主存块能放到 Cache 的哪个位置”:
全相联映射:主存的任意一块可以装入 Cache 的任意一行。灵活性最高,利用率最好,但查找时要逐行比较标记,硬件成本高、速度慢。只有 Cache 全满时才需要按替换算法淘汰。
直接映射:主存块只能放到唯一确定的那一行(通常按“块号 mod 行数”算)。查找最快(只比一次),但冲突严重——两个块映射到同一行就会反复换进换出。
组相联映射:折中方案。Cache 先分组,主存块只能放到某一组内的任意一行——比直接映射灵活,比全相联简单。
B 错:直接映射位置固定,谈不上“任意”。C 错:组相联只在组内任意,跨组不行。D 错:“串并联”是电路连接的概念,不是地址映射方式。
记忆:全相联最灵活、直接映射最快、组相联折中。
以下关于 Cache 的叙述中,不正确的是( )。
查看答案与解析收起答案与解析
A——不正确:Cache 只是主存内容的副本,用来提高访问速度,不会扩大主存的容量——扩大容量的是虚拟存储器(主存+辅存)。B——对。C——对,教材图 1-12:命中率随容量增大而提高,但逐渐饱和,不是线性。D——对。
在 CPU 内外常需设置多级高速缓存(Cache),主要目的是( )。
查看答案与解析收起答案与解析
B——对,Cache 解决 CPU 与主存的速度差,提高访问效率。A、C——错,Cache 不扩大容量(那是虚拟存储器的事)。D——错,Cache 不直接提高外存访问速度。
七、输入/输出技术:CPU 到底要不要“盯着”
I/O 这一块的题,本质上都在问一件事:**数据从外设搬到主存的过程中,CPU 要管多少?**四种方式的对比表:
| 方式 | CPU 干预程度 | CPU 与外设并行 | 传输单位 |
|---|---|---|---|
| 无条件传送 | 全程 | 否 | 字 |
| 程序查询(轮询) | 全程忙等 | 否 | 字 |
| 中断方式 | 每个字都要干预 | 能 | 字 |
| DMA 方式 | 只在开始和结束 | 能 | 块 |
中断向量可提供( )。
查看答案与解析收起答案与解析
C——对,中断向量就是中断服务程序的入口地址。A——端口地址是 I/O 指令访问的对象;B——数据起始地址在传送参数里;D——断点地址由硬件压栈保存,不在中断向量表里。
为了便于实现多级中断嵌套,使用( )来保护断点和现场最有效。
查看答案与解析收起答案与解析
D. 堆栈——对,中断嵌套的返回顺序是“后进先出”,堆栈天然匹配:每嵌套一层压栈一层,返回时逐层弹出。A. ROM——只读,写不进去。B. 中断向量表——存的是各中断服务程序的入口地址,不是现场。C. 通用寄存器——数量有限,嵌套多层就不够用。
计算机中 CPU 的中断响应时间指的是( )的时间。
查看答案与解析收起答案与解析
D——对,中断响应时间只算到“开始进入中断处理程序”为止,后面的处理时间不算。A——错,包含了整个处理过程;B——错,那是处理时间;C——错,只是响应过程的一部分。
计算机运行过程中,遇到突发事件,要求 CPU 暂时停止正在运行的程序,转去为突发事件服务,服务完毕,再自动返回原程序继续执行,这个过程称为(2),其处理过程中保存现场的目的是(3)。
查看答案与解析收起答案与解析
第(2)空:题干就是中断的定义——选 B。阻塞是进程状态;动态/静态绑定是面向对象概念。
第(3)空:保存现场(寄存器、PC 等)是为了返回后能接着原样执行原程序——选 C。A、B、D 都不是保存现场的目的。
计算机运行过程中,进行中断处理时需保存现场,其目的是( )。
查看答案与解析收起答案与解析
选 C。中断处理时“保存现场”,保存的是被中断程序的现场,目的是让它之后能正确恢复、继续执行。
“现场”具体包括:程序计数器(PC,指向下一条指令)、程序状态字(PSW,含标志位)、通用寄存器的值。这些信息在中断处理程序执行时会被覆盖,所以必须先压栈保存,中断返回前再弹栈恢复。
A 错:保存的不是中断处理程序的数据,而是被中断程序的数据。
B 错:保存现场是“保护自己”,不是“防止破坏别人”。防止破坏别人的数据靠的是内存保护机制(基址/限长寄存器)。
D 错:保存现场不是为了给中断处理程序提供数据,恰恰相反——是为了让中断处理程序用完寄存器后,原程序能拿回自己的值。
一句话记:保存现场是为了“能回来”,恢复现场是为了“接着跑”。两者成对出现,缺一个程序就会跑飞。
中断向量提供( )。
查看答案与解析收起答案与解析
选 D。中断向量表里存的是中断服务程序的入口地址。
工作过程:每个中断源被分配一个中断类型号,CPU 收到中断后,用这个类型号去中断向量表里查表,取出对应的入口地址,然后跳过去执行中断服务程序。
A 错:函数调用结束后的返回地址存在栈里,由 call/ret 指令维护,与中断向量表无关。
B 错:I/O 设备的接口地址(端口号)是 CPU 访问设备寄存器用的地址,属于 I/O 编址范畴。
C 错:主程序的入口地址在程序启动时就定好了(如 main 函数地址),不由中断机制提供。
要区分两个容易混的概念:中断向量是“中断服务程序的入口地址”,断点是“被中断的程序停在哪里”。前者在向量表里,后者在响应中断时由 CPU 自动压栈保存。
这道题在 2013 上、2020 下、2021 下三次出现,选项措辞基本一致。记住“向量 = 入口地址”这一条,三次都能秒选。
中断向量提供( )。
查看答案与解析收起答案与解析
选 C(中断服务程序入口地址)。这和真题 98 是同一道题,只换了选项排列。
中断向量表是操作系统在内存中建立的一张表,每一项存放一个中断服务程序的入口地址。中断发生时,CPU 用中断类型号作索引查表,直接跳到对应地址执行。
A 错:被选中设备的地址,是设备选中信号或端口地址,属于 I/O 接口层面。
B 错:待传送数据的起始地址,是 DMA 传送时由 DMA 控制器保存的参数,与中断向量无关。
D 错:断点地址(被中断程序的下一条指令地址)是 CPU 响应中断时自动压栈保存的,不在中断向量表里。这一项最容易误选,因为“中断”和“断点”两个词太像。
一句话分清:向量回答“去哪儿执行”,断点回答“从哪儿回来”。
在输入输出控制方法中,采用( )可以使得设备与主存间的数据块传送无需 CPU 干预。
查看答案与解析收起答案与解析
C. DMA——对,教材 1.2.3 节原话:“DMA 是指数据在内存与 I/O 设备间的直接成块传送,即在内存与 I/O 设备间传送一个数据块的过程中,不需要 CPU 的任何干涉,只需要 CPU 在过程开始启动……与过程结束……时的处理,实际操作由 DMA 硬件直接执行完成”。A、B——都需要 CPU 执行程序来传数据。D——总线控制不是 I/O 控制方式。
在 I/O 设备与主机间进行数据传输时,CPU 只需在开始和结束时作少量处理,而无需干预数据传送过程的是( )方式。
查看答案与解析收起答案与解析
D. 直接存储器存取(DMA)——对,与真题 100 同一句话。A. 中断——每个数据的传输都要 CPU 执行中断服务程序。B. 程序查询——CPU 全程忙等。C. 无条件传送——假定外设始终准备好,CPU 也要执行 I/O 指令。
DMA 工作方式下,在( )之间建立了直接的数据通路。
查看答案与解析收起答案与解析
选 C(主存与外设)。DMA 之所以叫“直接存储器存取”,就在于它绕开了 CPU,让主存和 I/O 设备之间直接成块交换数据。
对比三种 I/O 控制方式就很清楚:
程序查询:CPU 反复读设备状态寄存器,数据经 CPU 中转,CPU 全程忙等。
中断方式:设备就绪后发中断,CPU 中断当前程序,用服务程序搬运数据——数据还是要过 CPU 的手。
DMA:DMA 控制器向 CPU 申请总线,拿到总线控制权后,直接在内存和设备之间读写,CPU 不参与数据搬运,只在传输结束后处理一次中断。
A 错:CPU 与外设之间搬数据,是查询和中断方式的做法。
B 错:CPU 与主存之间的通路是系统总线的日常工作,不是 DMA 的特征。
D 错:外设之间没有直接通路,数据必须先落到主存。
DMA 的意义可以概括成一句:用硬件(DMA 控制器)替代 CPU 做数据搬运,把 CPU 解放出来做计算。这也是它适合磁盘、网卡这类高速块设备的原因。
CPU 是在( )结束时响应 DMA 请求的。
查看答案与解析收起答案与解析
选 A。CPU 响应 DMA 请求的时机是当前指令执行结束之后(严格说是当前总线周期结束时让出总线)。
DMA 的工作过程分三步:
① 请求:外设准备好数据后向 DMA 控制器发 DMA 请求,DMA 控制器再向 CPU 发总线请求(HRQ)。
② 响应:CPU 在当前指令执行完之后,把总线置为高阻态,让出总线控制权,并回送应答(HLDA)。
③ 传送:DMA 控制器接管总线,直接在内存和外设之间成块传送数据,不经过 CPU。
C 错:一个时钟周期太细。CPU 不可能每个时钟周期都检查 DMA 请求,开销太大。
D 错:一个总线周期是“CPU 完成一次总线操作”的时间,是 DMA 传送的粒度,不是“响应请求的时机”。两者容易混:DMA 每次传送占用一个总线周期,但 CPU 是在指令边界让出总线。
B 错:一段程序结束太晚。等整个程序跑完才响应,DMA 就失去了“高速成块传送”的意义。
为什么要等指令执行完?因为一条指令执行过程中 CPU 可能正在用总线读写内存,中途让出会导致指令执行到一半、状态不一致。指令是原子单位,边界才是安全的切换点。
计算机系统中常用的输入/输出控制方式有无条件传送、中断、程序查询和 DMA 方式等。当采用( )方式时,不需要 CPU 执行程序指令来传送数据。
查看答案与解析收起答案与解析
选 D(DMA)。题干的关键是“不需要 CPU 执行程序指令来传送数据”——这正是 DMA 的定义特征。
四种方式的对比:
无条件传送:CPU 直接执行 I/O 指令读写端口,默认设备总是就绪。
程序查询:CPU 循环读设备状态寄存器,直到就绪才传送。要 CPU 参与,而且是忙等,浪费最严重。
中断方式:设备就绪后发中断,CPU 转去执行中断服务程序搬数据。仍然要 CPU 执行指令。
DMA:DMA 控制器接管总线,在主存与外设之间直接成块传送,CPU 不执行任何搬运指令,只在开始前配置、结束后处理一次中断。
A、B、C 都需要 CPU 执行程序指令来搬数据,区别只在于“什么时候搬”。
这也是 DMA 适合磁盘、网卡的原因:一次传几百上千字节,如果每个字节都让 CPU 执行指令,开销无法接受。
一句话记:前三种都是“CPU 搬”,只有 DMA 是“硬件搬”。
DMA 控制方式是在( )之间直接建立数据通路进行数据的交换处理。
查看答案与解析收起答案与解析
选 C。DMA(Direct Memory Access,直接存储器存取)的“直接”二字,说的就是主存与外设之间直接建立数据通路,不经过 CPU。
三种 I/O 控制方式的对比最能说明这一点:
程序查询方式:CPU 反复查询外设状态,数据要经过 CPU 中转,CPU 全程被占住。
中断方式:外设准备好后发中断,CPU 停下当前程序,用中断服务程序搬运数据——数据仍然要经过 CPU。
DMA 方式:DMA 控制器接管总线,在主存和外设之间直接成块搬数据,CPU 完全不参与搬运,只在开始前配置、结束后处理中断。
A 错:CPU 与主存之间的通路是系统总线本身,那是正常取指、读写数据的通道,不是 DMA 的特征。
B 错:CPU 与外设之间搬运数据,正是程序查询和中断方式的做法。
D 错:外设与外设之间没有直接数据通路,数据必须先落到主存。
所以 DMA 的数据通路是“主存 ↔ 外设”,CPU 只负责“启动”和“善后”。这也解释了 DMA 为什么适合磁盘、网卡这类高速块设备——数据量大,不能让 CPU 一句一句搬。
采用 DMA 方式传送数据时,每传送一个数据都需要占用一个( )。
查看答案与解析收起答案与解析
B. 总线周期——对,DMA 每搬一个字都要占用一次总线(周期挪用/窃取),这也是 DMA 会轻微降低 CPU 访存效率的原因。A. 指令周期——DMA 不执行指令;C. 存储周期——是内存访问的计时单位;D. 机器周期——是 CPU 内部的节拍。
以下关于计算机系统中断概念的叙述中,正确的是( )。
查看答案与解析收起答案与解析
选 C。判据只有一条:这个事件能不能“等一等”。
可屏蔽中断:CPU 可以通过中断屏蔽标志暂时不响应,稍后再处理也不出大事。I/O 设备请求属于这一类——磁盘读完数据,等一会儿再取没关系。
不可屏蔽中断(NMI):必须立即处理,CPU 屏蔽不掉。电源掉电是典型代表——一旦断电,内存数据全部丢失,必须抢在电源彻底断掉之前(靠电容维持的几毫秒)保存现场。其他例子还有内存奇偶校验错、总线错误。
A 错:把掉电说成可屏蔽,等于认为可以“晚点再断电”,荒谬。
B 错:把 I/O 请求说成不可屏蔽,CPU 会被频繁的设备请求打断,无法正常工作。
D 是两个错误说法的拼接。
记忆:能等的可屏蔽(I/O、定时器),等不得的不可屏蔽(掉电、硬件故障)。
计算机运行过程中,CPU 需要与外设进行数据交换。采用( )控制技术时,CPU 与外设可并行工作。
查看答案与解析收起答案与解析
程序查询是 CPU 忙等(不能并行),中断和 DMA 都能让 CPU 在外设工作时干别的——所以只有“中断方式和 DMA 方式”的组合成立,选 B。A、C、D 都混入了程序查询。
异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。以下关于中断和异常的叙述中,正确的是( )。
查看答案与解析收起答案与解析
选 B。题干已经把两个定义写清楚了,按定义归类即可:
异常:指令执行过程中,在处理器内部发生的特殊事件。比如除数为 0、溢出、缺页、非法指令、断点指令。
中断:来自处理器外部的请求事件。比如 I/O 设备完成、时钟中断、键盘输入、外部硬件故障。
DMA 传送结束:是 DMA 控制器(设备侧)发来的信号,来自处理器外部 → 中断。
除运算时除数为 0:是 CPU 执行除法指令时自己发现的,发生在处理器内部 → 异常。
A 错:把除数为 0 也算成中断。C 错:两者完全说反。D 错:把 DMA 结束算成异常。
记忆:“内部出的问题”是异常,“外部来的通知”是中断。另一个角度:异常与当前指令同步(执行到这条才发生),中断与当前指令异步(随时可能来)。
以下关于中断方式与 DMA 方式的叙述中,正确的是( )。
查看答案与解析收起答案与解析
A——对,两者都能让 CPU 与外设并行。B——错,中断方式每个字都要 CPU 干预(执行中断服务程序),只有 DMA 才免干预。C——错,DMA 更快(成块传送、硬件直传)。D——错,中断方式需要保护现场。
八、总线
总线分类(教材 1.2.x 节):按传送信息分数据总线(双向,宽度决定一次传多少位)、地址总线(单向,CPU 发出,“地址总线的宽度决定了 CPU 的最大寻址能力”)、控制总线(有的单向有的双向,整体双向)。常见总线标准:ISA(16 位)、EISA(32 位)、PCI(并行内总线,与 CPU 时钟独立)、PCI-E(点对点串行)。
处理机主要由处理器、存储器和总线组成,总线包括( )。
查看答案与解析收起答案与解析
选 A。系统总线按传送信息的类型分为三类,这是最标准的划分。
数据总线(DB):在 CPU 与内存、I/O 之间传送数据。双向——既能读进来,也能写出去。宽度决定一次能传多少位,比如 64 位数据总线一次传 8 字节。
地址总线(AB):传送内存或 I/O 端口的地址。单向——总是由 CPU 发出。宽度决定 CPU 的最大寻址空间,n 根地址线可寻址 2ⁿ 个单元,比如 32 位地址总线最大寻址 4GB。
控制总线(CB):传送控制信号、时序信号和状态信号,比如读/写信号、中断请求、总线请求。每根线的方向固定,整体看有出有入。
B 错:并行/串行是按传送方式分,“逻辑总线”不是标准分类。
C 错:单工/双工是按传输方向分,属于通信方式的分类,不是系统总线的划分。
D 错:内部总线/外部总线是按位置分(CPU 内部、系统级、设备级),与“逻辑/物理”混搭,不成体系。
这道题的关键是认清“分类维度”:按信息类型分三类(数据/地址/控制),才是教材和考题默认的划分。
若内存容量为 4GB,字长为 32,则( )。
查看答案与解析收起答案与解析
选 A。这道题要分别算地址总线和数据总线的宽度,两者依据不同。
数据总线宽度 = 字长 = 32 位。字长是 CPU 一次能并行处理的二进制位数,题干直接给了“字长为 32”。
地址总线宽度由内存容量决定。公式:2n = 可寻址单元数,n 就是地址线根数。
内存 4GB = 4 × 2³⁰ B = 2³² B。按字节编址(每个地址对应 1 字节),需要 2³² 个地址,即 32 根地址线。
所以地址总线和数据总线都是 32 位。
B、C 错:把地址总线算成了 30 位。30 位只能寻址 2³⁰ B = 1GB,装不下 4GB。这个错误来自“4GB 里的 4 是 2²、30 来自 GB”,把 2² × 2³⁰ 错算成了 2³⁰。
D 错:数据总线 8 位意味着一次只能传 1 字节,与“字长 32”矛盾。
记忆:数据总线看字长,地址总线看容量。算地址线时先统一单位到字节,再取以 2 为底的指数。
在计算机系统中采用总线结构,便于实现系统的积木化构造,同时可以( )。
查看答案与解析收起答案与解析
选 C。总线结构的本质是“用一组公共线路连接多个部件”,最大的好处就是减少连线、便于扩展。
如果没有总线,n 个部件两两相连需要 n(n−1)/2 条线路——部件一多,线就爆炸了。用一条总线,所有部件挂上去,线路数量从平方级降到线性级。
同时,总线是标准化接口,加一个新设备只要符合总线规范就能接上,这就是题干说的“积木化构造”。
A 错:提高传输速度不是总线结构的优点。恰恰相反,总线是共享资源,同一时刻只能有一个主设备使用,反而可能成为瓶颈。提高速度靠更快的总线标准(如 PCIe)、更宽的位宽、更高的时钟。
B 错:提高传输量同理,共享总线不会自动增加带宽。
D 错:减少指令系统的复杂性是 RISC 的目标,与总线结构无关。
这道题的价值在于纠正一个常见误解:总线带来的是“结构上的便利”,不是“性能上的提升”。看到“总线”就想到“快”,正好掉进 A 的陷阱。
总线复用方式可以( )。
查看答案与解析收起答案与解析
总线复用 = 同一组线分时传不同信息(如地址和数据共用一组线)——目的是减少信号线数量,选 C。它不提高带宽(分时反而可能降速),不增加功能,也不影响 CPU 利用率。
( )不属于系统总线。
查看答案与解析收起答案与解析
选 C。SCSI 是设备接口标准,不是系统总线。
先分清两类“总线”:
系统总线:连接 CPU、主存、I/O 接口这些主板上的核心部件,是计算机内部的骨架。典型代表有 ISA、EISA、PCI、PCI-Express、VESA。
设备接口:连接主机与外部设备,属于 I/O 接口层面。典型代表有 SCSI、IDE(ATA)、SATA、USB、SAS。
A ISA(Industry Standard Architecture):早期的 16 位系统总线,PC/AT 时代的标准。
B EISA(Extended ISA):ISA 的 32 位扩展版本,仍属系统总线。
D PCI(Peripheral Component Interconnect):经典的局部总线,用于连接显卡、网卡等扩展卡,属于系统总线。
C SCSI(Small Computer System Interface):小型计算机系统接口,用于连接硬盘、扫描仪等外部设备,是设备接口,与系统总线不是一个层次。
判别方法:看它连的是主板上的部件还是外部设备。连 CPU/内存/扩展卡的是系统总线,连硬盘/打印机的是设备接口。
三总线结构的计算机总线系统由( )组成。
查看答案与解析收起答案与解析
选 B。“三总线”是系统总线按传送信息类型的标准划分:数据总线、地址总线、控制总线。
三者的分工:
数据总线(DB):传数据,双向。宽度等于字长,决定一次能传多少位。
地址总线(AB):传地址,单向(由 CPU 发出)。宽度决定最大寻址空间,n 根线可寻址 2ⁿ 个单元。
控制总线(CB):传控制信号、时序信号、状态信号,比如读写信号、中断请求、总线请求。
A 错:CPU 总线、内存总线、I/O 总线是按连接对象分的,不是“三总线”的含义。
C 错:系统总线、内部总线、外部总线是按位置层次分的(CPU 内部、系统级、设备级)。
D 错:串行/并行是按传输方式分,PCI 是具体标准,三者不在一个维度上。
这道题和真题 102(三总线配 DMA)、真题 113(总线的作用)是同一知识点群。抓住“按信息类型分三类”这个维度,就能排除所有按其他维度分类的选项。
总线宽度为 32bit,时钟频率为 200MHz,若总线上每 5 个时钟周期传送一个 32bit 的字,则该总线的带宽为( )MB/s。
查看答案与解析收起答案与解析
计算过程:① 32bit = 4 字节;② 每秒传输次数 = 200MHz ÷ 5 = 40M 次/秒;③ 带宽 = 40M × 4B = 160MB/s,选 C。
公式:带宽 = (总线宽度/8) × 频率 ÷ 每次传输所需时钟周期数。
以下关于总线的叙述中,不正确的是( )。
查看答案与解析收起答案与解析
C——不正确:单总线结构确实简单、通用,但所有设备共享一条总线容易成为瓶颈,性能并不高。A、B、D 都正确(并行近距离高速、串行长距离、专用总线最佳匹配)。
以下关于 PCI 总线和 SCSI 总线的叙述中,正确的是( )。
查看答案与解析收起答案与解析
D——对:PCI 是并行内总线(教材:“PCI 总线是目前微烈机上广泛采用的内总线,采用并行传输方式”),SCSI 是并行外总线(连接磁盘等外设)。两个都是“并行”,区别在内/外。
九、安全性:一把钥匙开一把锁
安全这一块能占 3~5 分,套路极其固定。核心是分清“谁加密、谁解密、谁签名、谁验证”:
- 保密通信:用接收方的公钥加密,接收方用自己的私钥解密。
- 数字签名:发送方用自己的私钥签名,接收方用发送方的公钥验证——提供真实性、不可否认性、完整性。
- 数字证书:由 CA 签发,用 CA 的私钥签名、CA 的公钥验证,证书里装的是持有者的公钥。
公钥体系中,私钥用于(66),公钥用于(67)。
查看答案与解析收起答案与解析
(66)私钥用于解密(别人用我的公钥加密发给我,我用私钥解)和签名(我用私钥签名,别人用我的公钥验证)。(67)公钥用于加密(发给我的数据用我的公钥加密)和认证(验证我的签名)。
这对搭配要背成条件反射:私钥管“解密+签名”(都是只有主人能干的事),公钥管“加密+认证”(都是别人对主人做的事)。
网络安全包含了网络信息的可用性、保密性、完整性和网络通信对象的真实性。其中,数字签名是对( )的保护。
查看答案与解析收起答案与解析
选 D。数字签名解决的是“消息是不是你发的、你能不能抵赖”,对应真实性(以及不可否认性)。
网络安全四要素各自的防护手段:
可用性:保证系统和数据随时能用,防的是 DoS/DDoS、断电、硬件故障,靠冗余、备份、容灾。
保密性:保证数据不被未授权者看到,靠加密。
完整性:保证数据没被篡改,靠消息摘要(MD5、SHA)和校验码。
真实性(不可否认性):保证身份真实、发送方不能否认发过,靠数字签名和数字证书。
为什么签名能保证真实性?因为签名是用发送方私钥加密摘要得到的,只有他本人有私钥;接收方用他的公钥一验,就能确认“确实是他发的”,而且他无法抵赖——别人没有他的私钥,伪造不出来。
A 错:可用性靠容灾和抗攻击,签名管不了服务是否可用。B 错:保密性靠加密,签名不隐藏内容。C 错:连通性不是安全四要素之一。
甲和乙要进行通信,甲对发送的消息附加了数字签名,乙收到该消息后利用( )验证该消息的真实性。
查看答案与解析收起答案与解析
选 A(甲的公钥)。这道题考的是“签名用私钥、验签用公钥”这条铁律。
完整过程:
① 甲对消息计算摘要(如 SHA-256);
② 甲用自己的私钥加密这个摘要,得到签名,附在消息后面发出;
③ 乙收到后,用同样的算法对消息再算一次摘要;
④ 乙用甲的公钥解密签名,还原出甲当初算的摘要;
⑤ 两个摘要一致 → 消息完整且确实来自甲。
B 错:甲的私钥只有甲自己知道,乙拿不到;用私钥“验证”在逻辑上也说不通。
C、D 错:乙的密钥对与“验证甲的签名”无关。乙的私钥用于乙自己签名,或解密发给自己的密文。
口诀:谁的签名,用谁的公钥验。签名者是甲,就用甲的公钥。
( )不是数字签名的作用。
查看答案与解析收起答案与解析
D——不是数字签名的作用:签名验证的是发送方,不是接收方(验证接收者合法性是身份认证/证书的事)。A、B、C 是数字签名的三个标准作用(真实性、不可否认性、完整性)。
在安全通信中,S 将所发送的信息使用(8)进行数字签名,T 收到该消息后可利用(9)验证该消息的真实性。
查看答案与解析收起答案与解析
(8)选 B(S 的私钥)。数字签名必须用签名者自己的私钥,这是签名不可伪造、不可抵赖的根基:只有 S 持有自己的私钥,别人伪造不出来,S 也无法否认。
(9)选 A(S 的公钥)。T 收到消息后,用S 的公钥解密签名、还原摘要,再与自己算出的摘要比对,一致就说明消息完整且来自 S。
四个选项其实构成一个 2×2 的选择:签名方 S 用自己的私钥,验证方 T 用对方的公钥。
换成加密场景就相反了:如果 S 要给 T 发加密消息,S 要用 T 的公钥加密,T 用自己的私钥解密。
这两个场景最容易混,记住方向的差别:
签名:用自己的私钥签,对方用你的公钥验——目的是“证明是我”。
加密:用对方的公钥加密,对方用自己的私钥解——目的是“只有他能看”。
一句话:私钥永远自己用,公钥永远给别人用。抓住这条,四个组合不会选错。
某网站向 CA 申请了数字证书,用户通过( )来验证网站的真伪。
查看答案与解析收起答案与解析
A. CA 的签名——对,用户用 CA 的公钥验证证书上 CA 的签名,从而确认证书确实是 CA 签发的(网站公钥可信)。B. 证书中的公钥——那是网站的公钥本身,不是验证工具。C、D——网站的私钥不会公开,用户的公钥与此无关。
用户 A 从 CA 获得用户 B 的数字证书,并利用( )验证数字证书的真实性。
查看答案与解析收起答案与解析
选 C(CA 的公钥)。数字证书是 CA 签发的,所以验证它要用CA 的公钥。
数字证书里装的内容:持有者的身份信息、持有者的公钥、有效期、序列号,以及最关键的——CA 对以上内容的数字签名。
验证过程:用户 A 拿到 B 的证书后,用 CA 的公钥去解验证书里的签名,能解开且摘要一致,就说明:① 这张证书确实是 CA 签发的,没被伪造;② 证书内容没被篡改;③ 里面的公钥确实属于 B。
A、B 错:B 的公钥/私钥是证书里承载的内容,不是验证证书的工具。用 B 的公钥只能验证 B 的签名,验证不了 CA 的签名。
D 错:CA 的私钥是 CA 的命根子,绝不会公开,用户拿不到。
这条链要理清:CA 用私钥签证书 → 用户用 CA 的公钥验证书 → 信任证书里的公钥 → 用这个公钥验证 B 的签名。整个 PKI 体系的信任就是这么一层层传下来的,根信任点就是内置在浏览器/操作系统里的 CA 公钥。
从认证中心 CA 获取用户 B 的数字证书,该证书用( )作数字签名;从用户 B 的数字证书中可以获得 B 的公钥。
查看答案与解析收起答案与解析
选 B(CA 的私钥)。数字证书是 CA 用自己的私钥签名的——这是整个 PKI 信任链的起点。
签名与验证是一对:签名用私钥,验证用公钥。
CA 签发证书时,对“持有者信息 + 持有者公钥 + 有效期”等内容计算摘要,再用 CA 的私钥加密摘要,附在证书后面。用户拿到证书后,用 CA 的公钥解开这个签名,摘要对得上就说明证书没被篡改、确实由该 CA 签发。
A 错:CA 的公钥是用来验证签名的,不是用来签名的。签名必须用私钥,否则谁都能伪造。
C、D 错:B 的公钥是证书承载的内容(题干后半句“从证书中可以获得 B 的公钥”已经点明),B 的私钥只有 B 自己知道,CA 不可能拿它来签。
理清这条链:CA 私钥签 → CA 公钥验 → 信任证书里的 B 公钥 → 用 B 公钥验 B 的签名。私钥永远只在自己手里,公钥才公开流转。
用户 B 收到用户 A 带数字签名的消息 M,为了验证 M 的真实性,首先需要从 CA 获取用户 A 的数字证书,并利用(8)验证该证书的真伪,然后利用(9)验证 M 的真实性。
查看答案与解析收起答案与解析
(8)选 A(CA 的公钥)。第一步是验证 A 的证书真伪。证书由 CA 签发,所以要用 CA 的公钥去解验证书上的签名。
(9)选 C(A 的公钥)。证书验证通过后,就确认了证书里的公钥确实属于 A。第二步用这个公钥去验证消息 M 上的数字签名。
两步的先后顺序不能颠倒:先确认“这把公钥真是 A 的”,再用它验签。如果跳过第一步,攻击者可以伪造一张“A 的公钥”塞给你,之后所有验证都失去意义——这正是中间人攻击的典型路径。
B、D 错:B 的私钥和公钥都与“验证 A 的签名”无关。
整条链可以画成:CA 私钥签证书 → B 用 CA 公钥验证书 → 取出 A 的公钥 → 用 A 的公钥验消息签名。
记住这个两级结构:第一级验“身份”,第二级验“消息”。真题 120、126 考第一级,真题 116、118 考第二级。
PKI 体制中,保证数字证书不被篡改的方法是( )。
查看答案与解析收起答案与解析
A——对,只有 CA 掌握自己的私钥,别人没有 CA 私钥就改不了证书内容再冒充 CA 签名——篡改即被发现。B——错,公钥是公开的,谁都能“用 CA 公钥签名”(但那不是 CA 签的)。C、D——错,证书主人不签自己的证书。
假定用户 A、B 分别在两个 CA 处取得了各自的证书,下面( )是 A、B 互信的必要条件。
查看答案与解析收起答案与解析
A 的证书由 CA1 签、B 的证书由 CA2 签——A 要信 B 的证书,得先信 CA2;A 手里必须有 CA2 的公钥才能验证 CA2 的签名。所以两个 CA 互换公钥是互信的前提,选 D。A、B——私钥绝不互换(互换就失去意义);公钥互换只解决 A、B 之间,不解决 CA 之间的信任链。C——CA 的私钥绝不能互换。
用户 A 和 B 要进行安全通信,通信过程需确认双方身份和消息不可否认。A 和 B 通信时可使用(9)来对用户的身份进行认证;使用(10)确保消息不可否认。
查看答案与解析收起答案与解析
(9)选 A(数字证书)。(10)选 D(数字签名)。
题干其实是两个不同的安全需求,要分清:
确认双方身份 → 需要“证明你是你”。数字证书由可信第三方 CA 签发,把“身份”和“公钥”绑定在一起,验证证书就确认了对方身份。所以(9)选数字证书。
消息不可否认 → 需要“发了就赖不掉”。数字签名用发送方私钥生成,只有他本人能签,事后无法抵赖;接收方用公钥验证,也能确认消息未被篡改。所以(10)选数字签名。
B 消息加密:只解决保密性(别人看不懂),不解决“你是谁”和“你赖不掉”。
C 用户私钥:是工具,不是手段,本身要保密,不能作为“认证方式”。
四者的分工记成一张表:证书管身份,签名管不可否认,加密管保密,摘要管完整。
某电子商务网站向 CA 申请了数字证书,用户可以通过使用(10)验证(11)的真伪来确定该网站的合法性。
查看答案与解析收起答案与解析
(10)选 A(CA 的公钥)。用户要验证网站证书的真伪,而证书是 CA 签发的,所以用 CA 的公钥去解验证书上的签名。
(11)选 B(CA 的签名)。验证的具体对象,是证书里CA 的数字签名——用 CA 的公钥去解它,能解开且摘要对得上,就说明证书合法。
这两空其实是一件事的两面:用“CA 的公钥”去验“CA 的签名”。
C、D 错:网站的公钥/私钥是证书承载的内容,不是验证证书的工具。网站的公钥要等证书验通过之后才能信任;网站的私钥只有网站自己持有,用户不可能拿到。
浏览器里的实际流程:访问 HTTPS 网站 → 服务器下发证书 → 浏览器检查证书链 → 用内置的根 CA 公钥逐级验证签名 → 通过则建立加密通道。
如果证书验不过(过期、域名不匹配、签发者不认识),浏览器就会弹出“您的连接不是私密连接”的警告——这就是这道题在现实中的样子。
利用报文摘要算法生成报文摘要的目的是(7)。
查看答案与解析收起答案与解析
摘要是消息的“指纹”(MD5 128 位、SHA-1 160 位),接收方重算摘要比对即可发现报文是否被改——防篡改(完整性),选 D。A——身份验证靠签名/证书;B——加密才防窃听;C——防否认靠数字签名(摘要只是签名的原材料)。
下列算法中,不属于公开密钥加密算法的是( )。
查看答案与解析收起答案与解析
选 D。这道题和真题 139 是同一道题的两个年份版本,判断方法完全一样。
A ECC:椭圆曲线密码,基于椭圆曲线离散对数难题,属于公开密钥算法,密钥短、强度高。
B DSA:数字签名算法,基于离散对数难题,专门用于签名,属于公开密钥体制。
C RSA:基于大整数分解难题,最经典的公开密钥算法。
D DES:数据加密标准,对称加密算法,加解密同一把密钥(实际有效 56 位)。它不属于公开密钥算法。
判断技巧:看名字。带 RSA/DSA/ECC/DH 的是非对称,带 DES/AES/IDEA/RC4 的是对称。考场上不用推原理,认名字最快。
这道题在多个年份重复出现,是命题人认定的基础送分题,必须稳拿。
可用于数字签名的算法是( )。
查看答案与解析收起答案与解析
A. RSA——对,非对称算法才能签名(私钥签、公钥验)。B. IDEA、C. RC4——对称加密,无签名能力。D. MD5——摘要算法,只生成指纹,本身不能签名(签名 = 私钥加密摘要)。
以下加密算法中适合对大量的明文消息进行加密传输的是( )。
查看答案与解析收起答案与解析
大量数据加密用对称算法(快)。D. RC5——对称算法,对。A. RSA——非对称,慢几百倍,只适合加密密钥。B. SHA-1、C. MD5——摘要算法,不能加密(不可逆)。
DES 是( )算法。
查看答案与解析收起答案与解析
选 B(共享密钥加密)。DES 是对称加密算法,加密和解密用同一把密钥,所以叫“共享密钥”。
DES 的基本情况:明文按 64 位分组,密钥 64 位(其中 8 位是奇偶校验位,实际有效 56 位),经过 16 轮置换和代换得到密文。解密用同一把密钥、同样的流程反着走。
A 错:公开密钥(非对称)算法加密和解密用不同的密钥,典型是 RSA、ECC、DSA。DES 是同一把钥匙。
C 错:数字签名是一种用途,不是加密算法的类别。DES 本身不做签名(签名需要非对称算法)。
D 错:认证是安全服务的目标,不是算法类型。
顺带记:DES 的 56 位密钥在今天的算力下已不安全,所以有了 3DES(做三次 DES)和 AES(128/192/256 位,目前主流)。
判别技巧:名字带 DES/AES/IDEA/RC4 的是对称,带 RSA/ECC/DSA/DH 的是非对称。
MD5 是(9)算法,对任意长度的输入计算得到的结果长度为(10)位。
查看答案与解析收起答案与解析
(9)选 B(摘要)。(10)选 B(128)。
MD5 的全称是 Message-Digest Algorithm 5,即“消息摘要算法第 5 版”。作用是把任意长度的输入压缩成固定长度的输出(128 位),这个输出叫摘要或指纹。
三个关键性质:
固定长度:不管输入是 1 字节还是 1GB,输出永远是 128 位(16 字节)。
单向不可逆:能从原文算出摘要,但无法从摘要还原原文。
抗碰撞:不同输入应得到不同摘要(但 MD5 已被证明可构造碰撞,现在不推荐用于安全场景)。
A 路由选择:是网络层的功能,与摘要无关。C 共享密钥、D 公开密钥:都是加密算法,能还原明文;摘要算法不可逆,不是加密。
(10)的四个选项对应不同算法的输出长度,容易混,一起记:
MD5 → 128 位;SHA-1 → 160 位;SHA-256 → 256 位;DES 密钥 → 56 位(A 选项就是拿它来混淆的,那是密钥长度,不是摘要长度)。
下列算法中,不属于公开密钥加密算法的是( )。
查看答案与解析收起答案与解析
选 D。这道题考“哪些算法属于公开密钥(非对称)体制”。
公开密钥算法的特点是加密和解密用不同的密钥(公钥加密、私钥解密),安全性建立在数学难题上:
A ECC(椭圆曲线密码):基于椭圆曲线离散对数问题,属于公开密钥算法,密钥短、强度高,广泛用于移动端和 TLS。
B DSA(数字签名算法):基于离散对数问题,专门用于数字签名,属于公开密钥体制。
C RSA:基于大整数分解难题,是最经典的公开密钥算法,既能加密也能签名。
D DES(数据加密标准):对称加密算法,加密和解密用同一把密钥,密钥长度 56 位。它不属于公开密钥算法。
顺带记:DES 已被认为不安全,其后继是 3DES 和 AES,AES 是目前主流的对称加密算法。
判断诀窍:名字里带“RSA/DSA/ECC/DH”的基本都是非对称,带“DES/AES/IDEA/RC4”的都是对称。考场上认名字比记原理快。
以下关于认证和加密的叙述中,错误的是( )。
查看答案与解析收起答案与解析
A——对,加密保保密性。B——对,认证保真实性。C——错误:加密防被动攻击(窃听),认证防主动攻击(冒充、篡改、重放)——说“都可以阻止被动攻击”不对,选 C。D——对。
下列算法中属于非对称加密算法的是( )。
查看答案与解析收起答案与解析
选 B(RSA)。RSA 是最经典的非对称(公开密钥)加密算法,基于大整数分解难题:两个大素数相乘很容易,把乘积分解回两个素数极难。
A 错:DES 是对称算法,加解密同一把密钥,密钥 56 位。
C 错:AES 也是对称算法,是 DES 的继任者,支持 128/192/256 位密钥,目前应用最广。
D 错:MD5 是消息摘要算法,不是加密算法。它把任意长度输入压成 128 位固定长度的摘要,用于完整性校验,不可逆。而且 MD5 已被证明存在碰撞,安全性不足,现在多用 SHA-256。
这道题把三类算法放在一起考,正好理清:
对称加密:DES、3DES、AES、IDEA、RC4——加解密同一把钥匙,速度快,适合大数据量。
非对称加密:RSA、ECC、DSA、DH——公私钥配对,速度慢,适合密钥交换和签名。
摘要算法:MD5、SHA-1、SHA-256——单向不可逆,用于完整性校验和签名前的“压缩”。
实际系统里三者配合:用非对称算法协商出对称密钥,用对称算法加密数据,用摘要算法保证完整性。
AES 是一种( )算法。
查看答案与解析收起答案与解析
C. 分组加密——对,AES 是分组(对称)加密算法(分组长度 128 位,密钥 128/192/256 位),替代 DES。它不是公钥(那是 RSA),不是流密码(RC4 是流密码),也不是摘要(MD5)。
十、系统可靠性:串联乘,并联“一减全坏”
可靠性公式只有两个(教材 1.3 节):
- 串联系统:所有部件都正常,系统才正常——
R = R1 × R2 × … × Rn。 - 并联系统:只要有一个部件正常,系统就正常——
R = 1 − (1−R1)(1−R2)…(1−Rn)。
n 个相同部件:串联 R^n;并联 1 − (1−R)^n。混合系统“先算并联子系统,再把子系统当成一个部件去串联”。
某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为 R,则该系统的千小时可靠度为( )。(结构:1 个部件与两个“二并联”子系统依次串联)
查看答案与解析收起答案与解析
推导:① 每个二并联子系统的可靠度 = 1−(1−R)²(并联公式,只要有一个正常系统就正常);② 两个子系统与最左边的单个部件串联 → R × (1−(1−R)²) × (1−(1−R)²) = R(1−(1−R)²)²,选 D。
A. R³——三部件串联(没有并联);B——只算了一个并联块;C——正确。
某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为 R,则该系统的千小时可靠度为( )。(结构:两个“二并联”子系统与中间一个部件依次串联)
查看答案与解析收起答案与解析
推导:结构与 2010 上等价(并联块的位置换了)——两个二并联子系统与中间单个部件串联:R × (1−(1−R)²) × (1−(1−R)²) = R(1−(1−R)²)²,选 D。
某系统由下图所示的冗余部件构成。若每个部件的千小时可靠度都为 R,则该系统的千小时可靠度为( )。(结构:三个部件并联,两个部件并联,两个子系统再串联)
查看答案与解析收起答案与解析
选 B。可靠性计算只有两条公式,记牢就能秒杀。
串联:所有部件都必须正常,系统才正常。R = R₁ × R₂ × … × Rₙ,部件越多越不可靠。
并联:只要有一个部件正常,系统就正常。R = 1 − (1−R₁)(1−R₂)…(1−Rₙ),部件越多越可靠。
本题结构是“三并联”和“二并联”两个子系统再串联:
① 左块三个部件并联:1 − (1−R)³
② 右块两个部件并联:1 − (1−R)²
③ 两个子系统串联,相乘:(1 − (1−R)³)(1 − (1−R)²)
A 错:R⁵ 是“五个部件全部串联”的结果,与图不符。
C 错:把串联当成了减法。串联是相乘,不是相减。
D 错:R³ + R² 是把并联当成了相加。并联的可靠性一定小于 1,而 R³+R² 在 R 较大时会超过 1,显然不可能。
解这类题的顺序:先看整体是串还是并 → 再逐层套公式 → 从最内层往外算。图上并排画在一起的是并联,首尾相接的是串联。
某系统由下图所示的部件构成,每个部件的千小时可靠度都为 R,该系统的千小时可靠度为( )。(结构:三并联 + 二并联再串联)
查看答案与解析收起答案与解析
选 C。这题和 2017 上半年那道是同一张图、同一套算法,只是选项顺序变了。
结构:三个部件并联成一个子系统,两个部件并联成另一个子系统,两个子系统再串联。
公式分两步:
并联:R并 = 1 − (1−R)ⁿ。三并联是 1 − (1−R)³,二并联是 1 − (1−R)²。
串联:R串 = R₁ × R₂。所以整体是 [1 − (1−R)³] × [1 − (1−R)²]。
按官方答案选 C(原选项为公式图)。
要提醒的是:并联的可靠性一定大于单个部件,串联一定小于。用这个性质可以快速排除错误选项——凡是结果可能大于 1 的(比如 R³+R²),一定是把并联当成了相加。
这道题连续两年出现(2017 上、2018 下),图形结构完全一样。把“三并联 × 二并联”这个组合记住,考场上不用重新推。
某系统由 3 个部件构成,每个部件的千小时可靠度都为 R,该系统的千小时可靠度为 R(1−(1−R)²),则该系统的构成方式是( )。
查看答案与解析收起答案与解析
推导:R(1−(1−R)²) 中的 (1−(1−R)²) 是两个部件并联,再乘一个 R 就是与第三个部件串联——即“前两个部件并联后,再与第三个部件串联”,选 C。
A. 串联 → R³;B. 并联 → 1−(1−R)³;D——“第一个部件与后两个部件并联构成的子系统串联”在数学上同样是 R(1−(1−R)²),但题目的结构图对应 C 的画法——按官方答案选 C。
某系统的可靠性结构框图如下图所示,假设部件 1、2、3 的可靠度分别为 0.90、0.80、0.80(部件 2、3 为冗余系统)。若要求该系统的可靠度不小于 0.85,则进行系统设计时,部件 4 的可靠度至少应为( )。
查看答案与解析收起答案与解析
计算过程:① 部件 2、3 并联:1 − (1−0.8)² = 1 − 0.04 = 0.96;② 与部件 1 串联:0.9 × 0.96 = 0.864;③ 再与部件 4 串联,要求 0.864 × R4 ≥ 0.85 → R4 ≥ 0.85 / 0.864 ≈ 0.9838。
A——正是 0.85 ÷ 0.864 的表达式,对。B——分母的并联公式写成了加法;C——把除法写成了乘法;D——并联公式少了一个 1−。
十一、性能评价与杂题:那些“送分但容易忘”的点
编写汇编语言程序时,下列寄存器中程序员可访问的是( )。
查看答案与解析收起答案与解析
选 A(程序计数器 PC)。在汇编语言层面,程序员能直接访问的是程序计数器(以及通用寄存器、标志寄存器),而 IR、MDR、MAR 属于 CPU 内部的工作寄存器,对程序员透明。
A 程序计数器(PC):存放下一条要执行的指令地址。汇编程序员可以用它实现跳转、计算相对偏移,很多体系结构里都有指令能读写 PC。
B 指令寄存器(IR):存放当前正在执行的指令,由 CPU 内部自动装载。程序员无法也不应该直接访问——你没法“读一条正在执行的指令”。
C 存储器数据寄存器(MDR):暂存与主存交换的数据,是 CPU 与内存之间的缓冲,由硬件控制。
D 存储器地址寄存器(MAR):暂存要访问的主存地址,同样由硬件自动设置。
“透明”这个词在这里是关键:对程序员透明 = 看不见、不用管,不是说“看得见”。IR、MDR、MAR 都属于这一类,值由硬件在取指、访存时自动填好。
可以这样理解:PC 决定“程序走到哪”,是程序逻辑的一部分,所以程序员能碰;IR/MAR/MDR 是“CPU 干活时的草稿纸”,程序逻辑管不着。
指令寄存器的位数取决于( )。
查看答案与解析收起答案与解析
B——对,IR 要装下整条指令,所以位数 = 指令字长。A——存储器容量决定地址寄存器/MAR 的位数;C——数据总线宽度决定一次传输的位数;D——地址总线宽度决定寻址范围。
若计算机存储数据采用的是双符号位(00 表示正号、11 表示负号),两个符号相同的数相加时,如果运算结果的两个符号位经( )运算得 1,则可断定这两个数相加的结果产生了溢出。
查看答案与解析收起答案与解析
选 D(逻辑异或)。双符号位(变形补码)判溢出的规则是:两个符号位异或为 1 则溢出。
原理:双符号位用两位表示符号,00 表示正、11 表示负,正常情况下两位始终相同。运算结果如果两位不同,说明发生了溢出:
01:本该是正数,数值部分溢到了符号位 → 正溢出(结果超过最大正数)。
10:本该是负数,同样溢到符号位 → 负溢出(结果小于最小负数)。
所以判断方法就是看这两位“是否相同”,不同则溢出——而“不同则为 1”正是异或的定义。
A 错:逻辑与只在两位都为 1 时得 1(即 11),那表示负数,不是溢出。
B 错:逻辑或只要有一位为 1 就得 1,00 时得 0、11 时也得 1,无法区分正常与溢出。
C 错:同或(异或的非)在两位相同时得 1,恰好和溢出判断相反。
顺带记单符号位的判溢出方法:最高位进位与次高位进位异或为 1 则溢出。双符号位法相当于把这个判断“可视化”了——直接看两个符号位是否一致即可。
计算机采用分级存储体系的主要目的是为了解决( )问题。
查看答案与解析收起答案与解析
选 D。分级存储体系(寄存器 → Cache → 主存 → 外存)的存在理由,就是同时兼顾三个互相矛盾的指标。
矛盾在哪:
速度:寄存器最快,Cache 次之,主存再次,外存最慢——差几个数量级。
容量:反过来,寄存器最小(几十字节),外存最大(TB 级)。
成本:越快越贵,每字节价格也差几个数量级。
如果只用最快的,成本高到不可承受;只用最便宜的,慢到没法用。分级存储的做法是:把最常用的数据放在最快最贵的小容量层,把不常用的放在最慢最便宜的大容量层,靠“局部性原理”让整体表现接近最快那层,成本接近最便宜那层。
A 错:主存容量不足只是其中一个维度,没覆盖速度和成本。
B 错:可靠性靠校验、冗余、RAID 解决,不是分级存储的目的。
C 错:外设访问效率靠接口、缓冲、DMA 优化,与存储层次无关。
这道题的干扰设计很典型:A 看起来“很像”,但它只说了三分之一。凡是问“主要目的”的题,要选能覆盖全局的那个。
计算机中 CPU 对其访问速度最快的是( )。
查看答案与解析收起答案与解析
选 C(通用寄存器)。CPU 访问速度的排序是:寄存器 > Cache > 主存 > 辅存(硬盘)。
通用寄存器:就在 CPU 内部,和运算器直接相连,访问延迟通常只有 1 个时钟周期甚至更短,是最快的存储部件。数量很少(x86-64 只有 16 个通用寄存器),所以编译器要精心分配。
Cache:也在 CPU 内部或紧邻,访问延迟几个到十几个时钟周期,比主存快一个数量级,但比寄存器慢。
内存(主存):需要经过系统总线访问,延迟几十到上百个时钟周期。
硬盘:机械硬盘寻道加旋转延迟是毫秒级,SSD 也是微秒级,比内存慢几个数量级。
A 错:内存比 Cache 和寄存器都慢。B 错:Cache 很快,但仍慢于寄存器。D 错:硬盘是最慢的一档。
这道题的价值在于建立“速度—容量—成本”的直觉:越快的越小越贵,越慢的越大越便宜。寄存器是这条链的顶端,硬盘是底端。
安全需求可划分为物理线路安全、网络安全、系统安全和应用安全。下面的安全需求中属于系统安全的是(8),属于应用安全的是(9)。
查看答案与解析收起答案与解析
(8)选 C(漏洞补丁管理)。(9)选 D(数据库安全)。
安全需求分四层,从下往上:
物理安全:保护机房、设备、线路的物理实体。机房安全(A)、设备防雷击、门禁、防火防水都属于这一层。
网络安全:保护网络传输和网络设备。入侵检测(B)、防火墙、VPN、流量控制都属于这一层。
系统安全:保护操作系统和基础软件的稳定运行。漏洞发现与补丁管理(C)、操作系统加固、账号权限管理、日志审计属于这一层——补丁打的是操作系统的漏洞。
应用安全:保护具体业务应用和数据。数据库安全(D)、Web 应用防护、身份认证、数据加密属于这一层——数据库承载的是业务数据。
判别方法:看这个措施作用在哪一层。打补丁修系统软件,所以是系统安全;保护数据库里的业务数据,所以是应用安全。
易错点:入侵检测常被误认为“系统安全”,其实它监控的是网络流量,属于网络安全。这一项是本题最主要的干扰。
( )不属于主动攻击。
查看答案与解析收起答案与解析
选 A(流量分析)。主动攻击和被动攻击的分界线是:是否修改数据或影响系统运行。
被动攻击:只“看”,不改。典型是窃听和流量分析——攻击者截获数据包,观察通信的频率、时长、包大小等特征,从中推断信息(比如“这两个 IP 每晚 10 点大量通信,可能在备份”)。数据本身一个字节都没动,所以属于被动攻击,且难以察觉。
主动攻击:要“动手”,会改变数据流或系统状态。三类典型:
B 重放:把截获的合法消息再发一遍,冒充合法操作(比如重放一次转账请求)。
C IP 地址欺骗:伪造源 IP,冒充他人身份发数据包。
D 拒绝服务:用大量请求耗尽资源,让正常用户无法访问。
还有一类常考的是篡改(修改数据包内容)。
防御思路也不同:被动攻击靠加密(让他看不懂),主动攻击靠认证和完整性校验(让他改不了、冒充不了)。
下列攻击行为中,属于典型被动攻击的是( )。
查看答案与解析收起答案与解析
B. 会话拦截——对(按本题官方解析归为被动攻击):在通信过程中截获会话内容,不主动篡改数据。A(拒绝服务)、C(系统干涉)、D(修改数据)都是主动攻击。
VLIW 是( )的简称。
查看答案与解析收起答案与解析
D. Very Long Instruction Word——对,超长指令字:把多条独立操作打包进一条长指令,由编译器静态调度。A——CISC;B——VLSI;C——SIMD。
移位指令中的( )指令的操作结果相当于对操作数进行乘 2 操作。
查看答案与解析收起答案与解析
选 A(算术左移)。左移一位相当于乘以 2,这是二进制位运算的基本性质。
原理:二进制数左移一位,每一位的权都升一级(2⁰→2¹、2¹→2²……),整体值变为原来的 2 倍。比如 0011(3)左移一位得 0110(6)。
为什么强调“算术”左移?因为移位分两类:
算术移位:把操作数当作有符号数,移位时保持符号位不变。算术左移低位补 0,符号位不动——只要不溢出,结果就是乘 2。
逻辑移位:把操作数当作无符号数,所有位一起移,空出的位补 0。逻辑左移同样相当于乘 2,但它不关心符号。
B 错:逻辑右移是除以 2(无符号),不是乘 2。
C 错:算术右移也相当于除以 2(有符号),且高位补符号位,保持负数仍为负。
D 错:带进位循环左移是把移出的最高位移进进位标志、进位标志移入最低位,是“循环”而非“乘 2”,结果不是原值的 2 倍。
记忆:左移乘 2、右移除 2;算术移位管符号,逻辑移位不管,循环移位不改变数值的倍数关系。
在程序运行过程中,CPU 需要将指令从内存中取出并加以分析和执行。CPU 依据( )来区分在内存中以二进制编码形式存放的指令和数据。
查看答案与解析收起答案与解析
选 A(指令周期的不同阶段)。内存里的指令和数据都是二进制 0/1,形式上看不出区别,CPU 靠“当前处于指令周期的哪个阶段”来区分。
指令周期分两个大阶段:
取指阶段:CPU 把 PC 指向的内容当作指令读进来,送进指令寄存器 IR,再译码执行。这个阶段读出来的就是指令。
执行阶段:根据指令里的地址去读操作数,这时读出来的内容是数据。
同样一段二进制,在取指阶段被当指令,在执行阶段被当数据——区别不在内容,而在CPU 此刻处于哪个阶段。
B 错:寻址方式决定的是“怎么找到操作数”,不是“怎么区分指令和数据”。
C 错:操作码译码发生在已经取出指令之后,是“取出之后怎么解释”,不是“取的时候怎么区分”。这个选项最容易误选。
D 错:存储单元本身不携带“我是指令还是数据”的标记,内存是统一编址的。
这也解释了冯·诺依曼体系的“存储程序”思想:指令和数据混存在同一存储器里,靠时序(阶段)而不是靠位置来区分。
在网络设计和实施过程中要采取多种安全措施,其中( )是针对系统安全需求的措施。
查看答案与解析收起答案与解析
选 C(漏洞发现与补丁管理)。四层安全需求的划分是:物理安全、网络安全、系统安全、应用安全。
物理安全:机房、设备、线路的实体防护。A 设备防雷击属于这一层。
网络安全:网络传输与网络设备的防护。B 入侵检测、D 流量控制属于这一层——入侵检测监控流量,流量控制管理带宽。
系统安全:操作系统和基础软件的防护。C 漏洞发现与补丁管理属于这一层——补丁修的是操作系统/基础软件的漏洞,账号权限、日志审计也归这里。
应用安全:业务应用与数据的防护,比如数据库安全、Web 防护、身份认证。
判别方法:看措施作用的对象。打补丁针对系统软件本身,所以是系统安全;防雷击针对物理设备;入侵检测和流量控制针对网络流量。
这道题和真题 149 是同一知识点,只是把“数据库安全”换成了“流量控制”作干扰。两道题连做,四层划分就清楚了。
要判断字长为 16 位的整数 a 的低四位是否全为 0,则( )。
查看答案与解析收起答案与解析
完整分析:用 0x000F 做掩码(低 4 位为 1,其余为 0),与运算后 a 的低 4 位保留、高 12 位清零——结果为 0 说明低 4 位全 0。选 A。
B——或运算不能“提取”低 4 位;C——异或 0xFFF0 后比较,判断的是高 12 位;D——与 0xFFF0 后保留的是高 12 位,判断的不是低 4 位。
某计算机系统的 CPU 主频为 2.8GHz。某应用程序包括 3 类指令,各类指令的 CPI 及指令比例如下:指令 A 的 CPI 为 4、占比 35%;指令 B 的 CPI 为 2、占比 45%;指令 C 的 CPI 为 6、占比 20%。执行该应用程序时的平均 CPI 为(4);运算速度用 MIPS 表示,约为(5)。
查看答案与解析收起答案与解析
计算过程:
① 平均 CPI = Σ(CPIᵢ × 占比ᵢ) = 4×0.35 + 2×0.45 + 6×0.20 = 1.4 + 0.9 + 1.2 = 3.5,选 C。
② MIPS = 主频(MHz) ÷ CPI = 2800 ÷ 3.5 = 800,选 B。
(4)B 是漏算了 C 类指令的结果;(5)D 是把主频当成 2.8GHz=2800MHz 之外又乘了系数。
十二、考前速记:25 条“看到就选”
- 为 ALU 提供数据、暂存运算结果 → 累加寄存器 AC。
- 属于 ALU 的部件 → 加法器。
- 装当前指令 → IR;装下一条指令地址 → PC;翻译操作码 → ID。
- 对用户透明 → IR;程序员可访问 → PC。
- 取指第一步 → PC 送地址总线。
- 容量 = 末地址 − 首地址 + 1。
- 按字编址 → 字节数 ÷ 字长字节数。
- 芯片数 → 总容量 ÷ 单片容量,位宽不够要 ×2。
- 补码范围 →
−2^(n−1) ~ 2^(n−1)−1。 - 移码 = 补码符号位取反。
- 浮点:阶码管范围,尾数管精度;对阶:小阶向大阶,尾数右移。
- 寻址速度:立即 > 寄存器 > 直接 > 寄存器间接 > 间接。
- 海明码:
2^k − 1 ≥ n + k,码距 3。 - 奇偶/CRC:码距 2,只检错不纠错。
- RISC:指令少、定长、寻址少、硬布线、寄存器多、适合流水线。
- 流水线:周期 = 最长段;
T = 首条总时间 + (n−1)×周期。 - 主存 DRAM(要刷新),Cache SRAM(不刷新),Flash 按块删、可替 ROM、不替主存。
- Cache 映射:直接冲突多、全相联冲突少、组相联折中;地址映射 硬件自动完成。
- 中断向量 = 中断服务程序入口地址;响应时间 = 请求到进入处理程序;保存现场 = 正确返回。
- DMA:主存↔外设,块传输,每字占 一个总线周期,指令结束时响应。
- 公钥加密、私钥解密 → 保密;私钥签名、公钥验证 → 认证。
- 证书:CA 私钥签、CA 公钥验,证书里装用户公钥。
- 摘要:MD5 128 位,SHA-1 160 位,只防篡改。
- 对称:DES/3DES/AES/IDEA/RC4/RC5;非对称:RSA/ECC/DSA。
- 加密防被动,认证防主动;流量分析是被动,重放/DoS 是主动。
十三、答案速查表
CPU 组成
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2014 上 | 1 | D | 2014 下 | 3 | B |
| 2017 上 | 1 | B | 2009 下 | 1 | B |
| 2010 上 | 5 | C | 2011 下 | 5 | B |
| 2011 下 | 6 | B | 2012 下 | 1 | B |
| 2019 上 | 1 | A | 2010 上 | 1 | B |
| 2011 上 | 1 | C | 2016 下 | 2 | C |
| 2018 下 | 1 | B | 2020 下 | 2 | A |
| 2021 上 | 1 | A |
内存编址
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2010 下 | 4 | B | 2012 上 | 2 | D |
| 2013 上 | 5、6 | B、C | 2014 上 | 6 | A |
| 2014 下 | 4 | D | 2015 下 | 5 | B |
| 2016 上 | 5 | C | 2017 下 | 3 | B |
| 2019 下 | 4、5 | D、B |
码制与浮点
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2009 上 | 5 | C | 2010 上 | 20 | B |
| 2010 下 | 2 | C | 2011 上 | 4 | B |
| 2014 上 | 2 | B | 2016 上 | 3 | B |
| 2018 下 | 3 | D | 2009 下 | 3、4 | C、D |
| 2011 上 | 5 | A | 2012 下 | 3 | B |
| 2015 上 | 1 | A | 2015 下 | 3 | B |
| 2016 下 | 3 | B | 2018 上 | 1 | D |
| 2020 下 | 3 | B | 2021 下 | 6 | B |
寻址、校验码、指令系统
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2011 上 | 2 | D | 2011 下 | 1 | A |
| 2012 上 | 4 | B | 2013 下 | 6 | C |
| 2015 下 | 4 | C | 2021 下 | 1 | A |
| 2009 下 | 5 | A | 2017 下 | 5 | A |
| 2018 下 | 5 | C | 2009 上 | 1 | A |
| 2014 上 | 3 | C | 2016 下 | 4 | C |
| 2017 上 | 5 | C | 2018 上 | 4、5 | D、B |
| 2012 下 | 2 | A | 2019 上 | 5 | D |
| 2009 下 | 2 | A | 2013 下 | 5 | A |
| 2014 下 | 5 | A | 2015 下 | 6 | A |
| 2019 上 | 6 | B | 2021 上 | 2 | D |
流水线
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2015 上 | 6 | D | 2017 下 | 2 | C |
| 2018 上 | 6 | C | 2018 下 | 6 | A |
| 2009 上 | 6 | B | 2012 上 | 5、6 | C、D |
| 2013 下 | 4 | C | 2014 上 | 4、5 | D、B |
| 2016 下 | 5 | D | 2019 下 | 6 | B |
存储与 Cache
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2009 上 | 3 | B | 2012 上 | 3 | C |
| 2012 下 | 4 | C | 2013 上 | 1 | A |
| 2015 下 | 2 | A | 2017 下 | 4 | A |
| 2019 上 | 3 | C | 2021 上 | 4 | C |
| 2021 下 | 5 | B | 2009 下 | 6 | B |
| 2015 上 | 3 | A | 2016 上 | 2 | A |
| 2017 上 | 6 | A | 2019 下 | 1 | B |
| 2011 下 | 3 | A | 2012 上 | 1 | A |
| 2013 下 | 1 | A | 2016 下 | 6 | D |
| 2017 下 | 1 | C | 2020 下 | 1 | D |
I/O 与中断
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2013 上 | 2 | C | 2013 上 | 3 | D |
| 2015 上 | 4 | D | 2018 上 | 2、3 | B、C |
| 2019 下 | 3 | C | 2020 下 | 6 | D |
| 2021 下 | 4 | C | 2010 上 | 3 | C |
| 2017 下 | 6 | B | 2021 上 | 6 | B |
| 2021 下 | 3 | A | 2010 下 | 1 | C |
| 2012 下 | 5 | D | 2013 上 | 4 | C |
| 2015 下 | 1 | A | 2017 上 | 3 | D |
| 2019 上 | 2 | C | 2021 上 | 3 | B |
总线
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2009 上 | 4 | A | 2010 下 | 3 | A |
| 2011 上 | 3 | C | 2011 下 | 4 | C |
| 2012 下 | 6 | C | 2014 下 | 1 | B |
| 2015 上 | 5 | C | 2016 上 | 6 | C |
| 2021 下 | 2 | D |
安全与加密
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2010 下 | 66、67 | A、D | 2009 上 | 8 | D |
| 2012 上 | 7 | A | 2016 下 | 8 | D |
| 2018 上 | 8、9 | B、A | 2009 下 | 9 | A |
| 2011 上 | 7 | C | 2011 下 | 9 | B |
| 2012 下 | 8、9 | A、C | 2013 下 | 8 | A |
| 2017 上 | 9 | D | 2019 上 | 9、10 | A、D |
| 2019 下 | 10、11 | A、B | 2013 上 | 7 | D |
| 2013 下 | 9 | D | 2016 下 | 7 | A |
| 2017 上 | 8 | D | 2018 下 | 7 | B |
| 2018 下 | 9、10 | B、B | 2019 下 | 8 | D |
| 2020 下 | 7 | C | 2021 上 | 9 | B |
| 2021 下 | 8 | C |
系统可靠性
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2010 上 | 2 | D | 2011 上 | 6 | D |
| 2017 上 | 4 | B | 2018 下 | 4 | C |
| 2019 上 | 4 | C | 2019 下 | 2 | A |
性能评价与杂题
| 年份 | 题号 | 答案 | 年份 | 题号 | 答案 |
|---|---|---|---|---|---|
| 2010 下 | 5 | A | 2013 下 | 2 | B |
| 2013 下 | 3 | D | 2014 下 | 2 | D |
| 2015 上 | 2 | C | 2015 上 | 8、9 | C、D |
| 2015 下 | 7 | A | 2017 下 | 9 | B |
| 2016 上 | 1 | D | 2016 上 | 4 | A |
| 2016 下 | 1 | A | 2016 下 | 9 | C |
| 2017 上 | 2 | A | 2020 下 | 4、5 | C、B |
参考资料
- 《软件设计师教程(第5版)》第 1 章“计算机系统知识”(1.1 计算机系统基础知识、1.2 计算机体系结构、1.3 安全性、可靠性与系统性能评测基础知识)——本篇所引教材内容的出处。
- 希赛网《软件设计师考试知识点》系列:传值/传址、后缀表达式、有限自动机的考法分析。
- CSDN 备考笔记《程序设计语言基础知识点(软件设计师)》《【软件设计师】程序设计语言》:编译过程表、文法口诀、静态/动态与强/弱类型对照。
- 名校题库网《2018 年下半年软件设计师上午真题》:部分真题的原始表述核对。
写在最后
计算机系统这一章的“魂”只有一句话:高级语言怎么变成机器能跑的程序,以及这个过程中每个环节在干什么。
- 编译和解释的分界,就是“有没有独立的目标程序、谁参与运行”;
- 传值和传引用的分界,就是“给的是值还是地址、能不能改到实参”;
- 六个阶段的分界,就是“字符流 → 记号流 → 语法树 → 中间代码 → 目标代码”这条流水线上的每一站;
- 正规式、自动机、文法,则是这条流水线两端(词法和语法)的形式化描述。
计算题(编址、码制、后缀式、流水线、可靠性)看着吓人,其实全是一步步走流程的体力活;概念题看着零散,其实都挂在这条主线上。把上面的 145 个空刷两遍,把速记清单默一遍,这一章的 6~9 分就稳了。
祝备考顺利。
还没有评论 — 第一条由你来留。