TRUE PATH M

筛选知识点

共 211 条,按科目与章节分类。点击知识点展开解析。

复习标记只保存在当前浏览器;重置筛选不会清除标记。

408 · DS

数据结构

50 条 · 7 个章节

线性结构

带头结点与不带头结点:空表条件易错易混

补充知识点

错误认识

L != NULL 就代表表中有元素。

定义与正确结论

带头结点:L 存在时,L->next == NULL 表示空表;不带头结点:L == NULL 表示空表。

原理、适用条件与辨析

头结点不存放有效数据。计算表长、遍历和删除时,起点必须与题设一致;若允许 L 本身为空,还要先做空指针保护。

简短例子

带头结点的空表仍有一个头结点,但有效元素个数为 0。

自检:带头结点求表长从哪里开始?

从 L->next 开始,只计数据结点。

链表操作:先保存后继,再改指针易错近年考查

补充知识点

错误认识

改完 p->next 后,还能沿原链继续遍历。

定义与正确结论

覆盖链接前先保存旧后继;free 后不能再读取该结点。

原理、适用条件与辨析

逆置和删除都会改变链路。先保存 next = p->next,再改链接或释放 p,最后用 next 继续。

简短例子

头插逆置中若先令 p->next = L->next,再用 p = p->next,会回到新链而不是原链。

相关真题:2024 · 第 1 题

自检:删除 p 后,能否使用 p->next?

不能;应在释放前保存后继。

循环队列:牺牲一格还是计数器易错易混

补充知识点

错误认识

front == rear 一定能同时判断空和满。

定义与正确结论

牺牲一格:空为 front == rear,满为 (rear+1)%M == front;计数器法用 count 区分。

原理、适用条件与辨析

不同约定不能混用。牺牲一格的数组长度 M 只能存 M−1 个元素;rear 通常指向下一插入位置。

简短例子

M=5 的牺牲一格循环队列,最大有效容量为 4。

自检:牺牲一格时如何求元素数?

(rear-front+M)%M。

栈、括号匹配与后缀表达式易错易混近年考查

补充知识点

错误认识

栈里只记括号数量,左右数量相等就说明匹配。

定义与正确结论

必须同时检查嵌套顺序与括号种类;右括号应与栈顶左括号配对。后缀求值要区分弹栈顺序。

原理、适用条件与辨析

扫描左括号入栈,右括号时栈空或类型不符则失败;扫描结束栈须空。后缀二元运算第一次弹出的是右操作数。

简短例子

([)] 数量相等但嵌套不合法;后缀 a b − 的运算是 a−b。

相关真题:2025 · 第 2 题

自检:容量如何确定?

括号匹配栈的最大深度由扫描时同时未匹配的左括号数决定。

顺序表:定位、插入、删除的时间记忆概念易错易混

408 章节补全

错误认识

顺序表既然能随机访问,任意位置插入删除也都是 O(1)。

定义与正确结论

按下标访问 O(1);一般位置插入或删除需移动后续元素,最坏和常见平均为 O(n)。按值查找无序表通常 O(n)。

原理、适用条件与辨析

尾插在容量足够时可 O(1),扩容会产生额外开销。只给下标与只给值的操作成本不同;复杂度必须包含定位。

简短例子

长度 n 的表头插入,需要把原有 n 个元素后移。

自检:已知下标删除末元素是否需移动全部元素?

不需要;但删除一般中间位置需移动后续元素。

双向链表与循环链表:四条链接和终止条件记忆概念易错易混

408 章节补全

错误认识

双向链表插入只改前驱的 next;循环链表遇 NULL 结束。

定义与正确结论

双向插入需维护双方的前后链接;循环链表通常回到头结点或起点时停止,不能照搬 NULL 终止。

原理、适用条件与辨析

典型 p 后插 q:q->next=p->next,q->prior=p,再更新旧后继 prior 和 p->next。带/不带头结点及空表不同,单独处理边界。

简短例子

有头结点的双向循环空表可令 head->next=head->prior=head。

自检:删除 p 时只改 p->prior->next 够吗?

不够,还需维护后继的 prior;并处理题设中的边界结点。

树与二叉树

表达式树:括号围住子表达式个人错题易错

近期代码批改:中序遍历与加括号条件

错误认识

左孩子为空或右孩子为空,就决定是否输出括号。

定义与正确结论

空结点返回;叶子输出操作数;非根的非叶结点通常在整个子表达式外加一对括号。

原理、适用条件与辨析

根可省最外层括号;括号必须在左递归前打开、右递归后关闭。若题设含一元运算符,应按其孩子约定处理,不能把“仅有右孩子”误当叶子。

简短例子

a+b 的子树应输出 (a+b),而不是 (a)+(b)。根是乘号时,可输出 (a+b)*c。

代码对照

typedef struct Node {
    char data;
    struct Node *left, *right;
} Node;

void printExpr(const Node *p, int isRoot) {
    if (p == NULL) return;
    int nonLeaf = p->left != NULL || p->right != NULL;
    if (!isRoot && nonLeaf) putchar('(');
    printExpr(p->left, 0);
    putchar(p->data);
    printExpr(p->right, 0);
    if (!isRoot && nonLeaf) putchar(')');
}
/* #include <stdio.h>;调用 printExpr(root, 1)。
   本例结点 data 为单字符,二元或右孩子承载的一元表达式。 */
自检:非叶结点的判定条件是什么?

p 非空且 (p->left != NULL || p->right != NULL)。

高度与最少结点:先确认树的种类个人错题易错记忆概念

近期批改:树高与最少结点公式的变量约定

错误认识

所有高度为 h 的二叉树都有 2^h−1 个结点。

定义与正确结论

规定根为第 1 层:普通二叉树最少 h 个、最多 2^h−1 个;AVL 最少结点满足 N(h)=N(h−1)+N(h−2)+1。

原理、适用条件与辨析

AVL 的左右子树高度差至多 1。最少结点时取高度 h−1 与 h−2;N(0)=0、N(1)=1。B 树或红黑树不能直接套此式。

简短例子

h=3 时普通二叉树可只有 3 个结点,AVL 至少 4 个,满二叉树有 7 个。

自检:看到“最少结点”先检查什么?

树的类型、高度从 0 还是 1 开始,以及是否含外部结点。

二叉排序树与平衡树:有序不等于平衡易混近年考查

补充知识点

错误认识

二叉排序树查找总是 O(log n)。

定义与正确结论

二叉排序树的查找复杂度为 O(h);退化成链时为 O(n),平衡树才把高度控制在 O(log n)。

原理、适用条件与辨析

中序有序是键值约束,不是高度约束。插入有序序列到普通 BST 可以产生单链。

简短例子

依次插入 1、2、3、4 到普通 BST,可能形成全右链。

相关真题:2024 · 第 7 题

自检:普通 BST 中序输出有序,能否保证查找对数时间?

不能,仍取决于高度。

线索二叉树:孩子指针与线索指针冷门易错记忆概念

补充知识点

错误认识

所有 left/right 指针都可以递归访问。

定义与正确结论

先看 ltag/rtag:孩子才递归,线索指向指定遍历序列的前驱或后继。

原理、适用条件与辨析

常用约定 tag=0 为孩子、tag=1 为线索,但要以题设为准。把线索当孩子可形成重复访问或环。

简短例子

中序线索树中,右线索可以直接指向中序后继;右孩子则要找其子树的最左结点。

自检:普通二叉树递归能直接套在线索树上吗?

不能,递归前须检查标志位。

B 树与 B+ 树:数据记录在哪里冷门易混近年考查记忆概念

补充知识点

错误认识

B+ 树的内部结点也用于终止记录查找。

定义与正确结论

典型 B+ 树的记录或记录指针位于叶结点,内部结点用于索引;B 树可以在内部结点查找成功。

原理、适用条件与辨析

B+ 树叶结点按键值链接,便于范围扫描。m 阶的键数/孩子数约定需看题目,尤其根的下限。

简短例子

查一个很靠近根索引键的记录,B+ 树仍需走到叶结点。

相关真题:2022 · 第 8 题;2025 · 第 8 题

自检:哪种结构更便于顺序范围查询?

典型 B+ 树,利用叶结点链。

哈夫曼树:最优不等于唯一编码冷门易混近年考查记忆概念

补充知识点

错误认识

权值相同就只能得到同一个编码;编码长度完全相等。

定义与正确结论

哈夫曼算法构造最小带权路径长度的前缀编码树;左右次序和同权选择可产生不同的最优编码。

原理、适用条件与辨析

n 个叶结点的二叉哈夫曼树(n>1)有 2n−1 个结点,不含度为 1 的结点。前缀性允许无需分隔符逐字解码。

简短例子

交换某结点左右子树可改变码字,但不改变对应路径长度与 WPL。

相关真题:2022 · 第 5 题;2025 · 第 5 题

自检:最优 WPL 唯一是否意味着每个码字唯一?

不意味着,具体码字可不同。

B 树高度公式:关键字数与高度上下界记忆概念易错易混图解

408 记忆与概念补充

错误认识

高度公式中的 n 是结点数;m 是最少孩子数。

定义与正确结论

非空 m 阶 B 树(m≥3),m 为最大孩子数;n 为关键字总数,h 为含关键字结点的层数,根为第 1 层,a=⌈m/2⌉。

原理、适用条件与辨析

同一高度下,填满得到最大关键字数,稀疏得到最小关键字数。由两端反解 h,并按整数高度取整。空的失败结点不计入 h;空树另行约定。

简短例子

m=5、h=3:最少 2×3²−1=17 个关键字,最多 5³−1=124 个。n=17 时只能 h=2 或 3;不是唯一高度。

B 树高度公式:关键字数与高度上下界 · 对照速记
记忆项公式(上述约定)
最少关键字数n_min(h)=2a^(h−1)−1
最多关键字数n_max(h)=m^h−1
整数高度下界h≥⌈log_m(n+1)⌉
整数高度上界h≤⌊1+log_a((n+1)/2)⌋
B 树高度:先记两端关键字数最少情况下根含一个关键字并有两个孩子,其余结点至少含 a 减一个关键字。最大情况下所有结点含 m 减一个关键字。两端总数分别为二乘 a 的 h减一次方减一,和 m 的 h 次方减一。B 树高度:先记两端关键字数m>=3;a=ceil(m/2);根为第 1 层;n 为关键字数最稀疏:关键字下限最充满:关键字上限第 1 层:1 个根1 个关键字第 1 层:1 个根m-1 个关键字第 2 层:2 个结点每个 a-1 个关键字第 2 层:m 个结点每个 m-1 个关键字第 h 层:2a^(h-2) 个结点每个 a-1 个关键字第 h 层:m^(h-1) 个结点每个 m-1 个关键字n_min = 2*a^(h-1) - 1n_max = m^h - 1反解高度,再按整数取整;h=1 时最少关键字为 1图中第 h 层展开适用于 h>=2;失败结点不计入高度
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:高校 B 树讲义:定义与高度推导

自检:用 n=17、m=5 能直接确定 h=3 吗?

不能;下界为 2,上界为 3,必须结合实际结构。

B 树根的例外:孩子数与关键字数记忆概念易错易混

408 记忆与概念补充

错误认识

根与所有非根结点都至少有 ⌈m/2⌉ 个实际孩子。

定义与正确结论

非根结点关键字数在 a−1~m−1;非叶根至少 2 个孩子、至少 1 个关键字。叶结点没有实际孩子,但仍受关键字数约束。

原理、适用条件与辨析

内部结点有 k 个关键字就有 k+1 个实际孩子。仅含根的非空树有 1~m−1 个关键字;不能把“非根内部孩子下限”机械套给根或数据叶结点。

简短例子

5 阶 B 树的非根结点至少 2 个关键字;非叶根可以只有 1 个关键字、2 个孩子。

参考:高校 B 树讲义:定义与高度推导

自检:“叶结点有 3 个孩子”在这个图示约定下正确吗?

不正确;这里叶是含关键字的终端结点,不含失败结点。

二叉树的叶数关系:n₀=n₂+1记忆概念易错易混

408 记忆与概念补充

错误认识

所有树都满足叶结点数等于度为 2 的结点数加 1。

定义与正确结论

任何非空二叉树满足 n₀=n₂+1;n₁ 不影响这个等式。

原理、适用条件与辨析

n=n₀+n₁+n₂;边数 n−1=n₁+2n₂,联立得到结论。适用于普通二叉树,不要求满或完全;一般多叉树另有关系。

简短例子

只有一条长度 4 的单链:n₀=1、n₂=0,仍满足。

自检:二叉树有 7 个度为 2 的结点,叶结点数是多少?

8 个。

完全二叉树:高度与编号公式记忆概念易错易混

408 记忆与概念补充

错误认识

完全二叉树必须每层都满,叶子编号总从 n/2 开始。

定义与正确结论

n≥1、根为第 1 层:高度 h=⌊log₂n⌋+1;用 1 起始编号,父结点 ⌊i/2⌋,孩子编号为 2i、2i+1(须≤n)。

原理、适用条件与辨析

完全二叉树最后一层可不满但从左连续排列;最后一个非叶结点编号 ⌊n/2⌋,叶从 ⌊n/2⌋+1 开始。0 起始数组需改为 2i+1、2i+2。

简短例子

n=6:高度 3,叶编号为 4、5、6;结点 3 只有左孩子 6。

自检:n=6 的完全二叉树允许结点 3 仅有右孩子吗?

不允许,应有左孩子 6,不应有右孩子 7。

红黑树:最长路径与黑高的约定记忆概念易错易混

408 记忆与概念补充

错误认识

红结点的两个孩子可以有一个红结点;高度等于黑高。

定义与正确结论

红结点的孩子必须为黑;每条到 NIL 叶的路径黑结点数一致。红黑树最长根到叶路径不超过最短路径的两倍。

原理、适用条件与辨析

相邻红结点被禁止,所以红结点数量受黑结点间隔限制。黑高是否计入当前根和 NIL 需按题设,不能直接把不同教材的数字相加。

简短例子

同一条路径可穿插红结点,但不能出现红→红。

自检:黑高公式能否不说明是否计 NIL 就直接套用?

不能,先统一黑高、实际高度和外部叶的计数约定。

哈夫曼 WPL:叶权与内部合并权之和记忆概念易错易混

408 记忆与概念补充

错误认识

WPL 是所有结点的权值与深度乘积之和。

定义与正确结论

WPL=Σ(叶权×根到叶边数);也等于构造过程中每次合并产生的内部结点权值之和。

原理、适用条件与辨析

每次合并使对应子树中的叶子深度增加 1,所以它们的权之和贡献一次。根深度取 0,不能按根为第 1 层的层号直接相乘。

简短例子

叶权 1、2、3:先合并 1+2=3,再合并 3+3=6,WPL=3+6=9。

自检:只有一个叶结点时,按根深度为 0 的树定义 WPL 是多少?

0;单字符编码人为设 1 位是另一种编码约定。

遍历序列恢复:中序划分与唯一性记忆概念易错易混

408 章节补全

错误认识

先序加后序能唯一确定任何二叉树。

定义与正确结论

关键字互异时,先序+中序或后序+中序可唯一恢复二叉树;先序+后序一般不能。

原理、适用条件与辨析

先序首元素/后序末元素确定根,中序根位置分左右子树。重复标签可能破坏唯一性;只有一个孩子时先后序不能分辨它在左还是右。

简短例子

两个结点 a→b,b 为左孩子或右孩子,先序都是 ab,后序都是 ba。

自检:关键字互异时,中序加层序能否用于确定结构?

可以逐步选出各子树层序最先出现的根;仅中序本身不够。

树与森林转换:左孩子右兄弟记忆概念易错易混

408 章节补全

错误认识

树转成二叉树后,二叉树的右孩子仍是原树的孩子。

定义与正确结论

左指针指原树的第一个孩子,右指针指原树的下一个兄弟;森林各根也通过右兄弟链连接。

原理、适用条件与辨析

转换保留的是孩子和兄弟关系,二叉树中的度和原树的度不同。原树的先根遍历对应转换后二叉树的先序;原树后根对应中序(按常见约定)。

简短例子

原树根有 3 个孩子,可表示成首孩子和连续右兄弟链,不要求二叉根有 3 个指针。

自检:原树叶结点在转换后能有右孩子吗?

能,右孩子可能是它的兄弟,因此原树叶和二叉树叶不能等同。

AVL 调整:按失衡结点到插入位置的方向记忆概念易错易混

408 章节补全

错误认识

LL 型意味着向左旋,RR 型意味着向右旋。

定义与正确结论

LL 用右旋,RR 用左旋,LR 先左旋子树再右旋,RL 先右旋子树再左旋。

原理、适用条件与辨析

名称描述从最低失衡祖先出发经过的两段方向,不是最终旋转方向。旋转只改局部指针,需保持中序顺序;删除可能需要向上继续调整。

简短例子

依次插入 3、2、1,根 3 为 LL 失衡,对 3 右旋使 2 成为局部根。

自检:LR 是只做一次右旋吗?

不是,先对左子树左旋,再对失衡根右旋。

并查集:父指针、路径压缩与按秩合并记忆概念易错易混

408 章节补全

错误认识

并查集的父指针表示图中实际的一条边;按秩等于总按编号。

定义与正确结论

并查集维护不相交集合,find 返回代表,union 合并集合;按秩/按大小控制树高,路径压缩缩短 find 路径。

原理、适用条件与辨析

根表示集合代表,不一定是某种数值最小顶点。优化后的摊还复杂度近似常数,但不能把任意一次未压缩查找都宣称严格 O(1)。

简短例子

Kruskal 中边两端已属同一集合,加入该边会形成环,可跳过。

自检:find 返回哪个对象?

该元素当前所在集合的代表结点。

一般树的结点度与边数:m 叉树不等于 B 树记忆概念易错易混

408 章节补全

错误认识

任意 m 叉树每个非叶结点都恰有 m 个孩子,也满足 B 树高度界。

定义与正确结论

树 n 个结点有 n−1 条边;结点孩子数之和为 n−1。一般 m 叉树只限制最多 m 个孩子,不保证半满与叶层一致。

原理、适用条件与辨析

若所有非叶恰为 m 个孩子,则 n=mI+1、叶数 L=(m−1)I+1,I 为非叶数;无此条件不能套。B 树关键字数与树结点数仍是不同量。

简短例子

一棵普通三叉树可以是一条长链,因此高度可为 n,不能套 B 树的对数高度界。

自检:一般树各结点的“度”和无向图度是否同义?

不是,树结点度常指孩子数,无向图度计关联边。

图

BFS 最短路:仅适用于无权或等权易混易错近年考查

补充知识点

错误认识

BFS 能求任意带权图最短路。

定义与正确结论

BFS 保证边数最少;边权相同且非负时,也能给出权值最短路。一般非负带权图用 Dijkstra。

原理、适用条件与辨析

BFS 按层扩展而不比较累计权值。标记通常应在入队时完成,防止同一顶点重复入队。

简短例子

一条直接边权 10,两条间接边各权 1:BFS 边数最少路径的权值却为 10。

相关真题:2025 · 第 6 题

自检:无权图 BFS 什么时候置 visited?

首次发现并入队时。

Dijkstra 与 Floyd:负权限制不同易混

补充知识点

错误认识

两种算法都不能有负边。

定义与正确结论

Dijkstra 要求非负边权;Floyd 可处理负边,但不能直接以存在负权回路的结果作为有限最短路。

原理、适用条件与辨析

Dijkstra 的已确定最短距离可能被后来负边推翻。Floyd 的 k 必须作为最外层,表示允许的中间顶点集合。

简短例子

含负边且无负环的图可以使用 Floyd;不能只因负边就判它失效。

自检:Floyd 的三层循环,哪一层必须最外?

中间顶点 k。

最小生成树与最短路径树易混

补充知识点

错误认识

最小生成树保证根到每点距离最短。

定义与正确结论

MST 最小化整棵树边权总和;最短路径树保证给定源到各点的路径最短。

原理、适用条件与辨析

两种优化目标不同。Prim/Kruskal 用于无向带权图;非连通图得到最小生成森林。负权不会破坏 MST 的适用性。

简短例子

三角形边 AB=2、BC=2、AC=3:MST 可选 AB、BC,但 A 到 C 路径为 4,比直接边 3 长。

自检:MST 能否包含负权边?

可以。

拓扑排序与关键路径:删点数和工期冷门易混近年考查

补充知识点

错误认识

拓扑序唯一才说明没有环;关键活动只有一条链。

定义与正确结论

DAG 可有多种拓扑序;删去顶点数不足总数说明有环。AOE 网中 e=l 的活动为关键活动。

原理、适用条件与辨析

关键路径可能有多条。只缩短一条关键路径上的某活动,未必缩短总工期;延长任一关键活动则可能延长工期。

简短例子

两个独立顶点可以任意先后,拓扑序不唯一,但图无环。

相关真题:2022 · 第 7 题;2025 · 第 6 题

自检:多条关键路径时,缩短某一条上的一个活动一定缩短工期吗?

不一定,其他关键路径可能仍决定工期。

图的度数与边数:有向和无向分开记忆概念易错易混

408 记忆与概念补充

错误认识

有向图所有顶点的出度和等于 2|E|。

定义与正确结论

无向图度数和=2|E|;有向图入度和=出度和=|E|。树有 n 个顶点时边数为 n−1。

原理、适用条件与辨析

一条无向边贡献两个端点的度;一条有向边贡献起点出度与终点入度各一次。允许自环时无向自环计度 2,简单图通常不含自环。

简短例子

有向图有 6 条边,所有顶点出度之和为 6,不是 12。

自检:连通无向简单图有 n−1 条边,一定是树吗?

是;只给边数 n−1 而不保证连通则不能这样判断。

图的存储:矩阵、邻接表、十字链表、多重表记忆概念易错易混

408 章节补全

错误认识

邻接表每个无向边只出现一次;十字链表用于无向图。

定义与正确结论

邻接矩阵占 O(V²),邻接表占 O(V+E);无向邻接表常每边存两次。十字链表用于有向图,邻接多重表用于无向图。

原理、适用条件与辨析

无向邻接矩阵通常对称;有向邻接表可方便找出边,入边可用逆邻接表;十字链表把入/出链接汇于同一边结点。

简短例子

有向矩阵按 A[i][j] 表示 i→j,则第 i 行关联出边、第 i 列关联入边。

自检:矩阵中 0 总表示没有边吗?

不总是;允许权 0 时需另用无边标记,通常还要处理对角线。

DFS/BFS:遍历所有分量与复杂度记忆概念易错易混

408 章节补全

错误认识

从一个起点 DFS 后,所有图的顶点都已访问。

定义与正确结论

非连通图需外层循环从未访问顶点继续。邻接表遍历 O(V+E),矩阵通常 O(V²)。

原理、适用条件与辨析

DFS 栈/递归与 BFS 队列的最大空间通常 O(V)。访问标记不能在每个新起点前清空,否则可能重复;BFS 通常在入队时标记。

简短例子

一个图有两个互不相连的三角形,从第一个三角形出发无法到达另一分量。

自检:DFS 是否一定只能递归实现?

不一定,可用显式栈实现,但要维护正确的访问与推进顺序。

连通、强连通与环判定记忆概念易错易混

408 章节补全

错误认识

DFS 遇到已访问顶点就说明所有图有环;单向可达就是强连通。

定义与正确结论

无向连通要求任意两点有路径;有向强连通要求互相可达。无向 DFS 应排除父边;有向环常看指向递归栈中顶点的边。

原理、适用条件与辨析

有向图已访问的顶点可能已完成,单纯 visited 无法区分回边。无向图需考虑边模型,含重边时不能仅按顶点父亲排除所有同向连接。

简短例子

DAG 的两个分支汇合到同一已访问点,并不意味着存在环。

自检:有向图中 A 可达 B 而 B 不可达 A,能否认定强连通?

不能。

Prim/Kruskal:选边规则与复杂度记忆概念易错易混

408 章节补全

错误认识

Prim 每轮选全图最小未选边,Kruskal 每轮选最近顶点。

定义与正确结论

Prim 在当前树与外部之间选最轻跨边;Kruskal 按全局边权排序,加入不成环的边。

原理、适用条件与辨析

朴素矩阵 Prim 为 O(V²),邻接表+堆常为 O(E log V);Kruskal 主要排序 O(E log E)。边权重复可能产生多个同权 MST,不代表不存在解。

简短例子

Prim 不能选两端都在树外的全局最轻边来扩展当前树。

自检:Kruskal 的不成环判定常用什么结构?

并查集。

查找与排序

快排:终止、枢轴与递归区间个人错题易错近年考查

近期算法批改:分区、返回值、递归终止与额外空间

错误认识

划分后还递归处理包含已归位枢轴的同一区间。

定义与正确结论

若划分返回已归位的下标 p,递归 [low,p−1] 与 [p+1,high],并以 low>=high 终止。

原理、适用条件与辨析

划分方案有不同返回约定,Hoare 分割点不一定是枢轴最终位置,不能混套区间。必须保存枢轴值并保证扫描前进。

简短例子

长度为 1 或全相等数组是必须检查的边界;不缩小区间可能无限递归。

相关真题:2022 · 第 11 题;2024 · 第 8 题

代码对照

int partition(int a[], int low, int high) {
    int pivot = a[low];
    while (low < high) {
        while (low < high && a[high] >= pivot) --high;
        a[low] = a[high];
        while (low < high && a[low] <= pivot) ++low;
        a[high] = a[low];
    }
    a[low] = pivot;
    return low;
}
void quickSort(int a[], int low, int high) {
    if (low >= high) return;
    int p = partition(a, low, high);
    quickSort(a, low, p - 1);
    quickSort(a, p + 1, high);
}
/* 调用 quickSort(a, 0, n-1)。
   此首元素枢轴实现平均 O(n log n),最坏 O(n²);
   递归栈平均 O(log n),最坏 O(n)。 */
自检:已归位枢轴下标能再次留在同侧递归区间中吗?

这种约定下不应保留;两侧排除 p。

排序稳定性与算法实现条件易错易混近年考查记忆概念

补充知识点

错误认识

稳定表示运行时间稳定,或所有归并写法都稳定。

定义与正确结论

稳定表示相等关键字的记录保持原相对次序;归并相等时应先取左段,直接插入不跨越相等记录。

原理、适用条件与辨析

常见稳定:直接插入、冒泡、归并、LSD 基数;常见不稳定:希尔、简单选择、堆、快排。稳定性受实现影响。

简短例子

两条记录键都为 5,分别附带 a、b;排序后 a 仍在 b 前才保持该对稳定。

相关真题:2022 · 第 11 题

自检:归并两段时,相等键先取右段会怎样?

可能破坏稳定性。

建堆与逐个插入:复杂度不同易混近年考查

补充知识点

错误认识

建堆每个结点都 O(log n),所以必为 O(n log n)。

定义与正确结论

自底向上建堆总时间 O(n);逐个插入建堆最坏 O(n log n);堆排序整体 O(n log n)。

原理、适用条件与辨析

自底向上建堆中,多数结点接近叶子,调整高度很小。不能把所有结点都按根的高度估计为紧确界。

简短例子

堆只保证父子大小关系,中序遍历并不有序。

相关真题:2024 · 第 9 题

自检:大根堆是否保证左孩子大于右孩子?

不保证。

折半查找与分块查找:存储要求冷门易混近年考查

补充知识点

错误认识

只要元素有序,链表折半查找也有 O(log n) 时间。

定义与正确结论

数组支持 O(1) 随机访问;链表定位中点需遍历。分块查找只要求块间有序、块内可无序。

原理、适用条件与辨析

折半减少比较次数不等于减少定位时间。分块索引可折半,但块内通常顺序查找。

简短例子

链表不断找中点,不能直接宣称总时间 O(log n)。

相关真题:2024 · 第 5 题;2025 · 第 7 题

自检:分块查找要求每一块内部有序吗?

不要求,必须保证块间有序。

KMP:next 与 nextval 的下标约定冷门易错近年考查

补充知识点

错误认识

不同教材的 next 数组可以不转换直接混用;失配时主串指针回退。

定义与正确结论

next/nextval 的值取决于从 0/1 开始及失配时更新约定;KMP 通常保持主串指针前进,只调整模式位置。

原理、适用条件与辨析

nextval 在回退后字符仍相等时继续跳转,减少重复比较;不能把最长相等前后缀长度直接当所有版本的 next 下标。

简短例子

先写清 i、j 的初值和 j=next[j] 的含义,再推数组;避免差 1。

相关真题:2024 · 第 6 题

自检:KMP 总时间复杂度是多少?

预处理加匹配为 O(n+m),n 为主串长、m 为模式长。

外部排序:归并段、败者树与 I/O冷门易混近年考查

补充知识点

错误认识

败者树根结点总保存当前最大记录;增大归并路数只减少比较次数。

定义与正确结论

升序多路归并选当前最小记录;败者树内部保存比较败者,专门的冠军位置通常保存获胜归并段编号。

原理、适用条件与辨析

结构图的根与额外冠军结点须按题设区分。提高归并路数减少归并趟数和外存 I/O,但比较及缓冲区开销也要考虑。

简短例子

置换选择生成的初始归并段可长于工作区容量,不应按固定块数机械分段。

相关真题:2024 · 第 11 题

自检:k 路归并一趟是处理 k 个记录还是 k 个有序段?

k 个有序归并段,每个段可以包含很多记录。

开放定址删除:空槽与删除标记记忆概念易错易混

408 记忆与概念补充

错误认识

删除散列表元素后立即把槽设成从未使用的空槽。

定义与正确结论

开放定址删除通常保留删除标记,查找遇删除标记继续探测;遇从未使用的空槽才可在对应规则下判失败。

原理、适用条件与辨析

冲突记录可能被探测到后面的槽,清成空槽会截断探测链。插入可利用删除槽,但必须保证查重和停止规则正确;链地址法删除是另一机制。

简短例子

关键字 A、B 冲突,B 存在 A 后面;删 A 后若查找立即停止,可能漏掉 B。

自检:删除标记表示查找应停止吗?

不表示,应继续探测。

BST 删除:用前驱/后继替代,再删原位置记忆概念易错易混

408 章节补全

错误认识

删掉有两孩子的结点,直接用左孩子顶上且丢掉右子树。

定义与正确结论

有两子树时,常用中序前驱或后继替代键,再在对应原位置删除该结点;需保留 BST 有序性和链接。

原理、适用条件与辨析

前驱是左子树最大值,后继是右子树最小值,它们在原位置至多有一个孩子,便于链接修复。键值与附带记录应一起处理。

简短例子

用右子树最小结点替代后,其原父结点应接上该结点可能存在的右孩子。

自检:前驱等同于直接左孩子吗?

不等同,应沿左子树最右路径寻找。

查找 ASL:成功与失败,概率与比较次数记忆概念易错易混

408 章节补全

错误认识

ASL 是最长查找次数,成功和失败有相同平均值。

定义与正确结论

ASL=Σ(查找概率×比较次数)。成功按实际元素计,失败按间隙或不可达范围计,需看判定树与概率。

原理、适用条件与辨析

有序顺序查找遇更大的元素可提前失败;折半查找的失败叶/间隙也有不同路径长度。不能未说明均匀概率就直接平均。

简短例子

某元素概率高而位置靠后,会显著提高顺序查找 ASL。

自检:ASL 可以只取最大比较次数吗?

不能,那是最坏情况指标,平均应加权。

散列冲突:装填因子与探测序列记忆概念易错易混

408 章节补全

错误认识

散列地址不同就永远不会冲突;二次探测必遍历所有槽。

定义与正确结论

同义词初始散列地址相同;开放定址中的后续冲突也可能发生在非同义词间。α=元素数/散列表槽数反映装填程度。

原理、适用条件与辨析

性能还依赖散列函数与冲突处理。线性探测可在未满时按完整步进找到空位,但可能聚集;二次探测能否覆盖全部槽取决于表长和探测规则。

简短例子

一个被冲突挤到槽 4 的记录,可以与初始散列地址为 4 的另一记录发生冲突。

自检:开放定址法和链地址法的查找过程相同吗?

不同,前者沿探测序列,后者在桶链中查找。

内排序总表:稳定性、时间与辅助空间记忆概念易错易混

408 章节补全

错误认识

O(n log n) 的排序都稳定;归并和快排的空间都 O(1)。

定义与正确结论

按具体算法和实现判断,时间、辅助空间和稳定性是三类指标,不能互相推出。

原理、适用条件与辨析

直接插入/冒泡对已排序输入可为 O(n)(冒泡须设置早停);简单选择通常始终 Θ(n²)。递归栈算空间;LSD 基数的每趟分配/收集需稳定。

简短例子

比较排序最坏时间下界 Ω(n log n) 不适用于利用键位数的基数排序。

内排序总表:稳定性、时间与辅助空间 · 对照速记
算法平均 / 最坏时间典型辅助空间通常稳定
直接插入/冒泡O(n²) / O(n²)O(1)是
简单选择O(n²) / O(n²)O(1)否
希尔依增量序列而变O(1)否
快排O(n log n) / O(n²)栈平均 O(log n),最坏 O(n)否
堆排序O(n log n) / O(n log n)O(1)否
二路归并O(n log n) / O(n log n)O(n)相等先取左时是
LSD 基数O(d(n+r))O(n+r)每趟稳定时是
自检:简单选择排序最坏移动次数与比较次数都是 O(n²) 吗?

常见交换实现移动次数 O(n),比较次数 Θ(n²)。

多路归并趟数与置换选择:内存工作区不是段长上限记忆概念易错易混

408 章节补全

错误认识

工作区能放 w 个记录,就只能生成长度 w 的初始归并段。

定义与正确结论

置换选择用“当前段/下一段”标记和最小记录选择,初始归并段可长于工作区;k 路归并将若干有序段逐趟合并。

原理、适用条件与辨析

若初始 r 段且每趟最多合并 k 段,k≥2 时归并趟数通常为 ⌈log_k r⌉。I/O 次数还看初始生成与末次输出是否计入,不能用趟数代替总读写量。

简短例子

输入近乎升序可产生很长初始段,逆序时可能较短;段长取决于输入。

自检:败者树改变归并路数就一定不需要更多输入缓冲吗?

不,应为各路及输出安排相应缓冲。

基础与复杂度

逻辑结构、存储结构与抽象数据类型记忆概念易错易混

408 章节补全

错误认识

链表是一种逻辑结构,顺序表和线性表互不相关。

定义与正确结论

逻辑结构描述元素关系:线性、树、图等;存储结构描述内存实现:顺序、链式、索引、散列。ADT 由数据对象、关系和操作组成。

原理、适用条件与辨析

同一种逻辑结构可有多种存储方式。算法依赖访问接口和存储代价,不应仅按逻辑关系判断复杂度;ADT 可隐藏具体实现。

简短例子

线性表可用顺序表或链表实现,逻辑上都是线性关系。

自检:二叉树只能用链式存储吗?

不能,也能顺序存储,完全二叉树尤其适合数组编号。

复杂度:求和、独立阶段与递归栈记忆概念易错易混

408 章节补全

错误认识

两层循环必为 O(n²);所有 O(1) 额外数组的递归都为 O(1) 空间。

定义与正确结论

时间复杂度累计实际操作次数;独立阶段相加取主导项,嵌套次数需按内层边界求和。空间通常计辅助空间并包括递归栈。

原理、适用条件与辨析

i 每轮翻倍而内层循环 i 次时,总量可为 1+2+4+…=O(n),不是 O(n log n)。O 是渐近上界,不总代表紧确界;平均、最好、最坏要分开。

简短例子

递归遍历一棵退化树,栈深 h=n,辅助空间为 O(n)。

自检:循环 for(i=1;i<n;i*=2) 的次数是什么量级?

O(log n);若内层工作变化,须再累计各轮代价。

栈、队列与串

栈、共享栈与递归:不同操作约定记忆概念易错易混

408 章节补全

错误认识

top 初始为 −1 和初始为 0 的栈可使用同一入栈代码。

定义与正确结论

top 可指栈顶元素或下一空位,入栈/出栈先后需统一。两栈共享数组时从两端增长,共享空闲空间。

原理、适用条件与辨析

若 top 指栈顶,空栈 top=−1,入栈通常 a[++top]=x;若 top 指下一个空位,则 a[top++]=x。函数递归用调用栈,不能省略终止条件。

简短例子

两端共享栈若 top1+1==top2,表示两栈之间无空槽。

自检:共享栈能否要求两边各固定一半容量?

这种固定分区失去动态共享空闲空间的主要作用。

串、子串和模式匹配:长度与结束标志记忆概念易错易混

408 章节补全

错误认识

C 风格字符串的字符数包含末尾 \0;空串和空格串一样。

定义与正确结论

抽象串是有限字符序列,长度计有效字符;C 的结束标志 \0 不计字符串字符数。空串长度 0,空格串含实际空格。

原理、适用条件与辨析

子串是连续字符,子序列可以不连续。朴素匹配失配后需重新尝试位置,最坏 O(nm);KMP 用模式信息减少回退,O(n+m)。

简短例子

"a b" 长度为 3;"" 为 0;存入 C 数组还要留结束标志位。

自检:“ac”是“abc”的子串吗?

不是,但可以是子序列。

数组与矩阵

数组地址:行优先与列优先记忆概念易错易混

408 章节补全

错误认识

二维数组的任意存储顺序都是 base+(i×行数+j)×元素大小。

定义与正确结论

行优先:一行内相邻元素连续;列优先:一列内相邻元素连续。下标起点和每维长度决定偏移。

原理、适用条件与辨析

若行下标起点 r₀、列下标起点 c₀,行数 R、列数 C,行优先偏移=[(i−r₀)C+(j−c₀)]L;列优先=[(j−c₀)R+(i−r₀)]L。L 为元素字节数。

简短例子

C 的普通二维数组通常行优先,a[i][j+1] 与 a[i][j] 相差一个元素大小。

自检:公式里应乘行数还是列数?

行优先跨一行乘列数;列优先跨一列乘行数。

特殊与稀疏矩阵:压缩存储不等于只有一种公式记忆概念易错易混

408 章节补全

错误认识

对称矩阵与稀疏矩阵都按下三角连续压缩,零元素不用任何信息。

定义与正确结论

对称矩阵只存一半;三角矩阵可另存共同常数;带状矩阵只存带内元素;稀疏矩阵常用三元组或十字链表。

原理、适用条件与辨析

上/下三角、行/列优先、0/1 起始都会改变地址公式。三元组保存行、列、值,顺序不当会影响访问;十字链表提供行链和列链。

简短例子

n 阶对称矩阵存下三角含对角线需 n(n+1)/2 个元素,而非 n²。

自检:下三角公式可否直接用于上三角列优先?

不可直接套,必须先确定存储顺序和下标约定。

408 · CO

计算机组成原理

52 条 · 8 个章节

数据表示

机器字长、指令字长与总线宽度个人错题易混记忆概念

近期错题:机器字长及相关宽度

错误认识

机器字长一定等于地址位数、指令长度或数据总线宽度。

定义与正确结论

机器字长通常是 CPU 一次整数运算的基本位数,与通用寄存器和整数 ALU 宽度密切相关;其他宽度可不同。

原理、适用条件与辨析

变长指令可以跨多个字;总线可分多次传送一个字。寻址范围取决于地址位数与按字/按字节编址约定。

简短例子

32 位机器并不意味着每条指令均为 32 位,也不意味着所有总线都是 32 位。

自检:机器字长能单独决定内存寻址容量吗?

不能,还需要地址位数和编址单位。

MSB、LSB 与大小端个人错题易混近年考查记忆概念

近期错题:MSB/LSB 与数值解释

错误认识

低地址一定存放数值的最高位。

定义与正确结论

MSB/LSB 表示位权;大小端描述多字节数据的字节地址顺序。

原理、适用条件与辨析

大端低地址存最高有效字节,小端低地址存最低有效字节;一个字节内部的位权不会因大小端而反转。

简短例子

0x12345678:大端低地址为 0x12,小端为 0x78。

相关真题:2025 · 第 15 题

自检:小端存储是否反转每个字节的 8 个 bit?

不反转。

有符号与无符号比较:看转换规则个人错题易错易混近年考查

近期错题:有符号与无符号的比较

错误认识

混合比较一律按无符号,或最高位为 1 就必为负数。

定义与正确结论

硬件位串需按指定类型解释;C 混合比较还要按整数提升和通常算术转换判断。

原理、适用条件与辨析

同等级 signed int 与 unsigned int 常转为 unsigned;若更高等级有符号类型能表示较低等级无符号类型的全部值,则可转为该有符号类型。

简短例子

同宽 int 与 unsigned int 比较:-1 通常转为最大的 unsigned int。不能把这一例推广到所有类型组合。

相关真题:2025 · 第 12 题

自检:比较前先核对哪些条件?

类型、位宽、等级、表示范围及题设语言规则。

符号扩展、零扩展与截断易错易混近年考查记忆概念

补充知识点

错误认识

提高精度就是左侧一律补 0。

定义与正确结论

补码有符号数扩宽用符号扩展;无符号数扩宽用零扩展;截断可能改变值。

原理、适用条件与辨析

补码符号扩展保持数值不变。低位截取只有原值在目标范围内才保持数值;浮点扩精度有不同格式转换规则。

简短例子

8 位补码 11111111 表示 −1,扩为 16 位应为 1111111111111111。

相关真题:2024 · 第 12 题;2025 · 第 12 题

自检:负补码扩宽时高位补什么?

补符号位 1。

IEEE 754:正规、非正规、无穷与 NaN记忆概念易错易混

408 记忆与概念补充

错误认识

阶码全 0 或全 1 时都照正规数的隐含 1 公式解释。

定义与正确结论

单精度 E 为 8 位、F 为 23 位。正规数 1≤E≤254;E=0 用隐含 0,E=255 表示无穷或 NaN。

原理、适用条件与辨析

正规数=(−1)^s×(1.F)₂×2^(E−127);非正规非零数=(−1)^s×(0.F)₂×2^(−126)。不要把 E=0 的指数写成 −127。

简短例子

E=0、F=0 表示 ±0;E=255、F=0 表示 ±∞;E=255、F≠0 表示 NaN。

IEEE 754:正规、非正规、无穷与 NaN · 对照速记
阶码 E尾数 F解释
00正零/负零
0非 0非正规数
1~254任意正规数(隐含 1)
2550正/负无穷
255非 0NaN
自检:单精度非正规数是否有隐含的最高位 1?

没有,隐含位为 0。

原码、反码、补码与移码:范围和零记忆概念易错易混

408 章节补全

错误认识

n 位补码与原码的负数范围完全相同;移码总只翻符号位。

定义与正确结论

n 位补码范围为 −2^(n−1)~2^(n−1)−1,零唯一;常见原码/反码范围为 ±(2^(n−1)−1),零有正负两种。

原理、适用条件与辨析

移码是给真值加偏置;只有特定偏置下才可与补码用翻最高位建立简单关系。IEEE 阶码偏置不是任意普通移码例题的偏置。

简短例子

8 位补码能表示 −128,8 位原码通常不能。

自检:将负数补码取真值,只取低 7 位就对吗?

不对,应按补码权值或取反加一等正确方式求值。

奇偶校验与海明码:检错和纠错能力记忆概念易错易混

408 章节补全

错误认识

单个奇偶位可以检测所有多位错误并定位错误位置。

定义与正确结论

奇偶校验可检出奇数位翻转,不能定位;海明码通过多个校验关系形成综合征,典型最小距离 3 的码可纠一位。

原理、适用条件与辨析

若要同时实现单错纠正和双错检测,常加整体奇偶位成为扩展海明码。理论能力由最小码距决定:检 d−1 位、纠 ⌊(d−1)/2⌋ 位。

简短例子

翻转两位可能让普通奇偶校验仍满足,而不是一定被检出。

自检:m 个信息位、r 个海明校验位常需满足什么基本关系?

2^r≥m+r+1,为无错及每个单比特错误预留可区分状态。

运算与浮点

补码算术移位:右移与左移的边界个人错题易错

近期批改回顾:补码移位与数值范围

错误认识

负数算术右移总是按向 0 取整除以 2;左移永远等价于乘 2。

定义与正确结论

通常补码算术右移补符号位,相当于除 2 向负无穷取整;左移可能溢出,须先检查范围。

原理、适用条件与辨析

逻辑右移补 0。题目若指定 C 语言而非机器移位,应注意版本和实现规则,不把硬件题的结论无条件套到源语言。

简短例子

8 位补码 −3 算术右移一位常得到 −2,而不是 −1。

自检:逻辑右移负补码与算术右移是否相同?

不同,补入的高位不同。

浮点对阶、规格化与舍入个人错题易混近年考查记忆概念

近期错题:浮点左规

错误认识

左规时阶码加 1;对阶把较大阶码向较小阶码调整。

定义与正确结论

对阶通常小阶向大阶、尾数右移;左规尾数左移、阶码减小;右规尾数右移、阶码增大。

原理、适用条件与辨析

保持数值不变需要尾数和阶码反向变化。舍入可能再次引起右规,不能只在开始检查阶码范围。IEEE 与题设补码尾数格式的规格化判据不同。

简短例子

尾数左移一位放大 2 倍,阶码减 1 才抵消该变化。

相关真题:2022 · 第 14 题;2025 · 第 13 题

自检:IEEE 单精度正规数的隐含位是否用于零和非正规数?

不用于;正规数隐含 1,非正规数隐含 0。

CF 与 OF:进位不等于有符号溢出易错易混近年考查记忆概念

补充知识点

错误认识

最高位有进位就说明补码溢出。

定义与正确结论

CF 反映无符号进位/借位相关情况,OF 反映有符号溢出;具体减法借位标志定义看机器约定。

原理、适用条件与辨析

同一位串运算可按有符号或无符号解释。补码加法同号相加结果异号发生有符号溢出;不能仅看最高位进位。

简短例子

8 位 127+1 得位串 10000000:有符号溢出,未产生第 9 位进位。

相关真题:2025 · 第 14 题

自检:8 位 255+1 按无符号解释的结果是什么?

模 256 结果为 0,并有进位;不能由此直接推出 OF=1。

浮点精度与表示范围:大范围不保证整数精确易错易混近年考查记忆概念

补充知识点

错误认识

单精度浮点能表示很大的数,因此范围内所有整数都能精确表示。

定义与正确结论

表示范围由阶码等决定,有效精度由尾数决定;IEEE 单精度正规数通常有 24 位有效二进制精度。

原理、适用条件与辨析

单精度可连续精确表示的整数范围通常到 ±2^24;超过后并非所有整数可精确表示。双精度有 53 位有效精度。

简短例子

2^24 可精确表示,但 2^24+1 在单精度中通常不能精确表示。

相关真题:2024 · 第 14 题

自检:选存储格式只看是否溢出够吗?

不够,还要检查所需精度。

串行乘法器:被乘数、乘数与部分积记忆概念易错易混图解

408 记忆与概念补充

错误认识

乘法器只需要一个结果寄存器,移位一定只移动被乘数。

定义与正确结论

乘法基本操作是“按乘数位决定加法,再移位”;硬件含被乘数寄存器、部分积/乘数寄存器、加法器和控制计数。

原理、适用条件与辨析

图采用无符号组合右移模型:M 保存被乘数,Q 初始保存乘数,A 初始为 0;Q₀=1 则 A+M,经 C:A:Q 联合逻辑右移。保留加法进位 C,进行 n 轮,最终 A:Q 是 2n 位乘积。

简短例子

4 位无符号 15×15 需要 8 位保存 225;若丢掉加法进位可能算错。

串行乘法器:判位 → 加法 → 联合右移M 输入加法器,A 反馈到加法器,结果写入 C 和 A。Q 的最低位控制是否相加;C A Q 一起右移,进行 n 轮后 A Q 是乘积。串行乘法器:判位 → 加法 → 联合右移无符号 n 位操作数 · C:A:Q 组合右移模型M:被乘数n 位,保持不变n 位加法器A + M → C:A控制器读取 Q01:加 M;0:保持A 反馈C进位A:高半部分积n 位,初始为 0Q:低半积 / 乘数n 位,初始装乘数每轮将 C:A:Q 联合逻辑右移一位加法进位先保留,右移时最高位补 0重复 n 轮:最终 A:Q 为 2n 位乘积
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:高校计组讲义:移位加法与除法硬件

自检:乘积最大需要多少位?

两个 n 位无符号数的完整乘积需要至多 2n 位。

阵列乘法器与迭代乘法器记忆概念易错易混

408 记忆与概念补充

错误认识

所有乘法器都必须花 n 个时钟周期;阵列乘法完全不使用加法。

定义与正确结论

迭代乘法器复用加法器,分多轮加移;阵列乘法器用硬件并行生成并累加部分积。

原理、适用条件与辨析

阵列实现可减少迭代轮次但组合延迟更长、硬件更多;是否一拍完成取决于电路、时钟周期和流水化。不能把算法步骤数直接当任意机器的周期数。

简短例子

同一乘法指令可由组合阵列、多周期迭代或流水化单元实现。

自检:乘法指令是否必然只用一个 CPU 周期?

不必然,需看具体实现与题设。

Booth 补码乘法:看 Q₀Q₋₁ 的顺序记忆概念易错易混图解

408 记忆与概念补充

错误认识

01 做减法,10 做加法;每轮使用逻辑右移。

定义与正确结论

规定观察顺序为 Q₀Q₋₁:01 加 M,10 减 M,00/11 不加减,然后 A:Q:Q₋₁ 算术右移。

原理、适用条件与辨析

Q₋₁ 初始为 0,用相邻位变化编码连续 1。必须保留符号,并给 −M 留出可表示的位宽,尤其 M 为最小负数时;不同教材若写 Q₋₁Q₀,表的方向须转换。 若中间 A 扩成 n+1 位,最终去掉冗余符号扩展位,按题设取 2n 位乘积。

简短例子

Q₀=1、Q₋₁=0 对应 10,所以 A←A−M,不是 A+M。

Booth 补码乘法:看 Q₀Q₋₁ 的顺序 · 对照速记
Q₀Q₋₁移位前操作
00 或 11A 不变
01A←A+M
10A←A−M
Booth 判位规则:01 加、10 减Q 零位和附加位为 00 或 11 则不变,为 01 则加 M,为 10 则减 M。然后联合算术右移,保留符号。Booth 判位规则:01 加、10 减补码乘法 · 观察顺序固定为 (Q0, Q-1)检查 (Q0, Q-1)00 或 11A 保持不变01A ← A + M10A ← A - MA:Q:Q-1 联合算术右移一位最高位补 A 的符号位Q-1 初始为 0;重复 n 轮后读取 A:QM 为最小负数时,A 与 ±M 须用足够位宽
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:IIT Kharagpur:Booth 乘法虚拟实验

自检:Booth 右移最高位补什么?

补 A 的符号位;不是一律补 0。

除法器:除数、商和余数存放位置记忆概念易错易混图解

408 记忆与概念补充

错误认识

商和余数存放位置永远是某两个固定编号的 CPU 寄存器。

定义与正确结论

概念模型中 M 保存除数,A 保存部分余数,Q 初始装被除数并逐位形成商;位置是模型约定,不是所有 ISA 的固定寄存器号。

原理、适用条件与辨析

图采用恢复余数的无符号迭代模型:A:Q 左移→A−M→若负则恢复并写商位 0,非负写商位 1。A 需留足试减的额外位,迭代 n 轮,最终 Q 为商、A 为余数。

简短例子

13÷3 的最终商为 4、余数为 1,满足 13=3×4+1。

除法器:左移 → 试减 → 判商位Q 从被除数逐轮变成商,A 从零成为余数。每轮左移后减 M,负则恢复余数并置商位零,非负置一。结束核对等式和余数范围。除法器:左移 → 试减 → 判商位无符号恢复余数模型 · M > 0 · A 留额外试减位初始 A = 0,Q = 被除数,M = 除数A:Q 左移一位试减 A ← A - M试减后 A < 0A ← A + M(恢复)Q0 ← 0试减后 A >= 0保留试减结果Q0 ← 1循环 n 轮:Q 为商,A 为余数核对:被除数 = M × Q + A,且 0 <= A < M
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:UC San Diego:乘除法与恢复/不恢复余数

自检:循环开始时 Q 保存什么,结束时保存什么?

开始保存被除数,结束保存商。

恢复余数与不恢复余数:恢复的是余数记忆概念易错易混

408 记忆与概念补充

错误认识

“不恢复余数”意味着最终负余数可以原样输出。

定义与正确结论

恢复法试减为负时加回除数;不恢复法根据前轮余数符号选择下一步加或减,结束时可能仍需修正余数。

原理、适用条件与辨析

无符号标准移位版本:旧 A≥0 时下一轮左移后减 M;旧 A<0 时左移后加 M,再据结果设置商位。若最终 A<0,补加 M 修正。补码有符号算法另看题设。

简短例子

“下一轮用加法替代立即恢复”不等于永远没有任何恢复或末尾校正。

参考:UC San Diego:乘除法与恢复/不恢复余数

自检:不恢复法的最终余数是否仍需满足范围?

需要,无符号且 M>0 时应满足 0≤R<M。

除法结果边界:零除与商溢出记忆概念易错易混

408 记忆与概念补充

错误认识

只检查除数不为 0 就能保证有符号除法合法。

定义与正确结论

还要检查目标商是否可表示;n 位补码最小值 −2^(n−1) 除以 −1,商为 2^(n−1),超出 n 位有符号范围。

原理、适用条件与辨析

对双字长被除数/单字长商,也需专门检查商位宽。机器整数除法和浮点除法的异常处理不同,不能混用。

简短例子

8 位补码 −128÷(−1) 的数学商为 128,无法装入 8 位有符号结果。

自检:8 位 −128÷1 是否也会商溢出?

不会,−128 在 8 位补码范围内。

补码加减:减法变加法与双符号位记忆概念易错易混

408 章节补全

错误认识

补码减法等于把被减数取补;双符号位相同表示溢出。

定义与正确结论

A−B 以 A+(−B 的补码)实现;常见双符号位运算中 01 为正溢出、10 为负溢出,00/11 未发生该类溢出。

原理、适用条件与辨析

位宽固定时结果截取低位,但有符号溢出仍要检查。形成 −B 时注意最小负数边界;借位、进位、OF、符号位不能混称。

简短例子

正数减负数可能正溢出,而不同号相加通常不会有有符号加法溢出。

自检:补码减法的 OF 能只看最高位进位吗?

不能,还需按减法符号关系或最高位进/出位关系判断。

串行进位与先行进位:进位链决定延迟记忆概念易错易混

408 章节补全

错误认识

先行进位是把整数的各位顺序相加,只提高时钟频率。

定义与正确结论

串行进位逐级等待低位进位;先行进位根据产生/传递函数并行推导进位,缩短关键路径。

原理、适用条件与辨析

两者都执行相同二进制加法,但延迟和硬件代价不同。多级先行进位还按组组织,不能只按全宽线性级数估算。

简短例子

8 位加法的最高位不必在先行结构中等 7 次逐位传播才得到进位。

自检:两种加法器是否会对同一输入给不同正确和?

不会,差别是实现与速度等代价。

浮点四步:对阶、运算、规格化、舍入记忆概念易错易混

408 章节补全

错误认识

浮点相加可直接加阶码;舍入发生一次后无需再检查溢出。

定义与正确结论

加减先对阶,再对尾数运算,规格化并舍入;乘除则按规则处理阶码与尾数,最终仍检查规格化和范围。

原理、适用条件与辨析

对阶尾数右移可能丢位,需保护/舍入/粘滞信息。舍入进位可能需要再次右规;阶码上溢与尾数暂时超范围不同,下溢可能转为非正规数或按题设处理。

简短例子

两个尾数相加超过正规范围,可右移尾数并增加阶码。

自检:舍入后尾数变为 10.000… 时应怎么处理?

再次右规并更新阶码,检查最终可表示性。

指令与数据通路

PC:顺序后继、跳转目标与返回地址个人错题易混

近期错题:过程调用、PC 与 RET

错误认识

CALL 或 RET 的目标偶然等于下一条地址,就算顺序执行。

定义与正确结论

顺序执行按指令长度推进;CALL 设置调用目标并保存返回地址;RET 从保存位置取得返回地址。

原理、适用条件与辨析

“下一条执行的指令”可以是转移目标,而“内存中紧邻的下一条”指顺序后继。即使两个数值恰好相同,也不改变地址来源和指令语义。

简短例子

CALL 的目标可恰好紧邻,但它仍按调用语义执行;RET 通常返回对应调用后的指令。

自检:RET 的返回位置是否总是 RET 自己的顺序后继?

不是,通常是先前保存的调用后续地址。

PC、IR 与指令译码器:控制部件个人错题易混近年考查

近期错题:控制部件的组成

错误认识

IR 存的是运算数据,译码器完成算术运算。

定义与正确结论

PC 保存指令地址,IR 保存当前指令,译码器分析操作码;通常都归入控制部件。

原理、适用条件与辨析

IR 不一定在每个执行微操作中变化。ALU 完成运算,控制器生成相应微操作控制信号;具体组成以题设模型为准。

简短例子

指令取出后送入 IR,随后译码;执行期间 PC 可能已指向后继。

相关真题:2025 · 第 19 题

自检:指令译码器的主要输入是什么?

通常是 IR 中的操作码等指令字段。

有效地址与间接寻址:地址不等于数据个人错题易错

近期批改回顾:寻址与数据通路

错误认识

M[address] 总能直接作为操作数。

定义与正确结论

先按寻址方式求有效地址 EA,再依指令访问 M[EA];立即数是指令内的数据。

原理、适用条件与辨析

直接寻址 EA=A;一次间接寻址 EA=M[A];基址/变址/相对寻址还需叠加相应寄存器。计算时须区分地址、地址处的指针和最终操作数。

简短例子

一次间接寻址:A=100,M[100]=200,M[200]=7,操作数是 7。

自检:间接寻址中 M[A] 一定是最终数据吗?

不是,通常是有效地址。

ISA 与微体系结构:可见接口和实现细节冷门易混近年考查

补充知识点

错误认识

时钟周期、Cache 容量和加法器结构都属于 ISA 的必然规定。

定义与正确结论

ISA 规定软件可见的指令、寄存器、数据类型及寻址等接口;流水线级数和具体电路通常属于实现。

原理、适用条件与辨析

相同 ISA 可由不同处理器实现,性能和内部结构可以不同。某些状态寄存器或扩展特性是否可见仍要看具体 ISA。

简短例子

支持相同指令集的两个 CPU 可以有不同 Cache 和不同主频。

相关真题:2025 · 第 16 题

自检:指令操作码和寻址方式属于哪一层?

通常属于 ISA。

指令格式:操作码、地址码与扩展操作码记忆概念易错易混

408 章节补全

错误认识

操作码增加一位不影响地址空间;扩展操作码按最短码长度直接相加。

定义与正确结论

固定总长下,操作码与地址字段共享位数预算;扩展操作码通过前缀区分不同格式,需要避免编码冲突。

原理、适用条件与辨析

多地址指令耗较多地址字段,留给短操作码的位数较少。已使用的短操作码前缀会占用对应的所有更长编码,不可重复计数。

简短例子

一个已分配的 k 位操作码,可排除具有该前缀的 2^(l−k) 个 l 位长编码。

自检:指令字长是否必与机器字长相同?

不必,可固定或可变,也可跨多个机器字。

基址、变址与相对寻址:谁提供变化记忆概念易错易混

408 章节补全

错误认识

基址、变址、相对寻址都以 IR 地址字段直接作最终地址。

定义与正确结论

基址常为基址寄存器+位移;变址常为变址寄存器+地址/位移;相对寻址为规定时刻的 PC+相对位移。

原理、适用条件与辨析

位移可能有符号,需要扩展。PC 究竟是当前指令地址还是已更新后的顺序后继,要看题设;基址与变址在硬件求和相似,但用途和可变部分不同。

简短例子

数组遍历常改变变址寄存器;程序重定位常调整基址。

自检:相对位移为负时应一律零扩展吗?

不应,按题设有符号位移进行符号扩展。

RISC/CISC 与 Load/Store记忆概念易错易混

408 章节补全

错误认识

RISC 的所有指令都固定一拍完成;CISC 不可能流水化。

定义与正确结论

典型 RISC 强调较规则的指令、寄存器操作和 Load/Store 访问存储器,利于流水;CISC 通常有较复杂格式与操作。

原理、适用条件与辨析

这些是风格特征,不是对所有实现的绝对保证。现代处理器可把复杂指令分解成内部操作;访存、乘除或异常可能使执行时间不同。

简短例子

典型 Load/Store ISA 中算术指令主要在寄存器间运算,访存由专门指令完成。

自检:RISC 是否必然不用任何多周期功能单元?

不必然,乘除等可以多周期。

单总线数据通路:暂存寄存器和微操作记忆概念易错易混

408 章节补全

错误认识

单内部总线能同拍把任意两个寄存器同时驱动到同一 ALU 输入。

定义与正确结论

单总线一次通常只有一个源驱动;ALU 常需 Y 等暂存第一个操作数,Z 等暂存结果,再按微操作转送。

原理、适用条件与辨析

控制信号需同时满足总线不冲突、源有效、目标写入、ALU 功能及存储器时序。MAR 送地址、MDR 传数据不能互换;具体寄存器名看题图。

简短例子

实现 R1←R1+R2 可分为 R1→Y、R2与Y运算→Z、Z→R1 等微步骤。

自检:能否随意让两个不同寄存器同时把数值输出到单总线?

不能,通常会造成驱动冲突,除非题图明确有特殊机制。

存储系统

Cache:块内偏移、组号、标记个人错题易错近年考查记忆概念

近期批改:Cache 组号、标记与地址拆分

错误认识

主存块号就是 Cache 组号;标记包含组号。

定义与正确结论

主存块号=地址/块大小向下取整;组号=块号 mod 组数;标记=块号/组数向下取整。

原理、适用条件与辨析

按字节编址且参数为 2 的幂时:低位为块内偏移,中间为组索引,高位为标记。组数=数据容量/(块大小×路数),不能把路数当组数。

简短例子

两块映射到同一组,还需要比较标记;组相同不代表命中。

相关真题:2022 · 第 16 题

自检:增加路数且总数据容量固定,会怎样影响组数?

组数减少,索引位减少;地址位数和块大小不变时标记位增加。

写直达/写回与写分配:两套决策易混近年考查

补充知识点

错误认识

写回一定等于写分配;写直达必然没有缓存。

定义与正确结论

写直达/写回规定写命中后如何更新下层;写分配/非写分配规定写不命中时是否把块调入。

原理、适用条件与辨析

两套策略分别回答不同问题。写回通常需要脏位;替换干净块无需写回。题目给出组合时必须按组合执行。

简短例子

写回且写分配:写缺失先调块,修改后置脏,替换脏块再写回。

相关真题:2024 · 第 16 题

自检:有效位和脏位能互相替代吗?

不能;有效位表示内容是否有效,脏位表示是否相对下层被修改。

MAR、MDR 与按字节编址易错易混

补充知识点

错误认识

MAR 位数必须等于 MDR 位数。

定义与正确结论

MAR 保存地址,其位数关联寻址范围;MDR 保存一次数据传送的内容,位数关联数据通路。

原理、适用条件与辨析

按字节编址时 n 位地址可表示 2^n 个字节地址。按字编址则表示 2^n 个字,容量还需乘每字字节数。

简短例子

MAR 为 24 位而 MDR 为 32 位,不矛盾;不能用 MDR 位数直接计算地址容量。

自检:24 位字节地址能表示多少地址空间?

2^24 B,即 16 MiB。

SRAM、DRAM、ROM 与刷新记忆概念易错易混

408 章节补全

错误认识

DRAM 读出不需恢复,SRAM 每隔一段时间必须刷新。

定义与正确结论

SRAM 依靠双稳态电路保存,通常不需刷新;DRAM 用电容保存,需刷新且读出常需恢复。ROM 类用于非易失保存。

原理、适用条件与辨析

DRAM 容量密度高、常作主存,SRAM 较快常作 Cache。刷新并非 CPU 逐条执行读写指令完成;读写周期与刷新开销要区分。

简短例子

断电后普通 SRAM/DRAM 数据通常丢失,不能因 SRAM 不刷新就认为它非易失。

自检:DRAM 是否因为断电前会刷新就能长期断电保存?

不能,仍属易失存储器。

存储芯片扩展:位扩展与字扩展记忆概念易错易混

408 章节补全

错误认识

芯片数量只等于总容量比,连线方式不必区分。

定义与正确结论

位扩展并联增加一个地址的数据位数;字扩展增加可寻址字数,需要片选区分组。

原理、适用条件与辨析

总片数可按目标总位数/单片总位数求,但仍需按每组位宽、组数和地址线划分连线。读写控制、地址输入可共用,数据线和片选要按方案组织。

简短例子

8K×8 的芯片构成 16K×16:每组 2 片位扩展,2 组字扩展,共 4 片。

自检:位扩展时,同组芯片的地址输入是否通常相同?

相同,分别提供该地址不同的数据位。

低位交叉与高位交叉:连续地址落在哪里记忆概念易错易混

408 章节补全

错误认识

低位交叉让连续地址全落在同一模块。

定义与正确结论

低位交叉用低地址位选模块,连续地址分散到不同模块,适合重叠访问;高位交叉用高位选模块,连续块可在同一模块。

原理、适用条件与辨析

并行访存受模块忙闲、周期和发起间隔限制。对步长与模块数有规律的访问,低位交叉也可能持续冲突,不能保证任意访问都满带宽。

简短例子

4 模块低位交叉时,地址 0、1、2、3 分别去模块 0、1、2、3。

自检:访问步长恰为 4,在 4 模块低位交叉中一定分散吗?

不一定,可能总落在同一模块。

Cache 三种映射:比较器、冲突与地址字段记忆概念易错易混

408 章节补全

错误认识

全相联仍必须有 Cache 行号字段;直接映射能把冲突块放到任意行。

定义与正确结论

直接映射每块只有一个行位置;全相联可放任意行;组相联先定位组,再在组内任意路寻找。

原理、适用条件与辨析

直接映射比较少但冲突限制强;全相联查找代价大,索引字段可无;组相联折中。每一路保存自身标记与状态;命中需有效位和标记匹配。

简短例子

两主存块映同一直接行会互相替换;组内有多个路时可同时驻留。

自检:全相联的块内偏移是否也消失?

不会,仍需在块内选择字节/字。

虚拟存储硬件:页表基址、MMU 与保护记忆概念易错易混

408 章节补全

错误认识

MMU 保存整个进程的所有数据,页表只记录是否在 Cache 中。

定义与正确结论

MMU 按页表/TLB 完成地址转换和保护检查;页表项记录页框、存在与权限等,页表基址帮助找到页表。

原理、适用条件与辨析

TLB 可能包含地址空间标识以区分进程;切换时如何处理看实现。页框号与页内偏移拼出物理地址,缺页由硬件检测并转交 OS 处理。

简短例子

同一虚拟页号在两个进程中可映射到不同物理页框。

自检:页表中存在位有效但权限不允许写,写访问能否直接通过?

不能,仍需保护检查,可能触发保护异常。

存取时间、存储周期与突发传输记忆概念易错易混

408 章节补全

错误认识

存取时间、存储周期与 CPU 时钟周期永远相等。

定义与正确结论

存取时间是请求到数据有效的延迟;存储周期还包括恢复等使下次同类操作可开始的间隔;CPU 时钟周期是处理器节拍。

原理、适用条件与辨析

突发传输常首次延迟较长,随后连续传多字,摊薄地址/访问开销。刷新、行命中/未命中等可改变 DRAM 时序,题目必须明确计时模型。

简短例子

总线有数据阶段不代表主存每个周期都能接受独立访问,仍受存储周期约束。

自检:求吞吐率能否只用首次数据访问延迟而忽略连续传送间隔?

不能,需按完整事务和重叠规则计算。

CPU 与流水线

流水线:相关、冒险与转发个人错题易错近年考查

近期批改回顾:无转发流水线与指令相关

错误认识

相关指令必停顿;有转发就不会停顿。

定义与正确结论

数据相关是依赖关系;是否形成冒险及停顿取决于流水线阶段、写回/读寄存器时序与转发路径。

原理、适用条件与辨析

ALU 结果可提前转发;典型五段流水线的紧邻 load-use 仍可能停一拍。无转发题必须等结果可读,不能擅自套转发时序。

简短例子

同一周期能否先写后读寄存器文件,必须看题设。

相关真题:2024 · 第 19 题;2025 · 第 19 题

自检:有转发能否一律判定 CPI=1?

不能,还可能有 load-use、控制冒险和结构冒险。

硬布线与微程序:微指令不等于机器指令冷门易混近年考查

补充知识点

错误认识

微程序存放在普通主存,微指令由程序员直接编写执行。

定义与正确结论

微程序控制器用控制存储器中的微指令生成控制信号;一条机器指令通常对应一个微程序。

原理、适用条件与辨析

机器指令描述软件层操作,微指令描述一个微周期的控制操作。水平型允许较多并行控制,垂直型编码更紧凑、译码更多。

简短例子

取指微程序可由多条微指令组成,并由多种机器指令共享。

相关真题:2024 · 第 13 题

自检:微指令地址与 PC 保存的地址是一回事吗?

不是,通常由微地址寄存器管理控制存储器地址。

CPU 时间:指令数、CPI 与周期记忆概念易错易混

408 记忆与概念补充

错误认识

CPI 小的机器运行所有程序都更快;频率等于数据传输率。

定义与正确结论

CPU 时间=指令数×平均 CPI×时钟周期=指令数×平均 CPI/主频。

原理、适用条件与辨析

比较时要同时考虑三个因子。总线时钟频率乘每拍传输次数才是传输频率,带宽再乘每次传送字节数;MT/s 与 MHz 不能无条件互换。

简短例子

同一程序若机器 A 的 CPI 降低但时钟周期变大,CPU 时间不一定缩短。

自检:平均 CPI 应按什么加权?

按各类指令实际执行数量或比例加权,而不是按指令类别简单平均。

指令周期、机器周期与中断周期记忆概念易错易混

408 章节补全

错误认识

一个时钟周期必执行一条指令;中断周期就是执行一次普通取指。

定义与正确结论

时钟周期是基本时间单位;一条指令可历经取指、间址、执行等阶段,必要时响应中断。机器周期的定义取决于题设模型。

原理、适用条件与辨析

间接寻址可能增加访存阶段;中断响应含保存断点及转向服务入口等操作。不要把存储周期、机器周期、指令周期都视为固定相等。

简短例子

多周期 CPU 一条访存指令可以由多个时钟周期组成。

自检:中断服务程序的每条指令是否也要正常取指执行?

需要,中断响应阶段与服务程序执行仍应分别计入。

流水线性能:延迟、吞吐率与加速比记忆概念易错易混

408 章节补全

错误认识

k 级流水线任何情况下都使一条指令延迟变为原来的 1/k。

定义与正确结论

流水主要提高多条指令的吞吐;单条指令仍要经过各级。理想等长 k 段、每段 τ,n 条连续执行为 (k+n−1)τ。

原理、适用条件与辨析

非流水同模型为 nkτ,理想加速比 nk/(k+n−1),n 大时趋 k。锁存延迟、最长阶段、停顿和填充/排空降低实际收益。

简短例子

k=5、n=1 时理想加速比为 1,不是 5。

自检:吞吐率提高是否等于单条指令响应时间一定缩短?

不等于,两种指标不同。

中断与 I/O

中断总耗时:响应与服务分别计入个人错题易错近年考查

近期批改:中断响应周期遗漏

错误认识

只计算中断服务程序的执行时间。

定义与正确结论

若题目问一次中断总开销,应按题设计入响应、现场保存、服务、恢复和返回,避免遗漏或重复。

原理、适用条件与辨析

硬件完成哪些保存操作、软件完成哪些操作由体系结构决定。中断屏蔽与中断优先级也不同,不能只按服务程序条数估算。

简短例子

题目另给“响应需要若干周期”,若不包含在服务时间中,就要单独计入。

相关真题:2024 · 第 21 题

自检:响应时间已包含在总服务时间中,是否还应再次相加?

不应,先确认各时间区间的定义。

DMA 与中断方式:谁搬数据冷门易混近年考查

补充知识点

错误认识

DMA 完全不需要 CPU,也不使用中断。

定义与正确结论

中断方式通常由 CPU 指令搬运数据;DMA 控制器承担成块数据传送,CPU 负责初始化及结束处理。

原理、适用条件与辨析

DMA 可争用总线或访存周期,并在完成/异常时中断 CPU。降低 CPU 搬运负担不等于传送过程对 CPU 没有影响。

简短例子

CPU 设置缓冲区地址、长度和方向后,DMA 按配置传送。

相关真题:2024 · 第 22 题

自检:DMA 完成后能否请求中断?

可以。

中断响应优先级与处理优先级冷门易混近年考查

补充知识点

错误认识

中断屏蔽字决定硬件同时请求时的全部响应次序。

定义与正确结论

响应优先级决定同时请求时先响应谁;处理优先级决定服务程序执行时允许谁嵌套,由屏蔽设置等控制。

原理、适用条件与辨析

两种次序可以不同。现场保存、断点保存和开/关中断的时机必须按题设区分,不能只比较中断号大小。

简短例子

某源硬件响应优先级高,但服务时可被另一源打断,说明处理次序另有设置。

相关真题:2024 · 第 21 题

自检:改中断屏蔽字是否一定改变硬件排队器顺序?

不一定,屏蔽与排队选择是不同机制。

I/O 接口、端口与统一/独立编址记忆概念易错易混

408 章节补全

错误认识

设备接口只有数据寄存器;统一编址访问设备不消耗任何地址空间。

定义与正确结论

接口常有数据、状态、控制寄存器;统一编址将 I/O 端口置入存储地址空间,独立编址用单独端口空间和访问指令。

原理、适用条件与辨析

查询方式检查状态,控制命令配置设备,数据寄存器承担实际传送。设备物理执行由控制器协作,CPU 不能把所有端口都当普通可缓存内存访问。

简短例子

统一编址下,普通访存指令可按规定访问 I/O 区域,但会占地址范围。

自检:设备状态与要传输的数据是否通常属于同一个逻辑字段?

不是,应区分状态/控制与数据。

DMA 传送模式:周期挪用、成组与透明记忆概念易错易混

408 章节补全

错误认识

DMA 的每次传输都必须由 CPU 指令读取并再写入数据。

定义与正确结论

DMA 直接控制设备与主存传送;成组方式连续占用总线,周期挪用夺取部分访存周期,透明方式尽量利用 CPU 不需总线的时段。

原理、适用条件与辨析

各模式在 CPU 停顿、控制开销与传输速度间折中。CPU 初始化 DMA 和处理中断仍有开销;DMA 请求/总线授权不等于中断响应时机。

简短例子

周期挪用让 CPU 暂失一个或一些访存周期,而不是必然中止整个程序到整块全部传完。

自检:透明 DMA 是否意味着绝对无控制开销?

不意味着,只是尽量避免与 CPU 总线需求冲突。

中断向量、向量地址与服务入口记忆概念易错易混

408 章节补全

错误认识

中断向量地址就是中断服务程序的入口地址,二者不能有区别。

定义与正确结论

向量通常含服务入口等信息;向量地址是存放该向量的表项位置;取表项后才得到入口。

原理、适用条件与辨析

不同架构可能直接编码入口或有不同表结构,以题设为准。硬件识别请求、形成向量地址、保存断点与跳转是不同动作;软件继续保存通用现场。

简短例子

向量地址为 100,M[100]=200,则服务入口可为 200,不是 100。

自检:中断响应是否等同于把 PC 加上固定指令长度?

不等同,要转向相应服务入口。

计算机概述

冯·诺依曼与哈佛:存储与总线的组织记忆概念易错易混

408 章节补全

错误认识

存储程序计算机只允许数据放在内存,指令不属于存储内容。

定义与正确结论

冯·诺依曼思想把指令与数据存入存储器,按指令执行;哈佛结构将指令和数据存储/通路分开。

原理、适用条件与辨析

现代处理器可能主存统一而指令/数据 Cache 分开,不能只凭一级 Cache 分离就断言整个系统纯哈佛。软硬件共同决定执行行为。

简短例子

一条机器指令在存储器中也以二进制编码保存。

自检:指令与数据外观都是位串,如何区分用途?

由地址、程序执行阶段与体系结构的解释方式决定。

编译、汇编、链接与装入记忆概念易错易混

408 章节补全

错误认识

汇编器负责把高级语言直接翻译成最终已装入的运行程序。

定义与正确结论

常见流程:预处理→编译→汇编→链接→装入;编译生成低层表示,汇编生成目标代码,链接处理符号与模块组合。

原理、适用条件与辨析

具体工具链可合并阶段,但职责仍需区分。目标文件未必已经解析全部外部符号;装入与执行时的动态链接也可另发生。

简短例子

调用库函数的符号引用可在链接阶段与库模块对应。

自检:汇编语言与机器语言是一回事吗?

不是,汇编用助记符表达低层指令,机器语言是其可执行编码。

总线

总线仲裁:链式、计数查询与独立请求记忆概念易错易混

408 章节补全

错误认识

优先级高的设备一定不会让其他设备饥饿,链式查询对故障完全不敏感。

定义与正确结论

集中仲裁常见链式查询、计数器定时查询、独立请求;在控制线数量、优先级灵活性和响应速度间折中。

原理、适用条件与辨析

链式次序常赋予固定优先级且对链路故障敏感;计数器起点可影响公平;独立请求可更灵活但控制线更多。不能仅凭名称判断所有具体策略。

简短例子

固定高优先级设备不断请求可能使低优先级长期等待。

自检:DMA 和 CPU 同时需总线时,只靠谁先到就总能决定吗?

不一定,应按总线仲裁规则。

同步、异步与分离事务:时钟不是带宽记忆概念易错易混

408 章节补全

错误认识

总线频率×位宽在任何事务模型下都等于有效数据吞吐率。

定义与正确结论

同步总线依赖共同节拍;异步常用握手;分离事务将请求和响应分开,释放等待期间的总线。

原理、适用条件与辨析

峰值带宽通常按每秒有效传输次数×每次字节数。地址阶段、等待周期、仲裁和协议开销会降低实际吞吐;时钟频率与双倍/多倍传输率要分开。

简短例子

首拍发地址、后几拍等存储器时,不能把每拍都算成数据传输。

自检:64 位总线的一次传送等于 64 字节吗?

不是,64 位是 8 字节。

408 · OS

操作系统

52 条 · 7 个章节

进程与线程

并发、并行与多任务个人错题易混记忆概念

近期错题:多任务与并行

错误认识

多任务操作系统必须有多个 CPU。

定义与正确结论

并发表示一段时间内多个任务都在推进;并行表示同一时刻同时执行。单核可以靠切换实现多任务并发。

原理、适用条件与辨析

单核普通执行流同一时刻仅执行一个线程,I/O 与 CPU 仍可重叠。多核提供多个硬件执行资源;逻辑处理器和物理芯片数量也不能直接等同。

简短例子

单核轮流运行 A、B,两者都有进展但不必在同一时刻执行。

自检:多任务是否能推出多 CPU?

不能。

进程与线程:共享资源和独立上下文易混近年考查

补充知识点

错误认识

同一进程的线程共享所有寄存器和栈。

定义与正确结论

同进程线程通常共享地址空间和文件等资源,各有独立寄存器上下文和栈。

原理、适用条件与辨析

用户线程/内核线程的管理方式另需区分。一个进程可含多个线程,线程局部变量与共享变量不能仅靠变量名判断。

简短例子

两个线程各自栈上的 x 不一定是同一个对象;访问同一全局 x 才可能竞争。

相关真题:2024 · 第 28 题

自检:同进程线程是否通常共享堆?

通常共享地址空间中的堆,但各有独立栈。

就绪、阻塞与运行:唤醒不是立即运行易错易混

补充知识点

错误认识

I/O 完成使进程直接从阻塞变为运行。

定义与正确结论

典型状态转换:运行→阻塞为等待事件;阻塞→就绪为事件完成;就绪→运行由调度分派。

原理、适用条件与辨析

运行→就绪可由时间片用尽或被抢占造成。阻塞进程缺少执行条件,不能靠给它 CPU 就解决等待。

简短例子

I/O 完成后先进入就绪队列,可能仍需等待 CPU。

自检:时间片用尽后进程通常进入什么状态?

就绪态。

fork:独立地址空间与共享文件描述冷门易混

补充知识点

错误认识

fork 后父子进程的所有变量永久共享。

定义与正确结论

父子进程有各自逻辑地址空间;写时复制可暂时共享物理页,写入时再复制。继承的文件描述符可引用同一打开文件描述。

原理、适用条件与辨析

父子都从 fork 返回处继续,返回值不同。普通内存修改不会自动修改对方的变量;共享映射是另一个机制。

简短例子

同一继承文件的偏移可能共享,但局部变量 x 的写入通常各自独立。

自检:父进程写普通变量 x,子进程能否必然看到更新?

不能。

PCB 与上下文:控制信息不等于整个内存副本记忆概念易错易混

408 章节补全

错误认识

PCB 保存进程全部代码、堆和文件内容。

定义与正确结论

PCB 记录进程标识、状态、调度、资源和 CPU 上下文等控制信息,是系统管理进程的基础;代码与数据另占地址空间。

原理、适用条件与辨析

进程切换需保存/恢复寄存器及必要管理状态,不是复制全部内存。程序为静态代码,进程为运行实例,同一程序可对应多个进程。

简短例子

多个进程可执行同一可执行文件,但有各自状态与逻辑地址空间。

自检:进程被换下 CPU 后,其 PC 值是否应丢弃?

不能,须保存在上下文中以恢复执行。

创建、exec 与终止:程序替换不等于新建进程记忆概念易错易混

408 章节补全

错误认识

exec 必然新建一个 PID;父进程终止必然终止每个子进程。

定义与正确结论

创建产生新进程控制结构;典型 exec 在现有进程中替换程序映像;终止回收资源并处理关联关系。

原理、适用条件与辨析

不同系统有不同父子终止策略,不能把级联终止作为所有系统必然行为。子进程继承与共享资源也要按规则区分。

简短例子

fork 后子进程可 exec 新程序,但典型 Unix 中其 PID 不因 exec 本身变化。

自检:exec 是否与 fork 承担同样职责?

不是,fork 创建运行实例,exec 替换程序映像。

用户级线程、内核级线程与映射模型记忆概念易错易混

408 章节补全

错误认识

所有用户线程阻塞都使整个进程阻塞;所有模型都能多核并行。

定义与正确结论

多对一用户线程依赖一个内核执行实体,阻塞和并行受其限制;一对一由内核分别调度;多对多结合两层映射。

原理、适用条件与辨析

用户级切换可低开销,但不是所有阻塞都等价于整个进程被阻塞,须看是否陷入内核及映射方式。多核并行需要多个可并行内核执行实体。

简短例子

多对一模型若一个线程进行阻塞系统调用,可影响同进程其他用户线程运行。

自检:纯用户态切换一定要求 OS 为每个用户线程维护独立调度项吗?

不一定,多对一模型可由用户线程库管理。

进程间通信:共享内存、消息与管道记忆概念易错易混

408 章节补全

错误认识

独立进程只要虚拟地址相同就自动共享变量;匿名管道可任意随机定位。

定义与正确结论

IPC 可用共享内存、消息传递、管道等。共享内存让进程映射同一对象,但仍需同步;管道通常按字节流或给定消息规则顺序通信。

原理、适用条件与辨析

相同虚拟地址可映不同物理页。普通匿名管道与命名管道在使用范围上不同,读写端关闭、空/满等待影响行为。通信通道不自动提供所有并发互斥。

简短例子

两个进程共享一页存数据,生产消费双方仍需约定有效数据与访问顺序。

自检:共享内存高速是否意味着不用锁或信号量?

不是,仍可能有数据竞争和顺序要求。

调度与中断

时钟中断与时间片:中断不一定切换个人错题易混

近期错题:时钟中断

错误认识

每次时钟中断都会更换当前运行进程。

定义与正确结论

定时器产生时钟中断,OS 可更新时间、统计 CPU 使用和检查调度条件;是否切换由条件决定。

原理、适用条件与辨析

时钟中断是外部异步中断。时间片可能由多个时钟滴答组成;内核处理完中断后也可继续原任务。

简短例子

时间片尚未用完且没有更高优先级任务,就可能继续运行当前进程。

自检:时钟中断能否仅更新计时而不切换进程?

可以。

动态优先级:读清更新公式和比较方向个人错题易错

近期批改:动态优先级漏计 CPU 时间

错误认识

等待时间越长就一定优先级越高,CPU 时间可以忽略。

定义与正确结论

按题设同时更新 cpuTime、等待量等变量,确认“数值大优先”还是“数值小优先”,以及何时重新计算。

原理、适用条件与辨析

不同系统的优先级编号方向不同。到达、抢占、运行、阻塞等事件可能改变状态,静态排序不能替代过程推演。

简短例子

若优先数含 CPU 使用项,运行中的进程会随 CPU 时间积累而变化。

自检:调度题最先写清哪三个约定?

优先数比较方向、更新公式、更新时刻。

HRRN、SJF 与饥饿:非抢占也可能饥饿冷门易混

补充知识点

错误认识

只有抢占式算法才会饥饿;HRRN 只看作业长度。

定义与正确结论

SJF 可让长作业长期等待;HRRN 比较 (等待时间+服务时间)/服务时间,通常按非抢占方式选择。

原理、适用条件与辨析

等待越久,响应比越大,能缓解长期等待。绝对“不会饥饿”仍需结合有限作业或到达假设,不能对任何负载无条件保证。

简短例子

一个长作业等待期间不断到来短作业,SJF 可能一直选短作业。

自检:HRRN 中等待时间增长,响应比如何变化?

在服务时间固定时增大。

中断、异常与系统调用:发生时刻和处理时刻易错易混近年考查

补充知识点

错误认识

异常发生时 CPU 一定已在内核态;函数调用自动切换内核态。

定义与正确结论

中断/异常可以在用户态运行时发生;进入处理程序后由硬件切换到规定特权级。系统调用通过陷入机制请求内核服务。

原理、适用条件与辨析

外部中断通常异步;异常与当前指令同步。普通库函数可完全在用户态执行,也可能封装系统调用。发生前模式与处理时模式不能混淆。

简短例子

用户程序访问不存在的页时可以触发缺页异常,而缺页处理程序在内核态执行。

相关真题:2022 · 第 31 题;2024 · 第 23 题

自检:普通函数调用是否必然导致用户态转内核态?

不必然,系统调用入口才需要特权切换。

调度层次与上下文切换:三个层次记忆概念易错易混

408 章节补全

错误认识

作业调度、交换调度与 CPU 调度都每执行一条指令进行一次。

定义与正确结论

高级调度选择作业进入系统/内存;中级调度管理换入换出;低级调度选择就绪任务使用 CPU。

原理、适用条件与辨析

并非所有 OS 都实现这三层。调度是选择,分派/切换是实施;用户态到内核态转换可仍属于同一进程,不必发生进程切换。

简短例子

系统调用完成后返回原任务,发生模式切换但不一定换进程。

自检:CPU 从用户态进入内核态能否直接推出换了进程?

不能。

周转、等待、响应与带权周转记忆概念易错易混

408 章节补全

错误认识

响应时间等于程序从提交到全部完成的时间。

定义与正确结论

周转=完成−到达;带权周转=周转/服务时间;响应是首次有效响应前的等待;等待是处于等待 CPU 等状态的累计时间(按模型)。

原理、适用条件与辨析

有 I/O 时等待时间不能无条件用周转−CPU 服务时间,可能还需区分 I/O 等待。题设若是纯 CPU 作业模型,则常用该差值。

简短例子

任务很快显示第一条输出但仍运行很久,响应短不代表周转短。

自检:求平均带权周转是否等于平均周转除以平均服务时间?

一般不等,应先分别求各任务比值再按规定平均。

FCFS、SJF、RR 与多级反馈记忆概念易错易混

408 章节补全

错误认识

时间片轮转越大响应越好;SJF 都按抢占实现。

定义与正确结论

FCFS 按到达,SJF 常非抢占,SRTF 按剩余时间抢占;RR 轮流给时间片,多级反馈可按运行表现调整队列。

原理、适用条件与辨析

RR 片很大时可近似 FCFS,片太小切换开销大。到达、抢占、平局排序和新到任务插入位置改变结果,要明确约定。

简短例子

一个长任务前面只有一个很短任务,SJF 可能先完成短任务以降低平均等待。

自检:HRRN 与 SRTF 都必需在新任务到来时抢占吗?

不,常见 HRRN 是非抢占,SRTF 是抢占。

多处理机调度:亲和性与负载均衡记忆概念易错易混

408 章节补全

错误认识

负载均衡只追求各核任务数量相同,迁移没有代价。

定义与正确结论

多处理机调度既考虑资源利用,也考虑缓存/NUMA 等局部性;处理机亲和性倾向保留任务在熟悉的处理机上。

原理、适用条件与辨析

共享或每核就绪队列均可采用;迁移可能损失 Cache 热数据并引入协调开销。任务数相等不代表工作量相等,软/硬亲和的限制也不同。

简短例子

一个 CPU 密集任务与多个短等待任务,数量相同不代表计算负载相同。

自检:强制频繁迁移一定提高总性能吗?

不一定,可能损失局部性与增加管理开销。

同步与死锁

生产者消费者:先申请资源,再进入互斥区个人错题易错

近期批改回顾:PV 顺序与遗漏操作

错误认识

先 P(mutex),再 P(empty/full) 总是安全。

定义与正确结论

典型有界缓冲区:生产者 P(empty)→P(mutex);消费者 P(full)→P(mutex),操作后释放互斥并通知对方。

原理、适用条件与辨析

如果持有互斥锁时等待 empty/full,对方可能无法进入缓冲区释放所需资源,形成死锁。每次成功申请都要有对应释放。

简短例子

缓冲区已满,生产者先持有 mutex 再等 empty;消费者无法取得 mutex 去消费。

自检:能否持有缓冲区 mutex 再等待 full?

典型方案不应如此,应先 P(full)。

共享变量与原子性:加一不是一个原子步骤个人错题易错

近期错题:线程变量与执行顺序

错误认识

x++ 在所有机器上都是不可分的操作。

定义与正确结论

源代码的一行可能包含读、改、写多个步骤;共享变量并发访问需要适当同步。

原理、适用条件与辨析

局部变量名相同不一定共享;删掉某个线程的变量也不一定修复同步逻辑。应先明确各变量作用域、原子操作和访问顺序。

简短例子

两线程同时读到 x=0,各自写回 1,最终值可能为 1 而不是 2。

自检:给变量加 volatile 就能保证 x++ 原子吗?

不能,volatile 不是互斥或通用原子同步机制。

死锁、饥饿与安全状态易混

补充知识点

错误认识

不安全状态就是已经死锁;打破任一必要条件仍可能形成同类资源死锁。

定义与正确结论

死锁是互相等待而无法推进;饥饿是长期得不到服务;不安全只表示无法保证存在安全序列,不等于当前已死锁。

原理、适用条件与辨析

经典可重用资源模型中,互斥、占有且等待、不可剥夺、循环等待是死锁的必要条件。破坏其中任一可预防该模型中的死锁。

简短例子

银行家算法拒绝后不安全的请求,是避免风险,并非证明进程已经死锁。

自检:死锁状态是否安全?

不安全;但不安全状态不一定已经死锁。

银行家算法:Need、Available 与 Work易错易混

补充知识点

错误认识

发现一个进程当前资源不够,就判定整个状态不安全。

定义与正确结论

Need=Max−Allocation;安全检查尝试寻找 Need≤Work 的未完成进程,假想完成后 Work 加回其 Allocation。

原理、适用条件与辨析

选择是“存在某个可以完成的进程”,不是固定逐号顺序。申请首先检查 Request≤Need、Request≤Available,再试分配并检查安全性。

简短例子

P1 暂不能完成,但 P2 能完成并释放资源,随后 P1 可能满足需要。

自检:安全检查中假想进程完成,Work 加什么?

加回该进程当前已分配的 Allocation,不是 Max 或 Need。

临界区四原则:让权等待与互斥记忆概念易错易混

408 章节补全

错误认识

保证一次只有一人进入就一定满足所有同步正确性要求。

定义与正确结论

互斥只解决同时进入;还需考虑空闲让进、忙则等待、有限等待以及题设要求的让权等待。

原理、适用条件与辨析

自旋锁等待时忙等,不能无条件说满足让权等待;阻塞型等待可让出 CPU。应区分安全性(不同时进入)与进展/公平性。

简短例子

一把永远无人释放的锁仍可互斥,却不能使等待任务正常推进。

自检:临界资源与临界区是什么关系?

资源是共享对象,临界区是访问该对象的受保护代码段。

TSL、Swap 与原子指令:不保证公平记忆概念易错易混

408 章节补全

错误认识

普通函数实现的 swap 与硬件原子 Swap 等价。

定义与正确结论

原子读改写将测试/修改作为不可分操作,可构造互斥;普通读写序列可能被交错,不等价。

原理、适用条件与辨析

硬件保证该操作原子不自动保证锁公平或让权等待。关闭中断在单核内核特定场景可防本核打断,但不能仅靠它阻止其他核并发访问。

简短例子

两线程均读到 lock=0 再各写 1,会同时误以为获得锁。

自检:原子交换是否自动消除所有死锁?

不,锁的申请顺序等仍可能形成死锁。

Peterson:意愿与 turn,先说明执行模型记忆概念易错易混

408 章节补全

错误认识

只用 turn 就同时满足任何情况下的互斥和空闲让进。

定义与正确结论

双进程 Peterson 用 flag 表示进入意愿、turn 打破同时竞争;经典证明基于读写原子和顺序一致等模型。

原理、适用条件与辨析

仅轮流进入可能在另一方不想进入时也阻挡自己。现代硬件/编译器可重排,真实代码还需适当内存语义;408 理论题按给定原子与顺序约定推演。

简短例子

两者同时 flag=true 时,turn 为其中一个提供让步方向。

自检:Peterson 的 flag 与 turn 是可互相完全替代的吗?

不能,二者解决的竞争条件不同。

信号量、管程与条件变量:条件需再检查记忆概念易错易混

408 章节补全

错误认识

条件变量 signal 等于给资源数永久加一;唤醒后条件一定仍成立。

定义与正确结论

信号量维护计数并以 P/V 协调;管程封装共享状态和互斥;条件变量用于在条件不满足时等待并由通知唤醒。

原理、适用条件与辨析

Mesa 风格条件等待应在 while 中重查条件,因为唤醒后可能被他人先改变。条件通知不等于保留一个永久许可;不同管程语义需按题设。

简短例子

消费者被唤醒但尚未拿锁前,另一个消费者可能取走唯一数据。

自检:条件等待返回后通常为何还要检查条件?

唤醒不保证自己实际获得运行时条件仍满足。

读者写者:并发读与独占写记忆概念易错易混

408 章节补全

错误认识

读者之间必须全部互斥,写者优先总能避免所有任务饥饿。

定义与正确结论

读者可并发读取;写者需排他访问。读者计数本身要保护,访问策略区分读者优先、写者优先与公平方案。

原理、适用条件与辨析

首读者锁定写资源、末读者释放是一种常见读者优先方案;源源不断读者可能延迟写者。写者优先也可能使读者长期等待,不能只看互斥。

简短例子

读者共享数据只读,但更新 readCount 属于写共享状态,需单独同步。

自检:允许并发读能否因此省掉读者计数的保护?

不能。

哲学家进餐:防环路与限制并发记忆概念易错易混

408 章节补全

错误认识

每人依次拿左再拿右,只要叉子互斥就不会死锁。

定义与正确结论

各自持一支等待另一支可形成循环等待;可限制同时取叉人数、统一资源顺序或设计仲裁方案。

原理、适用条件与辨析

限制至多 n−1 人尝试是经典思路,但仍需完整释放路径;资源编号顺序消除循环等待。具体公平性另需验证。

简短例子

5 人同时拿左叉后全等右叉,即使每支叉严格互斥,也仍可能死锁。

自检:防死锁方案是否自动保证任何人都不会饥饿?

不自动保证,还需看公平与调度规则。

死锁预防、避免、检测与解除记忆概念易错易混

408 章节补全

错误认识

银行家算法是死锁已经发生后的检测与解除算法。

定义与正确结论

预防破坏必要条件;避免动态保持安全;检测允许发生后识别;解除采取撤销/剥夺等策略。

原理、适用条件与辨析

银行家基于最大需求等信息进行避免。预防可能降低利用率;解除要选牺牲者并防重复牺牲造成饥饿。四类策略目的相近但时机不同。

简短例子

统一资源申请顺序是预防;试分配后安全检查属于避免。

自检:不安全就立即撤销进程是否是银行家必然动作?

不是,典型避免会拒绝/延迟可能使状态不安全的请求。

资源分配图:环的充分性取决于实例数记忆概念易错易混

408 章节补全

错误认识

有向资源分配图只要有环就必然死锁。

定义与正确结论

单实例资源模型中环可构成死锁的充要条件;多实例资源中有环不一定死锁,需结合剩余实例和可完成进程检查。

原理、适用条件与辨析

请求边通常进程→资源,分配边资源→进程。多实例还有外部可完成进程释放资源的可能,单纯画环不能给出完整判定。

简短例子

某类型还有一空闲实例可满足等待者,环内进程仍可能继续。

自检:请求边和分配边方向能否随便反过来?

不能,方向代表等待与占用关系。

存储管理

TLB 缺失、缺页与 Cache 缺失易错易混近年考查记忆概念

补充知识点

错误认识

TLB 不命中就必须从磁盘调页。

定义与正确结论

TLB 缺失:查页表获得映射;缺页:所需页不在内存;Cache 缺失:数据不在该级缓存。

原理、适用条件与辨析

TLB 缓存的是地址转换结果,数据 Cache 缓存的是数据。页表存在位有效时,TLB 不命中仍可直接完成内存访问。

简短例子

页在内存但其映射未进入 TLB,只发生 TLB miss,不发生 page fault。

相关真题:2022 · 第 29 题;2024 · 第 18 题

自检:TLB 命中能否直接说明数据 Cache 命中?

不能,两者缓存对象不同。

分页与分段:碎片位置和保护单位易混记忆概念

补充知识点

错误认识

分页没有任何碎片;分段地址只需段号。

定义与正确结论

分页通常存在页内碎片;分段按逻辑段分配,可能有段间外部碎片。段式地址由段号和段内偏移组成。

原理、适用条件与辨析

固定页大小便于物理分配,逻辑段长度可变。段内偏移必须检查段限,不能只加基址。

简短例子

最后一页用不满是内部碎片;空闲段间空洞是外部碎片。

自检:段内偏移超出段长时,直接用基址+偏移可行吗?

不可行,会触发越界保护。

CLOCK 与 LRU:近似不等于完全一致冷门易混

补充知识点

错误认识

CLOCK 就是精确的 LRU。

定义与正确结论

CLOCK 利用访问位给页面第二次机会,是低开销近似;精确 LRU 需要更细的访问顺序信息。

原理、适用条件与辨析

基本 CLOCK 遇访问位 1 清零并继续,遇 0 选择。改进型还考虑修改位,其扫描规则须看题设。

简短例子

两个页面都访问过,CLOCK 可能不保留它们的精确先后次序。

自检:改进型 CLOCK 为什么考虑脏位?

替换脏页可能需要写回,开销更大。

工作集与抖动:更多进程未必更高利用率冷门易混近年考查

补充知识点

错误认识

缺页越多说明 CPU 越忙,继续增加多道程序度就能改善。

定义与正确结论

工作集是最近一段访问中涉及的页面集合;内存不足以容纳活跃工作集可能引起频繁换页和抖动。

原理、适用条件与辨析

抖动时大量时间花在调页,CPU 利用率可能下降;应考虑减少多道程序度或增加可用页框。工作集大小与窗口和局部性相关。

简短例子

进程刚切换阶段,工作集可能改变,不是永久不变的常数。

相关真题:2022 · 第 30 题

自检:抖动时盲目增加并发进程通常能解决吗?

不能,可能进一步加重内存竞争。

二级页表:页内偏移与每级索引位数记忆概念易错易混

408 记忆与概念补充

错误认识

两级页表就把剩余地址位无条件平分;页表项越大索引位越多。

定义与正确结论

若每个下级页表恰好占一页,单表表项数=页大小/页表项大小;该级索引位数是表项数的 log₂(参数为 2 的幂)。

原理、适用条件与辨析

先从地址宽度扣除页内偏移,再按能容纳的表项数分各级索引。题设可以让页目录大小与下级页表大小不同,不能擅自平分。

简短例子

32 位地址、4 KiB 页、4 B 页表项:页内偏移 12 位,下级索引 10 位,常见两级结构剩余目录索引 10 位。

自检:页内偏移经过地址转换会改变吗?

普通分页中页大小相同,页内偏移不变。

连续分配:首次、最佳、最坏与伙伴记忆概念易错易混

408 章节补全

错误认识

最佳适应留下的空闲区一定更容易使用,外部碎片越多内部碎片越多。

定义与正确结论

首次选首个够大空洞,最佳选最小够大,最坏选最大;伙伴按 2 的幂分配与指定伙伴合并。

原理、适用条件与辨析

最佳适应可能留下很多小孔洞;连续变长分配主要外部碎片,固定/对齐分配可有内部浪费。伙伴只合并同级且互为伙伴的空闲块,不是任意相邻块。

简短例子

请求 18 单位,伙伴分配可能给 32 单位,剩余部分体现内部浪费。

自检:最佳适应是否保证全局最优长期利用率?

不保证。

OPT、FIFO 与 LRU:Belady 异常记忆概念易错易混

408 章节补全

错误认识

增加页框后任何页面替换算法的缺页次数都不会增加。

定义与正确结论

OPT 替换未来最久不用页作理论最优;FIFO 替换最早进入页;LRU 替换过去最久不用页。FIFO 可发生 Belady 异常。

原理、适用条件与辨析

LRU 的栈性质使增加页框通常不增缺页,FIFO 不具此保证。最优基于未来信息不作一般在线实现;读序列时命中也可能更新 LRU 次序。

简短例子

FIFO 某序列用更多页框反而更多缺页,是异常,不是计算一定错。

自检:FIFO 命中是否一定把页面移到队尾?

经典 FIFO 不这样更新入驻顺序;LRU 才更新最近访问信息。

驻留集分配、局部替换与全局替换记忆概念易错易混

408 章节补全

错误认识

局部置换表示只能替换物理地址靠近缺页地址的页。

定义与正确结论

局部替换从本进程驻留页中选;全局替换可涉及其他进程页。驻留集大小可以固定或动态调整。

原理、适用条件与辨析

多进程共享物理内存时,分配策略与替换范围共同影响缺页和抖动。页框不足、访问局部性弱和多道度过高可能叠加;局部/全局是归属范围而非地址距离。

简短例子

全局替换可能使另一进程失去页框,影响其未来访问。

自检:固定分配是否天然与全局替换完全等价?

不是,分配数量和替换范围是不同维度,组合需看策略。

内存映射文件:虚拟页关联文件内容记忆概念易错易混

408 章节补全

错误认识

mmap 把整个文件立刻复制进进程每一个内存页,不涉及缺页。

定义与正确结论

内存映射文件把虚拟地址范围与文件内容关联,程序可通过访存访问,页面可按需装入。

原理、适用条件与辨析

共享/私有映射影响修改可见性和写回;私有映射可写时复制,不保证修改原文件。建立映射、读页、写回同步等是不同动作,不能只凭“映射”认定已物理加载全部文件。

简短例子

首次读映射区域可能触发缺页,由系统把对应文件页装入内存。

自检:私有映射的写入是否必然立即修改磁盘原文件?

不必然,通常不作为对原文件的共享写入。

文件系统

FAT:下标是当前块,表项值是下一块个人错题易错

近期批改:FAT 表项下标与链接方向

错误认识

FAT 的表项按文件中的第 1、2、3 块编号。

定义与正确结论

FAT[当前磁盘块号] = 下一磁盘块号;目录记录起始块,链末使用结束标记。

原理、适用条件与辨析

FAT 集中保存链接信息。文件的逻辑块序号用于决定要走几次链,不等于 FAT 下标。不能把数据块里的内容当链接指针。

简短例子

链 100→106→108:FAT[100]=106,FAT[106]=108,FAT[108]=结束标记。

自检:要查文件第 3 个块,应以 3 直接查 FAT[3] 吗?

不应,从起始块按链走两次。

位示图与空闲空间:先定义 0/1 与编号个人错题易错近年考查记忆概念

补充知识点

错误认识

位示图中的 1 永远代表空闲,磁盘块号直接等于字号。

定义与正确结论

按题设解释占用位;块号=字号×每字位数+字内位号,前提是两者均从 0 开始。

原理、适用条件与辨析

若编号从 1 开始需调整。位示图通常为每个磁盘块保留一位,其大小与总块数有关,不随当前空闲块数线性变化。

简短例子

每字 32 位,0 起始编号的第 2 字第 3 位对应块号 67。

相关真题:2024 · 第 26 题

自检:先确认哪些约定?

位值含义、字长、字和位编号起点,以及位从高位还是低位排列。

打开、删除与硬链接:目录项不等于打开表冷门易混近年考查

补充知识点

错误认识

文件一被删除,所有已打开的描述符都立即失效。

定义与正确结论

在典型 Unix 语义下,unlink 删除一个目录链接;仍被打开或仍有硬链接的文件对象可以继续存在。

原理、适用条件与辨析

文件描述符表、系统打开文件表、inode 与目录项各有作用。硬链接共享同一文件对象;符号链接保存路径。

简短例子

删掉一个硬链接名,另一个硬链接仍可访问同一文件。

相关真题:2024 · 第 29 题

自检:硬链接与符号链接哪个通常有独立的路径内容?

符号链接。

索引文件容量:直接、一级与二级指针记忆概念易错易混

408 记忆与概念补充

错误认识

二级间接指针只多指向一块数据;索引块不占存储。

定义与正确结论

每个索引块可存 b/p 个地址(b 为块字节数,p 为地址字节数);一级间接覆盖 b/p 个数据块,二级覆盖 (b/p)² 个数据块。

原理、适用条件与辨析

若 inode 有 d 个直接、s 个一级、t 个二级指针,最大数据容量为 [d+s(b/p)+t(b/p)²]×b;这是数据字节,不包含索引块自身占用。

简短例子

b=1024 B、p=4 B,则每索引块有 256 项,二级间接可覆盖 256² 个数据块。

自检:求“总占用磁盘块数”时是否只算数据块?

不能,还应按实际使用情况计索引块。

目录、inode 与路径查找记忆概念易错易混

408 章节补全

错误认识

inode 内必定保存文件名,打开文件无需路径解析。

定义与正确结论

目录项建立名字到文件对象/标识的对应;inode 等元数据记录属性与块定位信息;路径按各级目录解析。

原理、适用条件与辨析

名字与对象分离有助硬链接。打开后用描述符定位打开对象不等于每次读都重走完整路径;缓存命中会改变实际磁盘访问次数。

简短例子

/a/b/c 的打开可能依次解析 a、b、c 的目录项,而非直接按字符串计算数据块号。

自检:目录文件保存的内容等同于所有文件的实际正文吗?

不同,主要是命名与组织信息。

连续、链接与索引分配:随机访问和增长记忆概念易错易混

408 章节补全

错误认识

链接分配随机访问任何逻辑块都 O(1),连续分配天然可无限增长。

定义与正确结论

连续分配随机定位简单但增长与外部碎片受限;链接分配易增长但常需沿链;索引分配通过索引定位块。

原理、适用条件与辨析

FAT 是链接信息集中化的形式;多级索引的随机定位仍有索引访问开销。最大容量、目录大小和磁盘读次数须按实际结构与缓存条件计算。

简短例子

随机读链末块可能需追踪很多链接,不应直接把逻辑序号加到起始物理块号。

自检:索引块是否保存实际全部文件正文?

不是,主要保存数据块等地址。

挂载、访问保护与共享:权限检查不是文件内容记忆概念易错易混

408 章节补全

错误认识

挂载必然把文件系统每个文件全部复制到内存,文件共享不需保护。

定义与正确结论

挂载把文件系统接入统一命名空间;权限/ACL 等保护决定主体可执行的操作,共享与保护共同管理访问。

原理、适用条件与辨析

读取目录和元数据不等于把全部数据加载。用户身份、操作类型、目录搜索权和文件权限可能共同决定访问;硬链接、打开引用和映射分别带来不同共享关系。

简短例子

路径中的某目录无搜索权限时,即使知道目标文件名,也不一定能成功打开。

自检:“能看到目录项”能否必然推出能写该文件?

不能,写权限需另行检查。

缓存、写回与一致性:日志的目的记忆概念易错易混

408 章节补全

错误认识

写入缓存后立即断电,磁盘必已有全部新数据;日志就是文件正文的完整备份。

定义与正确结论

缓存可提高 I/O 性能,写回策略决定落盘时机;文件系统日志/一致性机制帮助处理异常中断后的元数据或事务状态。

原理、适用条件与辨析

缓存脏块、内核缓冲、设备内部缓存的持久化保证不同。关闭文件不等于所有实现中硬件永久保存全部写入;同步语义要看规定。日志也不能替代独立备份。

简短例子

目录项已改但分配表未完全落盘,崩溃可能产生一致性问题,需恢复机制。

自检:有日志能否推出永不丢失任何最近数据?

不能,取决于日志模式、提交与持久化边界。

I/O 与磁盘

SPOOLing、缓冲与磁盘调度冷门易混近年考查

补充知识点

错误认识

SPOOLing 把一台打印机变成多台物理设备;SCAN 就是访问最远请求后必回头。

定义与正确结论

SPOOLing 用磁盘队列虚拟共享独占设备;缓冲用于速率匹配。SCAN 走到边界再反向,LOOK 在该方向最后请求处反向。

原理、适用条件与辨析

SCAN/LOOK 的差别会影响移动距离;C-SCAN/C-LOOK 还需确认回程是否计距离。机制概念与题目计费约定应分开。

简短例子

当前方向上最后请求是 80、磁盘边界是 99:LOOK 可在 80 反向,SCAN 到 99。

相关真题:2024 · 第 32 题

自检:磁盘题只给“电梯算法”时应核对什么?

方向、边界、SCAN/LOOK 约定及回程距离是否计入。

I/O 软件层次、设备独立性与缓冲记忆概念易错易混

408 章节补全

错误认识

设备驱动等于所有应用程序的读写函数;缓冲完全不消耗内存。

定义与正确结论

常见层次包括用户 I/O、设备独立软件、驱动、中断处理与硬件。设备独立性用统一接口隐藏设备细节;缓冲协调速率与粒度。

原理、适用条件与辨析

逻辑设备到物理设备映射、权限、错误处理、缓冲可由不同层承担。单/双/循环缓冲影响并行与等待;中断服务结束时数据常先在内核缓冲,未必已经复制到用户缓冲。

简短例子

键盘驱动处理中断数据后,应用仍可能需通过系统调用取得它。

自检:两块缓冲能否同时用于填入和消费?

可以按正确同步交替使用,但不能未经协调读写同一缓冲。

磁盘时延与 SSD:机械部件的公式不通用记忆概念易错易混

408 章节补全

错误认识

SSD 的访问时延也必须按磁头寻道加旋转等待计算。

定义与正确结论

机械盘访问常含寻道、旋转等待和传输时间;SSD 无同样机械寻道,但有闪存擦写、映射和垃圾回收等开销。

原理、适用条件与辨析

平均旋转等待常为半圈,转速单位需转换。调度仍涉及访问模式和设备内部行为;不要把 HDD 的距离模型无条件用于 SSD。

简短例子

转速 7200 rpm 等于 120 圈/s,一圈约 8.33 ms,平均等待约 4.17 ms(均匀位置模型)。

自检:“传输速率高”是否证明小随机 I/O 总时延很低?

不能,定位/控制等固定开销可能占主要部分。

操作系统概述

OS 特征:并发、共享、虚拟与异步记忆概念易错易混

408 章节补全

错误认识

异步表示 OS 不响应进程,互斥共享等于资源不允许多人使用。

定义与正确结论

并发为多任务一段时间内交替推进;共享为多个活动使用资源;虚拟把物理资源抽象成逻辑资源;异步体现推进时机不可预知。

原理、适用条件与辨析

互斥共享指同一时刻仅允许一个使用者,不是永久独占。虚拟 CPU 靠分时,虚拟内存靠地址映射等;这些术语要结合具体机制解释。

简短例子

打印机可通过互斥或 SPOOLing 供多个进程使用,并不变成多台物理打印机。

自检:并发程序的推进速度和顺序是否一定固定?

不固定,受调度、I/O 和其他活动影响。

批处理、分时与实时:目标不同记忆概念易错易混

408 章节补全

错误认识

分时系统的目标是严格满足所有事件的最迟截止时刻。

定义与正确结论

批处理重视吞吐与资源利用;分时重视交互响应;实时系统重视规定时间内完成任务,区分硬/软实时。

原理、适用条件与辨析

多道程序能在某任务等待 I/O 时运行其他任务。时间片越短不一定越好,切换开销会上升;硬实时截止期违反可能不可接受。

简短例子

交互终端轮流获得 CPU 是分时;工控急迫任务须在期限内完成是实时要求。

自检:实时是否等于单纯执行速度最快?

不等于,重点是可保证的截止时间。

宏内核与微内核:服务放在哪里记忆概念易错易混

408 章节补全

错误认识

微内核完全没有内核态服务;宏内核没有模块化可能。

定义与正确结论

宏内核将较多核心服务放内核空间;微内核保留较小核心,部分服务移到用户空间通过通信协作。

原理、适用条件与辨析

微内核有助隔离和扩展,但跨服务通信/切换带来代价;宏内核可以使用模块化设计,结构风格不等于有没有模块。虚拟机监控器也不等于普通微内核。

简短例子

文件服务放用户进程不代表它不需要内核提供通信与保护机制。

自检:微内核一定比宏内核运行更快吗?

不能无条件推出,取决于通信、实现及工作负载。

引导、内核初始化与应用启动记忆概念易错易混

408 章节补全

错误认识

OS 的全部代码在断电后仍留在 RAM,开机直接从普通应用入口执行。

定义与正确结论

启动由固件和引导程序等逐步加载/定位内核,再初始化必要硬件、内存与进程,随后启动服务和应用。

原理、适用条件与辨析

具体 BIOS/UEFI 流程不同;引导程序属于启动链的一环,不应混同整个 OS。内核建立中断/内存等基础后才能支持用户程序执行。

简短例子

内核从持久存储加载到 RAM,不是 RAM 自己断电保存了整个系统。

自检:OS 启动时一定重新创建磁盘文件系统和所有 inode 吗?

不一定,现有文件系统元数据通常读取使用,格式化是另一操作。

408 · NET

计算机网络

57 条 · 5 个章节

物理层与链路层

发送时延、传播时延与吞吐率易错易混近年考查

补充知识点

错误认识

带宽越大,传播时延一定越短。

定义与正确结论

发送时延=帧长/链路速率;传播时延=距离/信号传播速度。吞吐率是实际完成的传输率。

原理、适用条件与辨析

加大链路速率减少把比特推入链路的时间,不直接提高介质中的传播速度。还要区分排队和处理时延。

简短例子

光纤长度固定时,从 100 Mb/s 升到 1 Gb/s 不会把传播时延降为原来的十分之一。

相关真题:2024 · 第 33 题

自检:最后一位到达接收端至少要考虑哪两段时间?

发送时延与传播时延;具体题设还可能有其他时延。

奈奎斯特与香农:不同限制共同作用易混近年考查

补充知识点

错误认识

用任意一个公式就能得到最终可达速率。

定义与正确结论

理想低通信道奈奎斯特 R≤2B log₂M;含噪声香农 C=B log₂(1+S/N),B 用 Hz,信噪比代入线性值。

原理、适用条件与辨析

一个限制码元速率与调制等级,一个限制带噪声信道的信息容量。若两者条件均给出,应同时满足;有带通等模型须按题设。

简短例子

信噪比 30 dB 对应线性比 1000,不能把 30 直接代入香农式。

相关真题:2022 · 第 34 题

自检:信噪比 dB 如何转线性值?

S/N=10^(dB/10)。

CRC 与纠错:检错不等于自动纠正冷门易混

补充知识点

错误认识

CRC 可以自动修复所有单比特错误。

定义与正确结论

通常 CRC 用于检测,接收端检查余数;检出能力取决于生成多项式与差错模式。纠错需要额外编码机制。

原理、适用条件与辨析

模 2 除法使用异或,不进位、不借位。r 次生成多项式对应 r 位 CRC;余数为 0 也不能无条件证明绝无差错。

简短例子

某些错误多项式是生成多项式的倍数,可能检测不出。

自检:CRC 余数为 0 就能证明数据绝对正确吗?

不能,只表示该校验未检测到错误。

GBN 与 SR:接收窗口和序号空间易混易错近年考查记忆概念

补充知识点

错误认识

两种协议的接收窗口都与发送窗口相同。

定义与正确结论

GBN 通常接收窗口为 1;SR 可缓存失序帧。k 位序号:GBN 发送窗口≤2^k−1;等大发送/接收窗口的 SR≤2^(k−1)。

原理、适用条件与辨析

SR 一般需要发送窗口+接收窗口≤序号空间,避免新旧帧混淆。窗口上限不是实际吞吐率,超时重传策略也不同。

简短例子

3 位序号的等大 SR 窗口最多 4,而 GBN 发送窗口最多 7。

相关真题:2024 · 第 37 题

自检:GBN 收到正确但失序的帧通常如何处理?

丢弃,并按协议重复确认此前连续收到的帧。

交换机、集线器与全双工以太网冷门易混近年考查

补充知识点

错误认识

交换机每个端口划分一个广播域;全双工仍靠 CSMA/CD。

定义与正确结论

集线器共享碰撞域;普通二层交换机隔离端口碰撞域,但同 VLAN 通常同属广播域。全双工点对点链路无需 CSMA/CD。

原理、适用条件与辨析

广播域通常靠 VLAN 或路由器划分。CSMA/CD 属于共享半双工以太网的冲突检测机制;无线通常采用不同机制。

简短例子

两个交换机端口属于同一 VLAN,广播帧仍可被转发到另一端口。

相关真题:2024 · 第 35 题

自检:普通二层交换机是否天然隔离广播域?

不是,需要 VLAN 等机制。

CSMA/CA 与 RTS/CTS:隐藏站与 NAV冷门易混近年考查

补充知识点

错误认识

无线网络也边发送边可靠检测碰撞;RTS/CTS 能消除一切碰撞。

定义与正确结论

802.11 采用碰撞避免、确认及退避;RTS/CTS 可缓解隐藏站问题,其他站利用持续时间字段设置 NAV。

原理、适用条件与辨析

隐藏站未必能听见发送端,但可能听见接收端的 CTS。SIFS 通常短于 DIFS,便于 ACK 等响应优先发送;RTS 本身仍可能碰撞。

简短例子

B 听不到 A 却听到 AP 的 CTS,可以据 NAV 延迟发送,避免干扰 A→AP。

相关真题:2024 · 第 36 题

自检:RTS/CTS 是否保证完全无冲突?

不保证,主要缓解特定竞争问题。

码元、比特、编码与调制记忆概念易错易混

408 章节补全

错误认识

一个码元始终只有 1 bit;Manchester 完全不需要更多信号变化。

定义与正确结论

码元率以 Baud 计,信息速率以 bit/s 计;M 种可区分符号可承载 log₂M bit/码元。编码与调制分别组织基带表示或载波特性。

原理、适用条件与辨析

ASK 改幅度、FSK 改频率、PSK 改相位;Manchester 每位中部有跳变便于时钟提取,速率与带宽需依题设口径。不能把波特率直接当比特率。

简短例子

4 种符号可表示 2 bit,因此 1000 Baud 理想信息率为 2000 bit/s(未另计开销)。

自检:8 种符号理想可承载几 bit/码元?

3 bit/码元。

单工、半双工、全双工与传输介质记忆概念易错易混

408 章节补全

错误认识

全双工等于一根线永远只有一个方向;光纤完全没有传播时延。

定义与正确结论

单工仅单方向;半双工双向但不能同时;全双工允许双向同时。双绞线、同轴、光纤、无线在带宽、干扰与距离方面不同。

原理、适用条件与辨析

光传播仍有有限速度,链路距离产生传播时延。复用用于共享资源;全双工不是将一条流自动翻倍为两倍单向吞吐。

简短例子

对讲机常为半双工,不能双方同时讲话;全双工点对点以太网可同时发收。

自检:抗电磁干扰强是否等于光纤不存在任何衰减和距离限制?

不等于,仍有实际物理限制。

信道复用:FDM、TDM、WDM 与 CDM记忆概念易错易混

408 章节补全

错误认识

统计时分复用给每个用户永久固定时隙;CDM 任意码片都正交。

定义与正确结论

频分分不同频带,时分分时隙,波分分光波长,码分利用可区分码序列。统计时分按需求动态组织。

原理、适用条件与辨析

正交码的内积用于分离信号,映射 0/1 到 ±1 及是否归一化需按题设。不是所有随机码字都满足正交;保护带/时隙标识等开销降低有效利用率。

简短例子

普通同步 TDM 用户闲置时仍可能占固定槽,统计 TDM 可把槽给活跃用户。

自检:WDM 常用于什么介质?

光纤,以不同光波长复用。

成帧:字符填充、比特填充与透明传输记忆概念易错易混

408 章节补全

错误认识

数据中出现帧界定符,就必须禁止该数据发送。

定义与正确结论

透明传输让任意数据不与边界控制混淆;字符填充用转义,典型比特填充在连续五个 1 后插 0。

原理、适用条件与辨析

发送端填充、接收端解除,填充位不属于原数据。PPP 等协议还需按实际链路和帧规则区分;不能在遇四个 1 时就插位。

简短例子

原数据中的 01111110 可以通过填充避免被误认为 HDLC 标志。

自检:接收端去掉填充位后,是否改变原始业务数据?

不应,正确解除恢复原数据。

ARQ:检错、确认、序号与重传记忆概念易错易混

408 章节补全

错误认识

CRC 检出错误就由 CRC 本身重新发送帧;停止等待可以不编号。

定义与正确结论

ARQ 用检错配合 ACK、序号和重传计时提供可靠传送;停止等待、GBN、SR 有不同窗口与重传范围。

原理、适用条件与辨析

停止等待要区分新帧和重传,常用交替位;ACK 丢失会导致重传,接收端需去重。丢数据、丢 ACK、超时过早的时间线要分别画。

简短例子

接收端已收到帧 0,但 ACK 丢失;再次收到帧 0 不能重复交付。

自检:接收端的序号判定只用于检查 CRC 吗?

不是,还用于识别新帧、重复与顺序。

交换机自学习:学源 MAC,转发看目标 MAC记忆概念易错易混

408 章节补全

错误认识

交换机根据目标 MAC 学习发送端位置,未知单播直接丢弃。

定义与正确结论

自学习通常用源 MAC 和入端口建立映射;已知目标按表转发,未知单播在相应广播域/VLAN 内泛洪。

原理、适用条件与辨析

若目标就在入端口关联网段可过滤。表项有老化机制,搬迁后可更新;泛洪不等于路由器跨网广播,也不能无限循环而不控制二层环路。

简短例子

H1 从端口 1 发往未知 H2,交换机先学 H1→1,再泛洪寻找 H2。

自检:未知目标时是否先把目标 MAC 绑定到入端口?

不应,入端口关联的是本次帧源端。

VLAN、Trunk 与广播域记忆概念易错易混

408 章节补全

错误认识

只要 IP 同网段,就可以跨不同 VLAN 直接通过二层广播 ARP。

定义与正确结论

VLAN 逻辑划分二层广播域;Trunk 可承载多个 VLAN 并标记所属关系;跨 VLAN 通常需三层转发。

原理、适用条件与辨析

IP 子网与 VLAN 是不同层的组织方式,常配套但不能互相替代。端口成员、标签与路由决定可达性;同交换机上的两个 VLAN 也可隔离广播。

简短例子

H1、H2 配相同 IP 前缀但在隔离 VLAN 中,普通二层 ARP 不必可达对方。

自检:一个 VLAN 必须只包含一台物理交换机的端口吗?

不必,可通过相应链路跨交换机延伸。

网络层

ARP:查下一跳 MAC,不一定查目标主机易错易混近年考查

补充知识点

错误认识

跨网通信时 ARP 获取远端主机的 MAC。

定义与正确结论

先根据路由决定下一跳,再用 ARP 获取本链路上下一跳 IPv4 地址对应的 MAC。

原理、适用条件与辨析

目标不同网段时下一跳通常是网关。路由器每跳重封装链路层首部;通常端到端 IP 地址保持,NAT 是另一个机制。

简短例子

访问远端网站时,局域网帧的目标 MAC 通常是网关 MAC,IP 目标仍是网站地址。

相关真题:2024 · 第 35 题

自检:ARP 的广播能否被路由器普通转发到整个互联网?

不能,通常限于本地广播域。

最长前缀匹配与默认路由易错

补充知识点

错误认识

选路时选择数值最大的掩码或第一条匹配。

定义与正确结论

在所有匹配目的地址的路由中,选择前缀最长者;默认路由 /0 是最宽泛的后备项。

原理、适用条件与辨析

先检查地址是否匹配,再比较前缀长度。下一跳和出接口可能单独指定,不能把目的网段地址直接当下一跳。

简短例子

10.1.2.3 同时匹配 10.0.0.0/8 与 10.1.2.0/24,选择 /24。

自检:更长前缀但不匹配目的地址的路由能否被选择?

不能。

IPv4 分片:偏移单位与首部易错易混

补充知识点

错误认识

片偏移以字节计,分片总长度不含首部。

定义与正确结论

片偏移单位为 8 字节;总长度含该片 IP 首部;除最后一片外的数据部分通常是 8 的倍数。

原理、适用条件与辨析

偏移相对原始 IP 数据部分,不能把首部计入偏移。MF=1 表示后面还有片,最后片 MF=0;重组通常在目的主机完成。

简短例子

片偏移 185 对应原数据的第 1480 字节处,不是第 185 字节。

自检:首片的 MF 一定是 0 吗?

不是;若后面还有分片,首片 MF=1。

TTL、首部校验与 ICMP 差错冷门易混

补充知识点

错误认识

IPv4 首部校验和覆盖用户数据;每次丢包都发 ICMP。

定义与正确结论

IPv4 首部校验和仅覆盖首部;转发时 TTL 递减导致首部校验需更新。ICMP 差错有发送限制。

原理、适用条件与辨析

TTL 归零时通常丢弃并可产生超时差错;不是所有数据包都允许返回差错,例如不对另一条 ICMP 差错再生成差错。IPv6 不使用同样首部校验和。

简短例子

TCP 校验覆盖 TCP 首部与数据及伪首部,而 IPv4 的校验不覆盖 IP 负载。

自检:修改 IPv4 TTL 后能否原样保留首部校验和?

不能,需要相应更新。

距离向量、链路状态与路由环路冷门易混

补充知识点

错误认识

距离向量交换完整拓扑;链路状态只交换到目的地的距离。

定义与正确结论

距离向量交换距离及下一跳相关信息;链路状态发布本地链路状态,节点建立拓扑并计算最短路。

原理、适用条件与辨析

距离向量可能发生无穷计数,水平分割/毒性逆转用于缓解但不解决所有拓扑中的环路。链路状态也有传播与收敛时间。

简短例子

RIP 属于距离向量;OSPF 属于链路状态。

自检:毒性逆转能无条件消除所有路由环路吗?

不能。

子网、广播地址与默认网关易错易混近年考查记忆概念

补充知识点

错误认识

默认网关随便填一个路由器地址;可用主机数一律为 2^h−2。

定义与正确结论

IPv4 网络地址由 IP 与掩码按位与得到;常规子网排除全 0/全 1 主机号,默认网关通常需在本地可达链路。

原理、适用条件与辨析

传统可用主机数规则对 /31 点到点与 /32 等特殊用途不直接适用。先看具体网段和用途,不能拿远端路由器地址作直接下一跳。

简短例子

192.168.1.60/27 属于 192.168.1.32/27,广播为 .63;网关 .62 在该子网内。

相关真题:2022 · 第 35 题;2022 · 第 36 题

自检:192.168.1.1 能否作为上述主机通常的本链路网关?

它不在该 /27 子网内,普通配置下不能直接这样使用。

SDN:控制平面与南北向接口冷门易混近年考查

补充知识点

错误认识

南向接口连接业务应用与控制器,交换机自己承担全部集中控制。

定义与正确结论

SDN 分离控制与数据平面;南向接口连接控制器与转发设备,北向接口连接应用与控制器。

原理、适用条件与辨析

数据平面根据流表匹配和转发,控制平面制定策略与下发规则。OpenFlow 是常见南向接口协议之一,不是所有 SDN 的唯一实现。

简短例子

控制器向交换机下发流表属于南向交互。

相关真题:2022 · 第 37 题

自检:应用向控制器请求策略属于哪个方向?

北向接口。

网络层计时:TTL、重组超时与路由老化记忆概念易错易混图解

408 记忆与概念补充

错误认识

TTL 就是一个 TCP 计时器;网络层所有时间参数都计数据重传。

定义与正确结论

IPv4 TTL 是首部中的生存限制字段;IP 重组超时用于清理不完整分片;RIP 更新/失效计时用于维护路由。

原理、适用条件与辨析

TTL 在现代转发中主要按跳数扣减,并非主机上“到时重发”的 RTO。IP 不因重组超时自动重传原数据报;端到端可靠性由上层协议另行处理。

简短例子

路由器 TTL 归零丢包与目的主机分片迟迟不全,是不同的失效场景。

网络层相关时间机制:TTL / 重组 / RIPTTL 是逐跳递减字段,IP 重组端维护分片等待超时。RIP 周期更新约三十秒,路由无更新一百八十秒失效,再经一百二十秒垃圾收集删除。网络层相关时间机制:TTL / 重组 / RIP字段、重组等待、路由老化:先辨机制,再记数值IPv4 首部 TTL转发时递减;归零丢弃目的端的 IP 重组超时分片不全到期后丢弃TTL 不是 TCP 重传计时器IP 不自动按缺片重传RIP 的典型标准参数周期更新约 30 s最后更新后 180 s路由失效,度量 = 16失效后再 120 s垃圾收集删除RIP:左框是周期事件;中→右是无更新时的失效流程协议参数/实现配置以题设为准,不套用成所有网络的秒数
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:RFC 1122:IP 重组与 TCP 计时机制

自检:分片重组计时器通常由中间路由器还是重组端维护?

通常由执行重组的目的主机 IP 层维护。

IP 分片重组超时:等不齐就丢弃记忆概念易错易混

408 记忆与概念补充

错误认识

缺一个分片时,目的主机会永久保存已到分片,或重传缺片。

定义与正确结论

重组必须设置超时,届时丢弃不完整的数据报;IP 本身不提供按缺片自动重传机制。

原理、适用条件与辨析

超时不是片偏移,也不等于 RTT。不要将 IPv4 TTL 字段机械当成重组等待秒数。收到首片且满足 ICMP 发送条件时,可报告重组超时。

简短例子

到达第 1、3 片而第 2 片一直未到,等待过期后不能把不完整内容直接交给 TCP。

参考:RFC 1122:IP 重组与 TCP 计时机制

自检:能否将不完整重组数据直接交给上层作正常数据?

不能,应按重组失败处理。

RIP 计时器:30 / 180 / 120 的标准例子记忆概念易错易混

408 记忆与概念补充

错误认识

路由 180 秒失效后立刻从表中物理删除;120 秒从最初更新时间起计。

定义与正确结论

RFC 2453 的典型参数:约每 30 s 定期更新,180 s 未获有效更新使路由超时,失效后再保留 120 s 供垃圾收集。

原理、适用条件与辨析

路由失效时度量设为 16,停止用于正常转发,但暂保留并通告不可达。垃圾收集从失效阶段开始,不是与最初的 180 s 同时开始;厂商的保持/清除参数可能另有设置。

简短例子

无新路由等条件下,若从最近一次更新 t=0 计,t≈180 s 失效,再过 120 s 删除。

RIP 计时器:30 / 180 / 120 的标准例子 · 对照速记
阶段标准示例值动作
周期更新约 30 s向邻居通告路由
路由超时180 s度量设 16,停止正常使用
垃圾收集失效后 120 s删除失效表项

参考:RFC 2453 §3.8:RIP 定时器

自检:RIP 最大有效跳数与不可达值分别是什么?

最大有效跳数 15,不可达度量 16。

IPv4 地址与 NAT:私网、前缀和端口映射记忆概念易错易混

408 章节补全

错误认识

私网地址可在全互联网不经转换唯一可路由;NAT 只修改 MAC。

定义与正确结论

IPv4 地址定位网络接口,CIDR 用前缀划网段。私网范围常见 10/8、172.16/12、192.168/16;NAT 可改 IP,NAPT 还映射端口。

原理、适用条件与辨析

NAT 可能影响端到端地址与校验和;它不是路由器正常转发时必须执行的操作。端口用于区分传输端点,不能替代 IP 路由前缀。

简短例子

多个内网主机共享一个公网地址时,可用不同外部端口区分会话。

自检:172.32.0.1 是否属于 172.16.0.0/12 私网范围?

不属于;该范围第二字节为 16~31。

IPv6:地址长度、首部与分片记忆概念易错易混

408 章节补全

错误认识

IPv6 地址仍为 32 位,路由器像 IPv4 一样按 MTU 随处分片。

定义与正确结论

IPv6 地址为 128 位,基本首部固定 40 B;中间路由器不按 IPv4方式分片,源端可使用分片扩展机制。

原理、适用条件与辨析

IPv6 无基本首部校验和,用邻居发现等代替 IPv4 ARP 的部分职责。地址压缩 :: 一处最多用一次,不能因此失去组数信息。

简短例子

一个 IPv6 基本首部含地址与下一首部等字段,额外功能可用扩展首部。

自检:IPv6 是否使用 IPv4 的广播地址机制?

没有同样的广播地址类型,常通过组播等机制实现相应用途。

ICMP:差错报告与查询,不负责可靠重传记忆概念易错易混

408 章节补全

错误认识

ICMP 替代 TCP 进行所有丢包重传,ping 属于 TCP 应用数据。

定义与正确结论

ICMP 传递网络差错和诊断/查询信息,通常作为 IP 负载。ping 常使用 Echo 请求/应答。

原理、适用条件与辨析

ICMP 不等于网络层可靠传输。TTL 到期、目的不可达等可报告,但有发送限制;不能对 ICMP 差错再层层生成差错。traceroute 利用逐跳 TTL 等机制及响应。

简短例子

发出 ICMP 超时并不保证原数据报自动成功重发。

自检:ICMP 报文是否直接取代以太网 MAC 首部?

不是,仍要封装在 IP 和相应链路层之中。

RIP、OSPF、BGP:域内、域间与选路依据记忆概念易错易混

408 章节补全

错误认识

BGP 是链路状态协议;所有协议都按最少跳数选全网路径。

定义与正确结论

RIP 是域内距离向量,常按跳数;OSPF 是域内链路状态,按配置代价;BGP 是域间路径向量,考虑 AS 路径与策略。

原理、适用条件与辨析

协议用途、交换信息和路由度量不同。BGP 的策略不等于最短地理距离;OSPF 区域组织也不是 TCP 连接窗口。RIP/OSPF 并非应用文件传输协议。

简短例子

RIP 的 16 代表不可达,不能因此认为其他协议也最大只有 15 跳。

自检:OSPF 与 BGP 是否都主要用于同一自治系统内部?

不,BGP 主要交换自治系统之间的可达与策略路由信息。

拥塞控制、流量控制与 QoS:链路也可控流记忆概念易错易混

408 章节补全

错误认识

只有 TCP 才能出现流量控制;队列变长一定是接收主机缓冲不足。

定义与正确结论

流量控制匹配发送/接收能力,拥塞控制处理网络资源负载;链路层和传输层均可有各自的流控机制,QoS 涉及时延/吞吐等服务指标。

原理、适用条件与辨析

瓶颈路由队列因网络拥塞增长不等于终端 rwnd=0。资源预留、调度、整形等可影响服务;不要把不同层机制混为一个计时器。

简短例子

发送端路由器出口拥挤时,终端接收缓冲仍可能有大量空间。

自检:rwnd 大能否证明路径上完全不拥塞?

不能。

IPv4 首部:长度、标识、DF/MF 与片偏移记忆概念易错易混

408 章节补全

错误认识

首部长度、总长度和片偏移全都以字节为单位。

定义与正确结论

IPv4 首部长度以 4 B 为单位,总长度以 B 为单位,片偏移以 8 B 为单位;标识协助同一数据报分片重组,DF 禁止分片,MF 表示还有后续片。

原理、适用条件与辨析

基本首部 20 B,带选项可更长;MTU 限制所承载的 IP 数据报大小。源/目的地址、协议号、TTL 与首部校验字段作用不同,不能把端口写成 IP 首部固有字段。

简短例子

DF=1 且需要更小 MTU 而无法直接发送时,不能照常让路由器分片。

自检:目的 TCP 端口在 IPv4 基本首部里吗?

不在,端口属于传输层首部。

ARP 缓存老化:地址映射不是永久不变记忆概念冷门易混

408 路由与地址解析的冷门辨析

错误认识

ARP 解析一次就可永远不再验证,所有 OS 老化时间固定相同。

定义与正确结论

ARP 缓存需淘汰或验证失效的 IP→MAC 映射;若用老化定时,超时值应允许按实现或配置调整。

原理、适用条件与辨析

换网卡、主机移动等可能使旧映射失效。缓存老化、等待 ARP 回答和 TCP 重传是不同机制;交换机 MAC 表老化也不是同一个表。不要背成所有设备固定若干分钟。

简短例子

同一 IP 后来对应新网卡时,旧 MAC 映射不能永久沿用。

参考:RFC 1122:ARP 缓存验证

自检:ARP 表老化等同于交换机 MAC 表老化吗?

不同,前者映 IP→MAC,后者常映 MAC→端口。

OSPF Hello/Dead:邻居存活与 LSA 老化记忆概念冷门易混

408 路由与地址解析的冷门辨析

错误认识

OSPF 不收到一个 Hello 就必立刻宣告邻居失效;Dead 与 LSA Age 是同一个时间字段。

定义与正确结论

Hello 周期发送以发现/维护邻居;Dead 等待过期表示一段时间未获邻居 Hello;LSA Age 管理链路状态通告的年龄,职责不同。

原理、适用条件与辨析

相邻接口的相关参数需匹配以正常形成邻居关系。10 s/40 s 是常见广播网配置例子,不是所有网络类型的固定值;具体题目给值时按题设。

简短例子

接口 Hello 为 10 s、Dead 为 40 s 时,不能只因漏掉一次 Hello 就立即按 Dead 超时处理。

参考:RFC 2328:OSPF 邻居与协议计时

自检:OSPF 的邻居存活超时能否直接套成 RIP 的 180 s?

不能,它们属于不同协议和参数体系。

BGP Keepalive/Hold:和 TCP 保活不是同一层记忆概念冷门易混

408 路由与地址解析的冷门辨析

错误认识

BGP 使用 TCP,所以不需要自己的 KEEPALIVE;所有保持时间固定 180 s。

定义与正确结论

BGP 有自己的 KEEPALIVE 消息和 Hold 机制,用于维护 BGP 会话;它们不同于 TCP 层可选保活。

原理、适用条件与辨析

Hold Time 按本端配置与对端 OPEN 声明取较小值;接收有效的 KEEPALIVE/UPDATE 可维护保持计时,期满会处理会话失效。协商为 0 时不启动 Hold Timer,也不定期发送 KEEPALIVE;不能硬套厂商默认值。

简短例子

即使 TCP 底层尚未给出断连错误,BGP 的保持时间也可能先超时。

参考:RFC 4271:BGP KEEPALIVE 与 Hold Timer

自检:TCP 保活开启是否就与 BGP KEEPALIVE 完全等价?

不等价,协议层、报文和维护对象均不同。

传输层

TCP 序号与确认号:字节计数易错易混

补充知识点

错误认识

ACK 确认号表示最后收到的字节;纯 ACK 占一个序号。

定义与正确结论

确认号表示下一期待的字节序号;数据按字节编号;SYN 和 FIN 各占一个序号,纯 ACK 不占。

原理、适用条件与辨析

TCP 累积确认只确认连续前缀,不能因更高序号的数据到达就跨越缺口确认。序号按 32 位模空间处理。

简短例子

收到从 100 开始的 20 字节连续数据后,确认号为 120。

自检:不带数据且无 SYN/FIN 的 ACK 是否消耗序号?

不消耗。

流量控制与拥塞控制:限制来源不同易混

补充知识点

错误认识

rwnd 与 cwnd 都由接收端直接通知。

定义与正确结论

rwnd 反映接收缓冲能力;cwnd 反映发送端对网络拥塞的控制。可在途量通常受 min(rwnd,cwnd) 限制。

原理、适用条件与辨析

真正可新增发送的数量还要扣除已发送但未确认的数据。窗口单位、MSS 及题设拥塞算法要分清,不能只看其中一个窗口。

简短例子

rwnd=8 MSS,cwnd=4 MSS,限制通常为 4 MSS;已有 3 MSS 在途时只剩约 1 MSS 余量。

自检:收到较大 rwnd 是否必然可以按该值发送?

不一定,仍受 cwnd 和在途数据限制。

慢开始与拥塞避免:按 RTT 与 ACK 区分冷门易错近年考查

补充知识点

错误认识

慢开始每收到一个 ACK 就翻倍;所有丢包处理都相同。

定义与正确结论

理想条件下慢开始约每 RTT 翻倍,拥塞避免约每 RTT 增 1 MSS;每 ACK 的更新不同。

原理、适用条件与辨析

经典教材模型与具体 TCP 实现有差异。超时与三次重复 ACK 后的更新也不同,题目若给 Tahoe/Reno 或简化规则应按其处理。

简短例子

当前窗口含多个段时,某一个 ACK 不会使整个窗口立即翻倍。

相关真题:2022 · 第 38 题

自检:“每 RTT 翻倍”能否改成“每 ACK 翻倍”?

不能。

连接关闭、半关闭与 TIME_WAIT冷门易混近年考查记忆概念

补充知识点

错误认识

收到 FIN 后就不能再发送任何数据;四次挥手绝不可合并。

定义与正确结论

FIN 关闭该方向的发送,另一方向可继续;ACK 与 FIN 有时合并。主动关闭方通常进入 TIME_WAIT,标准时长为 2MSL。

原理、适用条件与辨析

TCP 是双向连接,两方向独立关闭。TIME_WAIT 有助于处理旧段和重传最后 ACK;不能仅用最后报文发送者判断所有状态。

简短例子

A 发 FIN 后,B 确认并继续发送剩余数据,之后 B 再发 FIN。

相关真题:2022 · 第 39 题;2024 · 第 38 题

自检:被动方收到对方 FIN 后还能发送应用数据吗?

其发送方向尚未关闭时可以。

UDP/TCP 校验:伪首部不真正发送冷门易错近年考查记忆概念

补充知识点

错误认识

伪首部是另一个真正发送的 UDP 首部;UDP 校验与 CRC 相同。

定义与正确结论

UDP/TCP 使用反码和校验,计算时包含伪首部;伪首部借用 IP 地址等信息,不作为该传输层首部单独发送。

原理、适用条件与辨析

16 位反码和出现最高位进位要回卷相加,最后按位取反。奇数字节长度需为校验补 0,补字节不算有效数据。

简短例子

算得 17 位和后,不能简单丢弃最高位而不回卷。

相关真题:2024 · 第 39 题

自检:伪首部是否算入 UDP 长度字段?

不算,UDP 长度包含 UDP 首部和数据。

TCP 四类计时器:重传、持续、保活与时间等待记忆概念易错易混图解

408 记忆与概念补充

错误认识

所有 TCP 定时器都是为了重传数据,超时就断开连接。

定义与正确结论

四类机制分别解决:未确认数据重传、零窗口探测、空闲连接存活探测、关闭后的 2MSL 等待。

原理、适用条件与辨析

这些计时器不是统一的固定时长。RTO 由 RTT 等估计;持续计时器不是拥塞控制;保活通常可选;TIME_WAIT 不是接收窗口探测。

简短例子

题目说“窗口恢复通知可能丢失”应联想到持续计时器,而不是保活。

TCP 四类计时器:重传、持续、保活与时间等待 · 对照速记
计时机制触发场景主要动作/目的
重传 RTO已发送数据未及时确认重传最早未确认数据,超时退避
持续 / Persist对端公告零窗口周期探测窗口,防止永久停发
保活 / Keepalive启用保活且连接长期空闲探测对端是否仍存活
TIME_WAIT主动关闭进入等待状态等待 2MSL,处理旧段及最后 ACK 重传
TCP 计时器:四种场景对照从未确认数据、零窗口、长时间空闲和主动关闭四种场景,分别对应重传、持续、保活和时间等待机制。TCP 计时器:四种场景对照同属 TCP,但触发条件不同;不是一套固定的秒数已发送数据未获确认重传计时器 RTO重传最早未确认数据对端公告零窗口持续计时器 Persist探测接收窗口是否恢复启用保活且长期空闲保活计时器 Keepalive探测对端存活状况主动关闭进入等待状态TIME_WAIT / 2MSL防旧段混淆可补发最后 ACK“窗口更新丢失”想持续;“闲置连接”想保活
概念结构示意图 · 已写明模型约定;具体电路和参数以题设为准。单独查看图片

参考:RFC 9293:TCP 窗口、保活与关闭

自检:持续计时器和保活计时器的根本区别?

持续处理零窗口带来的停发风险;保活探测长期空闲连接的对端是否仍可达。

RTO、RTT 与 Karn:重传超时不是固定 RTT记忆概念易错易混

408 记忆与概念补充

错误认识

RTO 总等于一次测得的 RTT;重传后任何 ACK 都可用来估计 RTT。

定义与正确结论

RTO 依据平滑 RTT 和波动估计;无消除歧义手段时,不用已重传报文段测 RTT。

原理、适用条件与辨析

RFC 模型:RTO=SRTT+max(G,4×RTTVAR),G 是计时精度。后续更新 RTTVAR 使用更新前的 SRTT。考试给简化加权公式或常量时,按题设。

简短例子

ACK 到来时若原报文和重传报文都可能导致它,无法明确对应哪一次发送时间。

参考:RFC 6298:TCP 重传计时器

自检:Karn 算法为什么排除重传段样本?

避免把 ACK 归属不明确的往返时间作为样本;时间戳等消歧方案另论。

超时重传与快速重传:触发条件不同记忆概念易错易混

408 记忆与概念补充

错误认识

收到 3 个重复 ACK 等同于 RTO 到期。

定义与正确结论

快速重传由重复 ACK 等信号触发,可在 RTO 到期前重传;超时重传由重传计时器到期触发。

原理、适用条件与辨析

经典教材模型中,两种事件对拥塞窗口的处理可以不同。RTO 超时通常指数退避;不能把 TCP Reno 的重复 ACK 处理套成超时处理。

简短例子

三个重复 ACK 已提示缺口时,不必再等待原重传计时器走完。

参考:RFC 6298:TCP 重传计时器

自检:快速重传一定先等待 RTO 到期吗?

不需要。

持续计时器:零窗口探测不是保活记忆概念易错易混

408 记忆与概念补充

错误认识

rwnd=0 后发送方永不再发送任何报文;窗口更新丢失只能等重传定时器。

定义与正确结论

零窗口使正常数据发送受限,发送方使用探测机制获取新窗口信息,避免双方永久等待。

原理、适用条件与辨析

对端可能已经空出缓冲区,但携带窗口更新的 ACK 不保证可靠送达。探测有助重新得知窗口;它不代表把 cwnd 当作 rwnd,更不等于认为对端已掉线。

简短例子

接收方窗口从 0 恢复到非 0,但通知丢失,发送方可通过探测发现恢复。

参考:RFC 9293:TCP 窗口、保活与关闭

自检:只要 rwnd=0,就应立即断开 TCP 吗?

不应如此,可继续零窗口探测,具体终止策略以题设或实现为准。

保活计时器:教材数值不等于所有实现记忆概念易错易混

408 记忆与概念补充

错误认识

保活是每个 TCP 连接必启用的机制;一次探测失败就判掉线。

定义与正确结论

TCP 保活可选,可按连接启用;长期空闲后探测,单次无响应不足以断言连接死亡。

原理、适用条件与辨析

教材常以约 2 小时等数值举例;RFC 规定默认关闭,启用时默认空闲间隔不小于 2 小时。考试若另给时间和次数,按题设;不要把系统配置当永久标准。

简短例子

一个只是不发送业务数据的健康连接不必关闭;保活与应用层心跳也不是同一层机制。

参考:RFC 9293:TCP 窗口、保活与关闭

自检:“保活周期固定为 2 小时”能否作为所有环境的结论?

不能,值可配置,题目有约定时按约定。

TIME_WAIT:2MSL 从哪里开始记忆概念易错易混

408 记忆与概念补充

错误认识

2MSL 从发出第一个 FIN 时开始;最后 ACK 本身可靠重传。

定义与正确结论

主动关闭方通常在收到对方 FIN 并发送最后 ACK 后进入 TIME_WAIT,按该状态计 2MSL;再次收到 FIN 时可重新发送 ACK 并重启等待。

原理、适用条件与辨析

等待期间既给旧报文消失留时间,也给对方重传 FIN、自己补发 ACK 留时间。FIN 往返和数据传输耗时若题目要求总时长,应另行加上。

简短例子

只问 TIME_WAIT 驻留为 2MSL;问从连接建立到 CLOSED,就不能只答 2MSL。

参考:RFC 9293:TCP 窗口、保活与关闭

自检:最后 ACK 丢失时,常由谁重传什么报文?

对方重传 FIN,TIME_WAIT 方再确认;纯 ACK 不按数据报文那样独立可靠重传。

延迟 ACK:接收端的延后确认记忆概念易错易混

408 记忆与概念补充

错误认识

延迟 ACK 与发送端的超时重传计时器是同一个。

定义与正确结论

延迟 ACK 是接收端短时延后发送确认的机制;RTO 是发送端等待确认的机制,职责和所在端不同。

原理、适用条件与辨析

延迟确认可减少独立 ACK 数量或等待捎带,但不能无期限等待。若题目给延迟时间,就计入 RTT/时间线;不能认为每个数据段立即返回 ACK。

简短例子

接收端短时等下一段以合并确认,会影响观察到的确认间隔,但不改变 ACK 的累计语义。

参考:RFC 1122:IP 重组与 TCP 计时机制

自检:延迟 ACK 会将按字节的序号改成按报文段计数吗?

不会。

UDP/TCP、端口与套接字:报文和字节流记忆概念易错易混

408 章节补全

错误认识

TCP 保留每次 write 的报文边界;UDP 无连接就不需要端口。

定义与正确结论

TCP 提供有连接的可靠字节流,不保留应用写入边界;UDP 提供无连接数据报,仍用端口复用/分用。

原理、适用条件与辨析

端点通常由地址、端口与协议关联;TCP 连接以双端组合区分。UDP 首部 8 B,TCP 基本首部 20 B,可有选项。可靠与实时适用性取决于需求,不是协议名称直接决定。

简短例子

一次发送 100 B、再发送 50 B,TCP 接收 API 可按不同批次交付,应用需自定义消息边界。

自检:UDP 同一数据报的应用边界是否通常保留?

通常保留;但应用仍需面对丢失、重排及最大长度等约束。

TCP 三次握手:两个方向的序号与确认记忆概念易错易混

408 章节补全

错误认识

第三次握手必再带 SYN,客户端第一个数据从初始序号本身开始。

定义与正确结论

典型握手:SYN(seq=x);SYN+ACK(seq=y,ack=x+1);ACK(seq=x+1,ack=y+1)。双方 SYN 各占 1 个序号。

原理、适用条件与辨析

第三次 ACK 可带数据,纯 ACK 不耗序号。握手交换初始序号并确认两方向通信,不保证身份认证或消息加密;中途丢失可触发重传。

简短例子

若客户端初始 x=100,SYN 被确认后的下一个数据序号通常从 101 开始。

自检:服务端的初始 y 是否必等于客户端的 x?

不必,两端各有自己的序号空间。

TCP 首部字段:SYN/ACK/FIN/RST 与首部长度记忆概念易错易混

408 章节补全

错误认识

ACK 标志为 0 时确认号仍总作为有效累积确认;FIN 和 RST 语义相同。

定义与正确结论

ACK 标志指确认字段有效;SYN 建立同步,FIN 正常关闭发送方向,RST 重置连接。首部长度字段以 4 B 为单位。

原理、适用条件与辨析

基本首部 20 B,可含选项至 60 B;确认号、窗口、校验和等职责不同。RST 不是正常半关闭的替代说法,控制标志组合需结合连接状态判定。

简短例子

首部长度值 5 对应 20 B,不是 5 B。

自检:TCP 首部中的窗口字段主要表达 rwnd 还是 cwnd?

表达接收窗口相关值,cwnd 是发送端拥塞控制状态,不直接放在该字段。

应用层

DNS:递归/迭代与 UDP/TCP冷门易混

补充知识点

错误认识

DNS 只使用 UDP;客户端自己一定迭代访问所有服务器。

定义与正确结论

主机通常向递归解析器查询,解析器可迭代访问权威体系;DNS 既可用 UDP,也可用 TCP。

原理、适用条件与辨析

缓存可缩短流程,不能每次都按“根→顶级域→权威”完整计算。区域传送等常用 TCP,响应截断后可重试 TCP。

简短例子

本地解析器命中缓存时,不必访问根服务器。

自检:DNS 能否使用 TCP?

可以,不能绝对说只用 UDP。

HTTP、FTP 与邮件:连接和服务分工冷门易混

补充知识点

错误认识

FTP 控制与数据同一连接;SMTP 用于收取邮箱邮件。

定义与正确结论

FTP 分控制与数据连接,主动/被动模式影响数据连接发起方;SMTP 用于邮件传输,POP3/IMAP 用于访问邮件。

原理、适用条件与辨析

HTTP 持久连接复用连接,但不等于 HTTP/1.1 普通串行请求自动并行。涉及持久连接或流水线请求时,须按题设版本与规则判断。

简短例子

FTP 控制连接常用端口 21,不能因此断言所有数据连接都固定由服务器端口 20 发起。

自检:IMAP 和 SMTP 是否承担相同任务?

不同,IMAP 访问邮箱,SMTP 传送邮件。

DNS 记录与缓存:A/AAAA/CNAME/MX记忆概念易错易混

408 章节补全

错误认识

域名查询返回的永远只有一条 IPv4 地址,TTL 表示 TCP 时间等待。

定义与正确结论

A 映 IPv4,AAAA 映 IPv6,CNAME 表示别名,MX 指示邮件交换。DNS TTL 控制缓存有效期,和 IP TTL 不同。

原理、适用条件与辨析

一个名字可有多条记录,别名解析可能需继续查询。缓存减少查询次数但可能短时保留旧数据;权威回答与递归解析器缓存回答要区分。

简短例子

MX 是邮件服务器相关记录,不等于浏览器直接访问的网页服务器 A 记录。

自检:DNS TTL 用完是否意味着 IP 数据报此刻到达最后一跳?

不是,DNS 缓存 TTL 与 IP 首部 TTL 完全不同。

DHCP 与常见端口:分配配置,不是解析域名记忆概念易错易混

408 章节补全

错误认识

DHCP 只分配 MAC 地址;DISCOVER 是 TCP 建立连接报文。

定义与正确结论

DHCP 为主机提供租约式 IP 配置,常见流程 Discover→Offer→Request→Ack;常用 UDP 服务端 67、客户端 68。

原理、适用条件与辨析

初始客户端尚无可用 IP,常通过广播发现。租约续租不同于 TCP 保活;DNS、DHCP、HTTP、邮件协议分工不同。端口是常见默认约定,服务可另配置。

简短例子

DHCP 可以同时给网关和 DNS 服务器配置,后者由 DNS 服务执行名字解析。

DHCP 与常见端口:分配配置,不是解析域名 · 对照速记
服务常见默认端口主要用途
HTTP / HTTPS80 / 443网页请求 / 加密访问
DNS53(UDP/TCP)域名记录查询
DHCP67 / 68(UDP)服务器 / 客户端配置
FTP 控制21(TCP)文件传输控制通道
SMTP25(TCP)邮件传输
POP3 / IMAP110 / 143(TCP)邮件访问
自检:常见 HTTP、HTTPS、DNS、FTP 控制、SMTP、POP3、IMAP 的默认端口?

分别常用 80、443、53、21、25、110、143;安全扩展或自定义服务可能另用端口。

HTTP 请求响应与持久连接:页面由多个对象构成记忆概念易错易混

408 章节补全

错误认识

HTTP/1.1 持久连接自动意味着所有对象同时返回;HTTP 状态码与 TCP 状态相同。

定义与正确结论

HTTP 定义请求方法、资源和响应状态;持久连接复用已建立连接,减少重复握手,但是否流水线/并行需看题设。

原理、适用条件与辨析

页面可能含 HTML 和多个嵌入对象,DNS、TCP、请求/响应与对象发送时间要分开。GET、POST、HEAD 等方法不同;HTTP 200/404 是应用响应,不是 TCP 连接状态。

简短例子

一个 HTML 引用 3 张图片,不能仅因只有一页就只算一次资源请求。

自检:使用 HTTP 持久连接是否每个对象都需要新的 TCP 握手?

通常不需要,可在已有连接上复用;具体请求方式仍需看题设。

FTP 主动/被动:控制连接和数据连接记忆概念易错易混

408 章节补全

错误认识

所有 FTP 数据连接都由服务器端口 20 发起到客户端。

定义与正确结论

FTP 控制连接常到服务器 TCP 21;主动模式典型由服务器发起数据连接,被动模式由客户端连接服务器指定数据端口。

原理、适用条件与辨析

控制命令与文件内容分通道;不同文件或目录列表可使用单独数据连接。NAT/防火墙可影响主动模式可达,不能把端口 20 当所有模式的固定结论。

简短例子

被动模式中服务器返回可连接数据端口,客户端主动去连该端口。

自检:FTP 传输目录列表是否也可能走数据连接?

可以,数据连接不只用于文件正文。

SMTP、POP3、IMAP 与 MIME:发、收、编码记忆概念易错易混

408 章节补全

错误认识

MIME 是传送邮件的可靠传输协议;SMTP 负责用户所有邮箱同步。

定义与正确结论

SMTP 负责邮件传输;POP3/IMAP 访问邮箱;MIME 扩展邮件内容格式,使非 ASCII 内容和附件可表示。

原理、适用条件与辨析

邮件客户端到提交服务器、服务器之间传递、收件客户端取信是不同阶段。IMAP 支持服务器端邮箱组织与同步;默认端口和加密/提交端口需按题设区别。

简短例子

附件可通过 MIME 编码随邮件内容传递,但最终传输仍依赖相应邮件协议。

自检:MIME 是否替代 TCP 或 SMTP 完成网络传送?

不替代,它描述内容类型与编码格式。

网络体系结构

OSI/TCP-IP 分层与封装记忆概念易错易混

408 章节补全

错误认识

交换机、路由器和 TCP 都工作在同一层;每层都把数据叫帧。

定义与正确结论

常用五层:应用、传输、网络、数据链路、物理;封装逐层增加所需控制信息,接收端按协议解封装。

原理、适用条件与辨析

OSI 为七层,TCP/IP 教材可用四层/五层模型,不应因名称不同就认为协议所属层不同。典型路由器主要网络层转发,普通二层交换机主要链路层转发。

简短例子

TCP 段封装进 IP 数据报,再进链路帧,通过比特信号发送。

自检:路由器普通转发是否必须解析完整 HTTP 请求?

不需要,转发依据主要是网络层相关信息。

协议、服务、接口与实体记忆概念易错易混

408 章节补全

错误认识

同层实体之间的规则叫接口,邻层提供的功能叫协议。

定义与正确结论

协议约定对等实体通信规则;服务是本层向上层提供的能力;接口描述相邻层如何调用该服务。

原理、适用条件与辨析

服务由下层向上层提供,而协议在对等层之间逻辑执行;实际数据经下层传输。协议的语法、语义、时序是不同内容。

简短例子

TCP 向应用提供可靠字节流,是服务;TCP 首部与状态转换规则属于协议。

自检:面向连接服务必然要求底层网络也面向连接吗?

不必,TCP 可在无连接 IP 上实现连接服务。

电路、报文和分组交换:建立与存储转发记忆概念易错易混

408 章节补全

错误认识

分组交换不需排队,也总比分组之外所有方式耗时短。

定义与正确结论

电路交换先建立专用通路;报文交换完整报文逐跳存储转发;分组交换分块转发,可流水化并统计复用。

原理、适用条件与辨析

电路需建连但后续传输可少逐跳存储;分组有首部、排队和丢失重排代价。比较时统一文件大小、分组大小、链路速率与存储转发约定。

简短例子

一条长报文拆成多包后可在不同链路重叠传送,而不是每跳都等待全文件。

自检:只给“分组交换”能否断言其端到端时延总最小?

不能,需要具体参数和流量条件。

内容说明与参考

个人错题包含近期答卷错误、概念疑问和不完整步骤;补充知识点单独标注。分类可重叠。“近年考查”标出已核对真题的年份与题号,供重点复习,不是下次考试的概率预测。冷门指容易漏复习的细节,不代表统计后的出题频率。概念解析为重新组织的讲解,具体真题仍以题设为准。

本页先整理已取回的近期问题,未核实的题号和成绩不填。按公开 408 四科章节组织,不把实现特例当作通用公式。更新:2026-10-12。