shuatigo
只考虑主考点
计算机408

2013计算机408全卷预览

2013年计算机408真题

2013年计算机408真题完整试卷,包含 40 道选择题、0 道填空题和 7 道解答题,共 47 题,题目分值合计 150 分。可按目录阅读全卷,展开参考答案解析,或进入对应题目练习。

返回年度练习
47题全卷题目
150分题目分值合计
40题选择题 · 80分
0题填空题 · 0分
7题解答题 · 70分

选择题

40 题 · 共 80 分

第 1 题

数据结构
2 分

已知两个长度分别为 mm 和 nn 的升序链表, 若将它们合并为一个长度为 m+nm + n 的降序链表, 则最坏情况下的时间复杂度是 ( )。

A. O(n)O(n)

B. O(mn)O(mn)

C. O(min⁡(m,n))O(\min (m,n))

D. O(max⁡(m,n))O(\max (m,n))

查看答案与解析收起答案与解析

参考答案:D

答案:D。

**思路:**两个原链表已经升序,可以各用一个指针指向尚未处理的首结点。每次取出两指针中较小的结点,用头插法放入结果链表;取出的值越来越大,放在表头后恰好得到降序。某表用完后,继续把另一表剩余结点依次头插。

每个结点只被取出、改链一次,时间为 O(m+n)O(m+n)。令 M=max⁡(m,n)M=\max(m,n),有 M≤m+n≤2MM\le m+n\le2M,所以也可写成 O(max⁡(m,n))O(\max(m,n))。A 的 O(n)O(n) 忽略了可能更长的 m 表;B 的乘积没有必要;C 只计算较短表,遗漏剩余结点;D 正确。反转输出顺序改变的是插入位置,不会使合并变成乘积时间。

进入练习

第 2 题

数据结构
2 分

一个栈的入栈序列为 1,2,3,⋯ ,n1, 2, 3, \cdots, n ,其出栈序列是 p1,p2,p3,⋯ ,pnp_1, p_2, p_3, \cdots, p_n 。若 p2=3p_2 = 3 ,则 p3p_3 可能取值的个数是()。

A. n−3n - 3

B. n−2n - 2

C. n−1n - 1

D. 无法确定

查看答案与解析收起答案与解析

参考答案:C

答案:C。

栈遵守后进先出,但入栈和出栈可以交替进行。题目只固定第二次弹出的是 3,不能据此认为第三次只能弹出 2。3 已经弹出,先排除它,再证明其余值均可实现。

若希望 p3=1p_3=1,先压入 1、2,弹出 2 作为 p1p_1,再压入并弹出 3,此时栈顶是 1。若希望 p3=2p_3=2,先弹出 1,再压入 2、3,弹出 3 后弹出 2。若希望 p3=k≥4p_3=k\ge4,先弹出 1,再压入 2、3 并弹出 3,接着压入 4 至 k,便可弹出 k。所以共有 1,2,4,…,n1,2,4,\ldots,n,计 n−1n-1 种;A、B 少计,D 错在该个数可确定。

进入练习

第 3 题

数据结构
2 分

若将关键字 1, 2, 3, 4, 5, 6, 7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子为 0 的分支结点的个数是()。

A. 0

B. 1

C. 2

D. 3

查看答案与解析收起答案与解析

参考答案:D

答案:D。

平衡因子是左、右子树高度之差,绝对值超过 1 时要旋转。依次插入递增关键字会产生右右失衡,需要左旋,不能把最终树当成普通二叉排序树的单链。

插入 1、2、3 后,对 1 左旋,根变为 2。插入 4、5 后,结点 3 失衡,左旋后其子树根为 4;插入 6 后,根 2 失衡,左旋后整树根为 4;插入 7 后,对结点 5 左旋。最终根 4 的左子树为 2 带孩子 1、3,右子树为 6 带孩子 5、7。分支结点只有 4、2、6,三个结点左右等高,平衡因子均为 0,故计数为 3。A、B、C 均少计;叶结点虽也平衡,但本题不计叶结点。

进入练习

第 4 题

数据结构
2 分

已知三叉树 TT 中 6 个叶结点的权分别是 2, 3, 4, 5, 6, 7, TT 的带权(外部)路径长度最小是()。

A. 27

B. 46

C. 54

D. 56

查看答案与解析收起答案与解析

参考答案:B

答案:B。

带权路径长度 WPL=∑wiliWPL=\sum w_i l_i,其中 lil_i 是根到叶的边数。最小值由三叉哈夫曼构造求出,每轮合并三个最小权。满三叉树的叶数满足 L-1 能被 2 整除;6 个叶不满足,补一个权为 0 的虚叶,其 WPL 贡献为零。

依次合并:0+2+3=50+2+3=5;剩余权为 4、5、5、6、7,合并 4+5+5=144+5+5=14;最后 6+7+14=276+7+14=27。每次合并使参与子树的叶深度加 1,因此 WPL=5+14+27=46WPL=5+14+27=46。也可验算 2×3+3×3+4×2+5×2+6+7=462\times3+3\times3+4\times2+5\times2+6+7=46。A 的 27 只是总权,C、D 都大于最优值,故选 B。

进入练习

第 5 题

数据结构
2 分

若 XX 是后序线索二叉树中的叶结点,且 XX 存在左兄弟结点 YY ,则 XX 的右线索指向的是( )。

A. XX 的父结点

B. 以 YY 为根的子树的最左下结点

C. X 的左兄弟结点 Y

D. 以 YY 为根的子树的最右下结点

查看答案与解析收起答案与解析

参考答案:A

答案:A。

线索指针利用空孩子指针存放遍历序列中的前驱或后继,右线索指向后继。后序遍历次序为“左子树、右子树、根”。X 存在左兄弟 Y,说明 X 是父结点的右孩子;又因为 X 是叶,访问这个右子树时只访问 X 本身。

局部后序序列必为“以 Y 为根的整棵子树、X、X 的父结点”,紧接 X 的就是父结点,故 A 正确。B、D 所指结点均在左子树内,早于 X 被访问;C 的 Y 是左子树最后访问的结点,也在 X 之前。注意“右线索”不是“指向右侧的结点”,其含义由遍历后继决定,不能套用中序遍历的后继规则。

进入练习

第 6 题

数据结构
2 分

在任意一棵非空二叉排序树 T1T_{1} 中, 删除某结点 ν\nu 之后形成二叉排序树 T2T_{2} , 再将 ν\nu 插入 T2T_{2} 形成二叉排序树 T3T_{3} 。下列关于 T1T_{1} 与 T3T_{3} 的叙述中, 正确的是 ( )。

I. 若 ν\nu 是 T1T_{1} 的叶结点,则 T1T_{1} 与 T3T_{3} 不同

II,若 ν\nu 是 T1T_{1} 的叶结点,则 T1T_{1} 与 T3T_{3} 相同

III. 若 ν\nu 不是 T1T_{1} 的叶结点,则 T1T_{1} 与 T3T_{3} 不同

IV. 若 ν\nu 不是 T1T_{1} 的叶结点,则 T1T_{1} 与 T3T_{3} 相同

A. 仅 I、III

B. 仅 I、IV

C. 仅II、III

D. 仅 II、IV

查看答案与解析收起答案与解析

参考答案:C

答案:C。

二叉排序树插入时,从根按关键字大小查找,最终总是在空孩子位置插入一个叶结点。若删除的 ν\nu 原本是叶,删除只把父结点的一条链接置空,其余比较路径不变。再插入相同关键字会沿原路径恢复原位置,故 II 正确、I 错误。

若 ν\nu 原本不是叶,删除时要让孩子接替它,或用前驱、后继替换并调整链接;重新插入 ν\nu 时,它将作为叶出现。而原树中同一关键字对应的是非叶,带关键字的树结构不可能相同,故 III 正确、IV 错误。A 含 I,B 含 I、IV,D 含 IV,都应排除,只有 C 的 II、III 均成立。三棵树的关键字集合相同不代表树结构相同。

进入练习

第 7 题

数据结构
2 分

设图的邻接矩阵 A 如下所示。各顶点的度依次是()。

A=[0101001101001000]\boldsymbol {A} = \left[ \begin{array}{l l l l} 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{array} \right]

A. 1, 2, 1, 2

B. 2, 2, 1, 1

C. 3,4,2,3

D. 4, 4, 2, 2

查看答案与解析收起答案与解析

参考答案:C

答案:C。

无向图的邻接矩阵关于主对角线对称;题中 A12=1A_{12}=1、A21=0A_{21}=0,所以是有向图。Aij=1A_{ij}=1 表示从 i 到 j 有弧,行和为出度,列和为入度,有向图的度为二者之和。

顶点 行和(出度) 列和(入度) 度
1 2 1 3
2 2 2 4
3 1 1 2
4 1 2 3

因此选 C。A 仅列入度,B 仅列出度,D 与统计不符。矩阵共有 6 个 1,即 6 条弧;每条弧在起点贡献出度、终点贡献入度,总度应为 12,也可用来检验。

进入练习

第 8 题

数据结构
2 分

若对题 08 图中的无向图进行遍历,则下列选项中,不是广度优先遍历序列的是()。

A. h, c, a, b, d, e, g, f

B. e, a, f, g, b, h, c, d

C. d,b,c,a,h,e,f,gd, b, c, a, h, e, f, g

D. a,b,c,d,h,e,f,ga, b, c, d, h, e, f, g

第 8 题图 1
查看答案与解析收起答案与解析

参考答案:D

答案:D。

广度优先遍历使用队列,先访问起点的所有邻点,再访问距离起点为 2 的点。同层先后可随邻点枚举顺序改变,但不能越过尚未完成的前一层。

按图核对:A 从 h 开始,第一层 c、a,随后可依次发现 b、d、e,最后 g、f;B 从 e 开始,第一层 a、f、g,第二层 b、h,最后 c、d;C 从 d 开始,第一层 b、c,第二层 a、h,最后 e、f、g,均可用相应邻点顺序得到。D 从 a 开始时,邻点 b、e、h 应全部先于 c、d、f、g 出现,却在 e、h 之前访问 c、d,违反层次次序。因此 D 不是 BFS 序列;不能仅因同层点顺序不同而否定 A、B、C。

进入练习

第 9 题

数据结构
2 分

题 09 图中的 AOE 网表示一项包含 8 个活动的工程。通过同时加快若干活动的进度可以缩短整个工程的工期。下列选项中,加快其进度就可以缩短工程工期的是()。

A. cc 和 e\pmb{e}

B. dd 和 cc

C. ff 和 dd

D. ff 和 hh

第 9 题图 1

题09图

查看答案与解析收起答案与解析

参考答案:C

答案:C。

AOE 网的弧代表活动,工程工期由起点到终点的最长路径决定。有多条关键路径时,必须使每一条都缩短,才能缩短总工期。

图中三条最长路径为 b→d→c→gb\to d\to c\to g,长度 8+4+9+6=278+4+9+6=27;b→d→e→hb\to d\to e\to h,长度 8+4+6+9=278+4+6+9=27;b→f→hb\to f\to h,长度 8+10+9=278+10+9=27。经 a 的两条路径均为 18。A 加快 c、e,第三条仍为 27;B 加快 d、c,第三条仍不变;D 加快 f、h,第一条仍不变。C 的 d 覆盖前两条,f 覆盖第三条,同时缩短它们可使所有原关键路径变短。关键活动不能只看是否位于某一条最长路径,还要检查其他路径。

进入练习

第 10 题

数据结构
2 分

在一棵高度为 2 的 5 阶 B 树中, 所含关键字的个数最少是 ( )。

A. 5

B. 7

C. 8

D. 14

查看答案与解析收起答案与解析

参考答案:A

答案:A。

5 阶 B 树的结点最多有 5 个孩子、4 个关键字;非根结点至少有 ⌈5/2⌉−1=2\lceil5/2\rceil-1=2 个关键字。非叶根结点是例外,最少只有 1 个关键字和 2 个孩子,不能把非根下限直接套到根上。

本题高度 2 按结点层数计算,即根一层、叶一层。令根取最小规模:1 个关键字和 2 个叶孩子;每个叶孩子再各取 2 个关键字。总数为 1+2×2=51+2\times2=5,且这种结构满足所有约束,下限可达到。A 正确;B、C、D 都不是最小值。若把高度误当成根到叶有两条边,就会多算一层;“阶”限制的是最大孩子数,也不是每个结点必须含 5 个关键字。

进入练习

第 11 题

数据结构
2 分

对给定的关键字序列 110, 119, 007, 911, 114, 120, 122 进行基数排序,则第 2 趟分配收集后得到的关键字序列是()。

A. 007, 110, 119, 114, 911, 120, 122

B. 007, 110, 119, 114, 911, 122, 120

C. 007, 110, 911, 114, 119, 120, 122

D. 110, 120, 911, 122, 114, 007, 119

查看答案与解析收起答案与解析

参考答案:C

答案:C。

低位优先基数排序先按个位分配到 0~9 桶并收集,再按十位重复。每趟必须稳定,即同桶内保持进入次序,才能保留低位已排好的关系。

第一趟个位为 0、9、7、1、4、0、2,收集得到 110、120、911、122、114、007、119。第二趟十位为 1、2、1、2、1、0、1:0 桶是 007,1 桶依次是 110、911、114、119,2 桶是 120、122。因此结果为 007、110、911、114、119、120、122,选 C。A、B 的十位相同组没有保持个位顺序,B 还颠倒 120、122;D 是第一趟结果,尚未完成第二趟。

进入练习

第 12 题

计算机组成原理
2 分

某计算机主频为 1.2GHz1.2 \mathrm{GHz} , 其指令分为 4 类, 它们在基准程序中所占比例及 CPI 如下表所示。

指令类型 所占比例 CPI
A 50% 2
B 20% 3
C 10% 4
D 20% 5

该机的 MIPS 数是()。

A. 100

B. 200

C. 400

D. 600

查看答案与解析收起答案与解析

参考答案:C

答案:C。

CPI 表示每条指令平均需要的时钟周期。程序含不同类型指令,应按指令数量比例加权,不能把四类 CPI 直接算术平均:

CPI‾=0.50×2+0.20×3+0.10×4+0.20×5=3.\overline{CPI}=0.50\times2+0.20\times3+0.10\times4+0.20\times5=3.

主频 1.2 GHz=1200 MHz1.2\,\mathrm{GHz}=1200\,\mathrm{MHz},每秒周期数除以每条指令的周期数,得到每秒指令数;再以百万条为单位,MIPS=1200/3=400MIPS=1200/3=400,选 C。A、B 都低于给定权重算出的速度;D 的 600 相当于误把所有指令都按 CPI=2 处理。GHz 为每秒十亿周期,MIPS 为每秒百万指令,必须先统一单位。

进入练习

第 13 题

计算机组成原理
2 分

若某数采用 IEEE 754 单精度浮点数格式表示为 C640 0000H,则该数的值是()。

A. −1.5×213-1.5 \times 2^{13}

B. −1.5×212-1.5 \times 2^{12}

C. −0.5×213-0.5 \times 2^{13}

D. −0.5×212-0.5 \times 2^{12}

查看答案与解析收起答案与解析

参考答案:A

答案:A。

IEEE 754 单精度的 32 位分为 1 位符号、8 位阶码、23 位小数尾数。C6400000H 按字段展开为 1∣10001100∣100000000000000000000001\mid10001100\mid10000000000000000000000。符号位为 1,数值为负;阶码 100011002=14010001100_2=140,减偏置 127 后真实指数为 13。

阶码既非全 0 也非全 1,是规格化数,尾数最高位隐含 1。小数字段为 .100…2=0.5.100\ldots_2=0.5,所以有效数为 1.51.5。结果为 −1.5×213-1.5\times2^{13},A 正确。B 把指数少算 1;C 漏掉隐含整数位 1;D 同时犯这两个错误。十六进制只是位串的紧凑表示,不能把整个位串按补码整数解释。

进入练习

第 14 题

计算机组成原理
2 分

某字长为8位的计算机中,已知整型变量 xx 和 yy 的机器数分别为 [x]补=11110100[x]_{\text{补}} = 11110100 , [y]补=10110000[y]_{\text{补}} = 10110000 。若整型变量 z=2x+y/2z = 2x + y / 2 ,则 zz 的机器数为()。

A. 11000000

B. 00100100

C. 10101010

D. 溢出

查看答案与解析收起答案与解析

参考答案:A

答案:A。

8 位补码最高位为 1 表示负数,可把无符号值减去 28=2562^8=256 得到真值。因此 x=244−256=−12x=244-256=-12,y=176−256=−80y=176-256=-80。按题意 z=2x+y/2=−24−40=−64z=2x+y/2=-24-40=-64,中间值及结果都在 8 位有符号整数范围 [−128,127][-128,127] 内,无溢出。

转回补码:256−64=192=110000002256-64=192=11000000_2,选 A。B 的 00100100 是正数 36,C 的 10101010 是 -86,均不符;D 被范围检查排除。也可用算术移位验证:x 左移一位得 11101000(-24),y 右移时补符号位 1,得 11011000(-40),相加保留低 8 位即 11000000。负数除以 2 不能采用补零的逻辑右移。

进入练习

第 15 题

计算机组成原理
2 分

用海明码对长度为8位的数据进行检/纠错时,若能纠正一位错,则校验位数至少为()。

A. 2

B. 3

C. 4

D. 5

查看答案与解析收起答案与解析

参考答案:C

答案:C。

海明码要定位一位错误,r 个校验位产生的 2r2^r 种校验结果必须能区分“无错误”以及编码中每一位出错。8 位数据加 r 位校验,共 8+r8+r 个可能出错位置,所以 2r≥8+r+12^r\ge8+r+1。

逐个试最小值:r=2 时 4<114<11,r=3 时 8<128<12,都不够;r=4 时 16≥1316\ge13,第一次成立,所以至少 4 位,选 C。A、B 无法为每种状态分配不同校验结果;D 的 5 位虽足够,却不是最小值。校验位自身也可能出错,因此右边不能只写数据位数 8。本题要求纠正一位错,未额外要求扩展海明码的双错检测,无需再加总奇偶校验位。

进入练习

第 16 题

计算机组成原理
2 分

某计算机主存地址空间大小为 256MB,按字节编址。虚拟地址空间大小为 4GB,采用页式存储管理,页面大小为 4KB,TLB(快表)采用全相联映射,有 4 个页表项,内容如下表所示。

有效位 标记 页框号 ...
0 FF180H 0002H ...
1 3FFF1H 0035H ...
0 02FF3H 0351H ...
1 03FFFH 0153H ...

则对虚拟地址 03FF F180H 进行虚实地址变换的结果是()。

A. 015 3180H

B. 003 5180H

C. TLB 缺失

D. 缺页

查看答案与解析收起答案与解析

参考答案:A

答案:A。

页面为 4 KB=2124\,\mathrm{KB}=2^{12} B,虚拟地址低 12 位为偏移,高 20 位为虚页号。每个十六进制数字表示 4 位,因此 03FFF180H 可直接分出虚页号 03FFFH、偏移 180H。

全相联 TLB 以完整虚页号作标记,同时检查有效位。标记 03FFFH 的项有效位为 1,页框号为 0153H,物理地址为 (0153H≪12)+180H=0153180H(0153\mathrm H\ll12)+180\mathrm H=0153180\mathrm H,选 A。B 误用了标记 3FFF1H 的页框 0035H;C 错在本次命中有效项;D 的缺页不能仅由地址形式判断,本题已由有效 TLB 项完成转换。页内偏移保持不变,只替换高位的页号。

进入练习

第 17 题

计算机组成原理
2 分

假设变址寄存器 R 的内容为 1000H,指令中的形式地址为 2000H;地址 1000H 中的内容为 2000H,地址 2000H 中的内容为 3000H,地址 3000H 中的内容为 4000H,则变址寻址方式下访问到的操作数是()。

A. 1000H{1000}\mathrm{H}

B. 2000H

C. 3000H{3000}\mathrm{H}

D. 4000H

查看答案与解析收起答案与解析

参考答案:D

答案:D。

变址寻址的有效地址为“指令形式地址加变址寄存器内容”,即 EA=A+(R)EA=A+(R)。题中 A=2000HA=2000\mathrm H、(R)=1000H(R)=1000\mathrm H,故 EA=3000HEA=3000\mathrm H。题目问操作数,还需到该地址读取:M[3000H]=4000HM[3000\mathrm H]=4000\mathrm H,所以 D 正确。

A 的 1000H 是寄存器内容,B 的 2000H 是形式地址,C 的 3000H 是有效地址,都不是最终数据。地址 1000H、2000H 中的内容不参与此次有效地址形成;不能因为题目给了多处内存内容就逐次间接访问。把“计算访问地址”和“取出地址中的操作数”分为两步,可避免变址、直接、间接寻址之间的混淆。

进入练习

第 18 题

计算机组成原理
2 分

某 CPU 主频为 1.03GHz,采用 4 级指令流水线,每个流水段的执行需要 1 个时钟周期。假定 CPU 执行了 100 条指令,在其执行过程中,没有发生任何流水线阻塞,此时流水线的吞吐率为()。

A. 0.25×1090.25 \times 10^{9} 条指令/秒

B. 0.97×1090.97 \times 10^{9} 条指令/秒

C. 1.0×1091.0 \times 10^{9} 条指令/秒

D. 1.03×1091.03 \times 10^{9} 条指令/秒

查看答案与解析收起答案与解析

参考答案:C

答案:C。

理想 k 级流水线执行 n 条指令需要 k+n−1k+n-1 周期:第一条需经过全部 k 段,此后每周期再完成一条。本题 k=4、n=100,共 4+100−1=1034+100-1=103 周期。

总时间 T=103/(1.03×109)=100×10−9 s=100 nsT=103/(1.03\times10^9)=100\times10^{-9}\,\mathrm s=100\,\mathrm{ns},实际吞吐率为 100/T=1.0×109100/T=1.0\times10^9 条/秒,选 C。A 近似把每条都按四段串行执行,忽略重叠;B 不是给定频率下的结果;D 的 1.03×1091.03\times10^9 是稳态极限,忽略这 100 条指令的装入和排空开销。有限批次吞吐率必须用实际完成的总指令数除以完整总耗时。

进入练习

第 19 题

计算机组成原理
2 分

下列选项中,用于设备和设备控制器(I/O 接口)之间互连的接口标准是()。

A. PCI

B. USB

C. AGP

D. PCI-Express

查看答案与解析收起答案与解析

参考答案:B

答案:B。

要区分互连位置:系统内部总线连接处理器、主存、扩展控制器等部件,外设接口连接设备和设备控制器。USB 是通用串行总线,典型用途是把键盘、鼠标、移动存储等接到 USB 主机控制器,符合“设备与设备控制器之间互连”,B 正确。

A 的 PCI 是系统内部扩展总线,可连接网卡、声卡等接口卡;C 的 AGP 用于图形适配器的内部连接;D 的 PCI-Express 也是系统内部高速扩展互连。它们与 USB 都涉及数据传送,但连接对象不同,不符合本题所问的位置。判断接口标准不能只看是否叫“总线”,应关注其位于系统结构的哪一侧。

进入练习

第 20 题

计算机组成原理
2 分

下列选项中,用于提高 RAID 可靠性的措施有()。

I. 磁盘镜像

II. 条带化

III. 奇偶校验

IV. 增加 Cache 机制

A. 仅 I、II

B. 仅 I、III

C. 仅 I、III 和 IV

D. 仅 II、III 和 IV

查看答案与解析收起答案与解析

参考答案:B

答案:B。

RAID 的可靠性来自冗余:磁盘失效后仍能用其他信息恢复数据。I 镜像保存相同数据的副本,一份失效仍有另一份;III 奇偶校验保存数据块之间的校验关系,在相应容错范围内可重建丢失数据,二者均提高可靠性。

II 条带化把数据分散到多盘并行读写,主要提高吞吐;单纯条带化无副本或校验,磁盘失效仍会丢数据。IV 普通 Cache 主要降低访问延迟,并不自动提供磁盘故障恢复能力;题中未给备份、断电保护等条件,不能把它当成冗余。因此只有 I、III,选 B。A、D 错含 II,C 错含 IV。性能提高与可靠性提高是不同目标。

进入练习

第 21 题

计算机组成原理
2 分

某磁盘的转速为 10000 转/分, 平均寻道时间是 6 ms6 \mathrm{~ms} , 磁盘传输速率是 20MB/s20 \mathrm{MB} / \mathrm{s} , 磁盘控制器延迟为 0.2 ms0.2 \mathrm{~ms} , 读取一个 4KB4 \mathrm{KB} 的扇区所需的平均时间约为 ( )。

A. 9 ms9 \mathrm{~ms}

B. 9.4 ms9.4 \mathrm{~ms}

C. 12ms

D. 12.4ms{12.4}\mathrm{{ms}}

查看答案与解析收起答案与解析

参考答案:B

答案:B。

一次磁盘读操作要加上寻道、旋转等待、数据传输和控制器开销。转速 10000 转/分,转一圈为 60/10000 s=6 ms60/10000\,\mathrm s=6\,\mathrm{ms};到达磁道后目标扇区平均需等半圈,故平均旋转等待 3 ms。

4 KB 的传输时间约为 4 KB/(20 MB/s)≈0.2 ms4\,\mathrm{KB}/(20\,\mathrm{MB/s})\approx0.2\,\mathrm{ms}。合计 6+3+0.2+0.2≈9.4 ms6+3+0.2+0.2\approx9.4\,\mathrm{ms},B 正确;二进制 KB 与十进制 MB 的细微换算不影响“约为”的选项。A 的 9 ms 漏传输和控制器时间,C 的 12 ms 把等候算成整圈且漏其他开销,D 的 12.4 ms 把平均旋转等待误算为整圈。读一个扇区无需等待扇区再次转回原位置。

进入练习

第 22 题

计算机组成原理
2 分

下列关于中断 I/O 方式和 DMA 方式比较的叙述中,错误的是()。

A. 中断 I/O 方式请求的是 CPU 处理时间,DMA 方式请求的是总线使用权

B. 中断响应发生在一条指令执行结束后,DMA 响应发生在一个总线事务完成后

C. 中断 I/O 方式下数据传送通过软件完成,DMA 方式下数据传送由硬件完成

D. 中断 I/O 方式适用于所有外部设备, DMA 方式仅适用于快速外部设备

查看答案与解析收起答案与解析

参考答案:D

答案:D。

中断 I/O 由 CPU 执行服务程序搬运数据,DMA 由控制器在设备与主存间直接传送,CPU 主要参与初始化及完成处理。A 正确:前者申请 CPU 服务,后者申请总线使用权。B 正确:可屏蔽中断通常在指令结束处响应,DMA 可在当前总线事务完成后取得总线,不必等整条指令结束。C 正确:两种搬运分别依靠软件指令与硬件控制。

D 把“中断 I/O 适用于所有外设”说得过于绝对。极高速连续数据若逐次中断,服务和现场切换开销可能使 CPU 来不及处理,通常要用 DMA 等方式。DMA 适于高速批量传送,并不意味着中断就适于所有设备,所以该项整体错误。

进入练习

第 23 题

操作系统
2 分

用户在删除某文件的过程中,操作系统不可能执行的操作是()。

A. 删除此文件所在的目录

B. 删除与此文件关联的目录项

C. 删除与此文件对应的文件控制块

D. 释放与此文件关联的内存缓冲区

查看答案与解析收起答案与解析

参考答案:A

答案:A。

目录保存文件名与文件控制信息之间的对应关系。删除一个文件与删除容纳它的整个目录是不同操作:删除文件时应撤去对应目录项;满足回收条件时,还可回收文件控制块、释放数据块以及相关内存缓冲区。因此 B、C、D 都是可能步骤。

A 删除“此文件所在的目录”会影响目录自身及其中其他文件,不能作为只删除该文件的处理,故选 A。注意“可能”不等于“每次立即发生”:有其他硬链接或文件仍被打开时,控制块和数据块回收可以推迟,但不影响 C 属于可能操作。目录项是目录中的一条记录,删除这条记录不等于删除其所在目录。

进入练习

第 24 题

操作系统
2 分

为支持 CD-ROM 中视频文件的快速随机播放, 播放性能最好的文件数据块组织方式是 ( )。

A. 连续结构

B. 链式结构

C. 直接索引结构

D. 多级索引结构

查看答案与解析收起答案与解析

参考答案:A

答案:A。

视频随机播放需要迅速定位指定偏移的数据块,并连续读取后续内容。连续结构使文件数据块相邻存放,知道首块号与逻辑块号 i 后,可直接求物理块号“首块+i”,不必逐块追踪指针,且后续读取减少寻道,故 A 性能最好。

B 链式结构的随机访问通常要从前面沿链走,定位慢。C 直接索引支持随机访问,但可能先读索引块,数据也未必相邻。D 多级索引经过更多索引层次,额外访问更明显。连续分配通常有扩展不便、外部碎片等缺点,但 CD-ROM 中视频写成后不动态增长,本题目标是播放性能,这些缺点不改变选择。不能把“支持随机访问”直接等同于“随机播放性能最好”。

进入练习

第 25 题

操作系统
2 分

用户程序发出磁盘 I/O 请求后,系统的处理流程是:用户程序→系统调用处理程序→设备驱动程序→中断处理程序。其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是()。

A. 用户程序

B. 系统调用处理程序

C. 设备驱动程序

D. 中断处理程序

查看答案与解析收起答案与解析

参考答案:C

答案:C。

磁盘请求从抽象到具体逐层处理。用户程序按文件及偏移提出需求;系统调用处理程序检查参数、权限并进入内核服务;设备驱动了解具体磁盘寻址和控制方式,负责把逻辑块请求转换为柱面号、磁头号、扇区号等设备位置,并发出硬件控制命令,因此 C 正确。

A 用户程序不应依赖磁盘物理几何信息;B 系统调用处理程序提供统一服务入口,题中这种设备相关计算属于驱动层;D 中断处理程序主要在设备完成或出错后响应中断、记录状态、唤醒等待者,不承担启动请求前的地址转换。定位软件层次时,抓住“涉及具体硬件特性”就能判断应由设备驱动处理。

进入练习

第 26 题

操作系统
2 分

若某文件系统索引节点中有直接地址项和间接地址项,则下列选项中,与单个文件长度无关的因素是()。

A. 索引节点的总数

B. 间接地址索引的级数

C. 地址项的个数

D. 文件块大小

查看答案与解析收起答案与解析

参考答案:A

答案:A。

一个文件可有多长,取决于它自身索引节点里的地址项能覆盖多少数据块。设块大小 B 字节、每个地址占 a 字节,则一个间接索引块能放 B/aB/a 个地址;一级间接覆盖这么多块,二级间接覆盖 (B/a)2(B/a)^2 块,级数增加会扩大寻址范围。

所以 B 间接级数、C 地址项数量、D 块大小都会影响单个文件的长度上限;块大小还决定每个块能保存多少数据。A 索引节点总数主要限制整个文件系统能建立多少个文件,不会增加某一个索引节点的寻址能力,因此与单个文件长度无关。整个文件系统的文件数量限制与一个文件的容量限制应分别考虑。

进入练习

第 27 题

操作系统
2 分

设系统缓冲区和用户工作区均采用单缓冲,从外设读入 1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5,对用户工作区中的 1 个数据块进行分析的时间为 90(见右图)。进程从外设读入并分析 2 个数据块的最短时间是()。

A. 200

B. 295

C. 300

D. 390

第 27 题图 1
查看答案与解析收起答案与解析

参考答案:C

答案:C。

单系统缓冲只有一块空间,读入后必须搬走才能读下一块;单用户工作区在分析结束前也不能被覆盖。但外设读第二块时,CPU 可以分析第一块,两者能够重叠。

操作 最早时间区间
第一块:外设读入 0~100
第一块:搬入用户区 100~105
第一块:分析 105~195
第二块:外设读入 105~205
第二块:搬入用户区 205~210
第二块:分析 210~300

第二块读完时用户区已经空闲,随即搬运、分析,总时间 300,选 C。A 只算读取,B 的 295 误让第二块在 100 时开始读,忽略搬运期间缓冲仍占用;D 的 390 将操作全串行相加,漏掉可并行阶段。

进入练习

第 28 题

操作系统
2 分

下列选项中, 会导致用户进程从用户态切换到内核态的操作是( )。

I. 整数除以零

II. sin()函数调用

III. read 系统调用

A. 仅 I、II

B. 仅 I、III

C. 仅II、III

D. I、II 和 III

查看答案与解析收起答案与解析

参考答案:B

答案:B。

用户态进入内核态的常见原因是系统调用、异常或中断。I 整数除以零是处理器检测到的异常,处理器转入异常处理程序,切换内核态。III read 是系统调用,用户程序通过陷入机制请求操作系统读取数据,也进入内核态。

II 的 sin() 通常是数学库函数,执行用户空间中的计算代码,函数调用本身只改变控制流,不需要特权,不会必然切换内核态。正确集合为 I、III,选 B。A 错含 II、漏 III,C 错含 II、漏 I,D 多列 II。应区分普通函数与系统调用;题目未给 sin() 内部触发异常等额外情形,不能用假设的异常去判断普通函数调用。

进入练习

第 29 题

操作系统
2 分

计算机开机后,操作系统最终被加载到()。

A. BIOS

B. ROM

C. EPROM

D. RAM

查看答案与解析收起答案与解析

参考答案:D

答案:D。

CPU 执行操作系统时,内核运行代码与数据需要驻留主存。开机先执行固件中的引导代码,再由引导过程把磁盘等启动介质上的操作系统加载到 RAM,最后转交控制权,因此最终加载位置是 D。

A BIOS 是固件提供的基本输入输出及启动功能,不是操作系统运行时的目标内存。B ROM、C EPROM 是非易失性存储器,可保存固件或特定程序,不是此题通常计算机把操作系统动态装入的主存。RAM 掉电后内容消失不影响开机运行,因为启动时可重新加载。要区分“引导代码原先在哪里保存”和“操作系统加载后在哪里执行”,不能因 ROM 中有启动程序就把它当成操作系统加载位置。

进入练习

第 30 题

操作系统
2 分

若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是()。

I. 处理越界错

II. 置换页

III. 分配内存

A. 仅 I、II

B. 仅II、III

C. 仅 I、III

D. I、II 和 III

查看答案与解析收起答案与解析

参考答案:B

答案:B。

缺页表示访问的是合法虚拟页面,但该页当前不在主存;越界表示地址超出进程允许范围,是另一类地址合法性错误。对合法缺页,内核需把所需页装入主存:有空闲页框时可分配内存;无合适空闲页框时可选择页面置换,必要时将脏页写回,再读入所需页并更新页表。

因此 II 置换页、III 分配内存都可能发生;I 处理越界错不属于本题合法缺页处理,选 B。A、C、D 都含 I,应排除。这里“可能”不等于“必须”:有空闲页框时无需置换。缺页处理完成后通常重新执行引起异常的访存指令,而不是把合法缺页当作地址越界直接终止程序。

进入练习

第 31 题

操作系统
2 分

某系统正在执行三个进程 P1\mathbf{P}_1 、 P2\mathbf{P}_2 和 P3\mathbf{P}_3 ,各进程的计算(CPU)时间和 I/O 时间比例如下表所示。

进程 计算时间 I/O 时间
P_1 90% 10%
P_2 50% 50%
P_3 15% 85%

为提高系统资源利用率,合理的进程优先级设置应为()。

A. P1>P2>P3\mathrm{P_1 > P_2 > P_3}

B. P3>P2>P1P_{3} > P_{2} > P_{1}

C. P2>P1=P3\mathrm{P}_2 > \mathrm{P}_1 = \mathrm{P}_3

D. P1>P2=P3P_{1} > P_{2} = P_{3}

查看答案与解析收起答案与解析

参考答案:B

答案:B。

题目目标是提高 CPU 与 I/O 设备的综合利用率。I/O 密集进程占用 CPU 较短,运行后很快提交 I/O 并阻塞;此时设备工作,CPU 可运行其他进程,二者更容易重叠。若长期优先计算密集进程,I/O 进程迟迟发不出请求,设备可能空闲。

P3 的 I/O 比例 85%,最偏向 I/O;P2 为 50%,居中;P1 只有 10%,最偏向计算。故优先级为 P3>P2>P1P_3>P_2>P_1,选 B。A 恰好反向;C 将负载差异最大的两者等同;D 提高计算密集的 P1 且未区分 P2、P3。此处采用促进资源并行的调度原则,题目未给公平性、截止时间等其他目标。

进入练习

第 32 题

操作系统
2 分

下列关于银行家算法的叙述中,正确的是()。

A. 银行家算法可以预防死锁

B. 当系统处于安全状态时,系统中一定无死锁进程

C. 当系统处于不安全状态时, 系统中一定会出现死锁进程

D. 银行家算法破坏了死锁必要条件中的“请求和保持”条件

查看答案与解析收起答案与解析

参考答案:B

答案:B。

安全状态意味着存在安全序列:按该次序,即使进程提出声明的最大资源需求,系统仍能让它们依次完成并释放资源。所以安全状态不可能已经有死锁进程,B 正确。

A 错在术语:银行家算法属于“避免死锁”,在分配前试算,拒绝导致不安全状态的请求;“预防死锁”则从机制上破坏某个必要条件。C 错:不安全表示不能保证所有最大需求均满足,实际请求较少或较早释放时仍可能完成,并不等于死锁。D 错:银行家允许进程保留已有资源再申请其他资源,没有破坏“请求和保持”。安全必无死锁,不安全则可能有死锁,也可能没有,应区分这三个概念。

进入练习

第 33 题

计算机网络
2 分

在 OSI 参考模型中, 下列功能需由应用层的相邻层实现的是 ( )。

A. 对话管理

B. 数据格式转换

C. 路由选择

D. 可靠数据传输

查看答案与解析收起答案与解析

参考答案:B

答案:B。

OSI 七层自上而下为应用、表示、会话、传输、网络、数据链路、物理。应用层紧邻的下一层是表示层,解决不同系统对数据表示的差异,如字符编码、数据格式转换,以及表示相关的压缩、加密等功能,故 B 正确。

A 对话管理属于会话层,负责会话建立与对话控制,与应用层之间隔着表示层。C 路由选择属于网络层,负责分组跨网络转发。D 可靠数据传输通常属于传输层的端到端服务。题目问的是模型中哪层承担功能,不是哪些功能可能被应用程序使用;先定位应用层相邻层,再匹配职责,不能把会话层误当成直接相邻层。

进入练习

第 34 题

计算机网络
2 分

若右图为 10BaseT 网卡接收到的信号波形,则该网卡收到的比特串是()。

A. 0011 0110

B. 1010 1101

C. 0101 0010

D. 1100 0101

第 34 题图 1
查看答案与解析收起答案与解析

参考答案:A

答案:A。

10BaseT 采用曼彻斯特编码,每比特中间必有跳变;按本题以太网约定,中点由低到高表示 0,由高到低表示 1。图中虚线划分各比特边界,应观察相邻两虚线之间的中点,不能把边界处的跳变也算成一个数据位。

从左到右八个中点方向依次为上升、上升、下降、下降、上升、下降、下降、上升,得到 0011 0110,选 A。B 的 1010 1101、C 的 0101 0010、D 的 1100 0101 均与逐位中点方向不符。曼彻斯特编码用一个比特内的跳变方向判位,不是用电平高低直接判位;同时必须采用题目对应的以太网 0、1 约定。

进入练习

第 35 题

计算机网络
2 分

主机甲通过 1 个路由器(存储转发方式)与主机乙互联,

两段链路的数据传输速率均为 10Mbps,主机甲分别采用报文交换和分组大小为 10kbit 的分组交换向主机乙发送 1 个大小为 8Mbit( 1M=1061\mathrm{M} = 10^{6} )的报文。若忽略链路传播延迟、分组头开销和分组拆装时间,则两种交换方式完成该报文传输所需的总时间分别为()。

A. 800 ms,1600 ms800 \mathrm{~ms}, 1600 \mathrm{~ms}

B. 801ms, 1600ms

C. 1600ms, 800ms

D. 1600ms, 801ms

查看答案与解析收起答案与解析

参考答案:D

答案:D。

存储转发要求路由器收完整个交换单位才转发。报文交换以整个 8 Mbit 为单位,单段发送需 8×106/(10×106)=0.8 s8\times10^6/(10\times10^6)=0.8\,\mathrm s;两段依次完成,共 1600 ms。

分组数为 8×106/(10×103)=8008\times10^6/(10\times10^3)=800,每组单段发送需 1 ms。第一组到乙要 2 ms,此后甲发送后组与路由器转发前组重叠,乙每隔 1 ms 收完一组,故总时间 (800+2−1)×1=801 ms(800+2-1)\times1=801\,\mathrm{ms}。A、B 把两种方式的大小关系颠倒;C 的 800 ms 漏了最后一组过第二段的时间;D 正确。题设已忽略传播、组头与拆装开销,不能额外添加。

进入练习

第 36 题

计算机网络
2 分

下列介质访问控制方法中,可能发生冲突的是()。

A. CDMA

B. CSMA

C. TDMA

D. FDMA

查看答案与解析收起答案与解析

参考答案:B

答案:B。

CSMA 是载波侦听多路访问,站点发现信道空闲才发送。但信号传播需要时间,两个站点可能在彼此信号尚未到达时都判断空闲,随后同时发送,信号在共享介质上叠加形成冲突。因此先听后发能降低冲突概率,不能完全消除冲突,B 正确。

A CDMA 按码字区分用户,C TDMA 按不同时隙分配,D FDMA 按不同频段分配。在题目采用的理想信道划分模型中,各用户已分配不同资源,不发生 CSMA 那种竞争碰撞,所以不选 A、C、D。应区分随机争用和预先划分资源,也不能把一般噪声、码间干扰等传输问题都称作本题的介质访问冲突。

进入练习

第 37 题

计算机网络
2 分

HDLC 协议对 01111100 01111110 组帧后对应的比特串为()。

A. 01111100 00111110 10

B. 01111100 01111101 01111110

C. 01111100 01111101 0

D. 01111100 01111110 01111101

查看答案与解析收起答案与解析

参考答案:A

答案:A。

HDLC 的帧标志是 01111110,为避免数据出现相同模式,发送端进行零比特填充:连续遇到五个 1,立即插入一个 0;接收端按相反规则去掉填充位。原有 0 不能删除,遇到六个连续 1 时也要在第 5 个后插 0。

第一段 01111100 变为 011111000;第二段 01111110 变为 011111010。两段间本来有 0,连续 1 的计数已清零,拼接后为 011111000011111010,按选项分组就是 01111100 00111110 10,选 A。C 只得到 17 位,少填一位;B、D 不是本数据填充结果,长度也不等于原 16 位加 2 位。选项比较的是填充后的数据部分。

进入练习

第 38 题

计算机网络
2 分

对于 100Mbps 的以太网交换机,当输出端口无排队,以直通交换(cut-through switching)方式转发一个以太网帧(不包括前导码)时,引入的转发延迟至少是()。

A. 0μs0 \mu \mathrm{s}

B. 0.48μs

C. 5.12μs

D. 121.44μs

查看答案与解析收起答案与解析

参考答案:B

答案:B。

直通交换尚未收完整帧就开始转发,但至少要读到目的 MAC 地址,才能查表确定输出端口。不含前导码的以太网帧最前面就是 6 B 目的地址,因此最早也要接收 6×8=486\times8=48 bit。

速率为 100 Mbps=108100\,\mathrm{Mbps}=10^8 bit/s,这段接收时间 48/108 s=0.48 μs48/10^8\,\mathrm s=0.48\,\mu\mathrm s,故 B 正确。A 的 0 漏了目的地址识别;C 的 5.12 μs 是传输 64 B 最小帧的时间;D 的 121.44 μs 是传输 1518 B 帧的时间,后二者等待更多乃至全部帧,超过直通方式最低延迟。题设无排队,无需加等待输出端口的时间。

进入练习

第 39 题

计算机网络
2 分

主机甲与主机乙之间已建立一个 TCP 连接,双方持续有数据传输,且数据无差错与丢失。若甲收到 1 个来自乙的 TCP 段,该段的序号为 1913、确认序号为 2046、有效载荷为 100 字节,则甲立即发送给乙的 TCP 段的序号和确认序号分别是()。

A. 2046, 2012

B. 2046, 2013

C. 2047, 2012

D. 2047, 2013

查看答案与解析收起答案与解析

参考答案:B

答案:B(2046,2013)。

TCP 的序号按字节编号。数据段的序号是该段第一个数据字节的序号,确认序号则表示接收方下一次期望收到的字节序号。

乙发来的数据段序号为 1913,有效载荷为 100 B,因此该段携带字节 1913~2012:最后一个字节的序号为 1913+100−1=20121913+100-1=2012。按本题正常、连续接收的考试模型,甲接收后已收到乙截至 2012 的数据,下一次期望乙发送的字节是 1913+100=20131913+100=2013,所以甲回复段的确认序号为 2013。

乙段的确认序号 2046 表示乙已累计确认甲截至 2045 的数据,下一次期望收到甲的字节 2046。本题采用的默认约定是:甲在立即回复前没有另行发送超过该已确认范围的数据,其下一待发字节就是 2046。因此甲回复段的序号为 2046,选择 B。

A、C 把确认序号误写成最后一个收到的字节号 2012;C、D 又把甲的发送序号多加了 1。普通 ACK 不占用序号空间,不能因为发出确认而把发送序号额外加 1。

**适用边界:**实际 TCP 中,“最早尚未被确认的序号”和“下一待发序号”是不同状态;若甲已经另发了尚未被乙确认的数据,乙报出的 ACK=2046 本身不能唯一确定甲下一次发送的序号。本题按上述未另发未确认数据、双方连续接收的考试约定求解,不能把“收到的确认号永远等于下一段发送序号”当成一般协议规则。

进入练习

第 40 题

计算机网络
2 分

下列关于 SMTP 协议的叙述中,正确的是()。

I. 只支持传输7比特ASCII码内容

II. 支持在邮件服务器之间发送邮件

III. 支持从用户代理向邮件服务器发送邮件

IV. 支持从邮件服务器向用户代理发送邮件

A. 仅 I、II 和 III

B. 仅 I、II 和 IV

C. 仅 I、III 和 IV

D. 仅 II、III 和 IV

查看答案与解析收起答案与解析

参考答案:A

答案:A。

按本题采用的基础 SMTP 模型,SMTP 是发信协议,传统内容以 7 bit ASCII 表示,所以 I 成立。非 ASCII 文本、附件可以先经 MIME 等编码转换;现代 SMTP 扩展另有能力,但不将额外规则代入这道基础模型题。

用户代理向发送服务器提交邮件用 SMTP,对应 III;服务器向接收方服务器中继邮件也用 SMTP,对应 II。用户代理从邮箱服务器获取邮件通常用 POP3 或 IMAP,IV 的收信过程不由 SMTP 完成。因此 I、II、III 正确,选 A。B、C 错含 IV,且漏一个发送环节;D 虽含 II、III,仍错含 IV、漏题目范围内的 I。应区分发信提交、中继和收信三个环节。

进入练习

解答题

7 题 · 共 70 分

第 41 题

数据结构
13 分

已知一个整数序列 A=(a0,a1,⋯ ,an−1)A = (a_0, a_1, \cdots, a_{n-1}) ,其中 0⩽ai<n0 \leqslant a_i < n ( 0⩽i<n0 \leqslant i < n )。若存在 ap1=ap2=⋯=apm=xa_{p1} = a_{p2} = \cdots = a_{pm} = x 且 m>n/2m > n/2 ( 0⩽pk<n,1⩽k⩽m0 \leqslant p_k < n, 1 \leqslant k \leqslant m ),则称 xx 为 AA 的主元素。例如 A=(0,5,5,3,5,7,5,5)A = (0, 5, 5, 3, 5, 7, 5, 5) ,则 5 为主元素;又如 A=(0,5,5,3,5,1,5,7)A = (0, 5, 5, 3, 5, 1, 5, 7) ,则 A 中没有主元素。假设 A 中的 n 个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出 A 的主元素。若存在主元素,则输出该元素;否则输出 -1。要求:

1)给出算法的基本设计思想。

2)根据设计思想,采用 C、C++ 或 Java 语言描述算法,关键之处给出注释。

3)说明你所设计算法的时间复杂度和空间复杂度。

查看答案与解析收起答案与解析

**(1)设计思想。**主元素的出现次数严格大于 n/2n/2,所以至多存在一个。使用 Boyer–Moore 投票法,逐步抵消一对不同值。若主元素存在,抵消后它仍比其他所有值合起来多,不会被全部消去。candidate 保存当前候选,votes 保存尚未抵消的候选数量;遇相同值加 1,遇不同值减 1,votes 归零后让下个元素成为新候选。

第一遍只得到可能的主元素,没有主元素的数组也可能留下候选。因此第二遍必须重新统计候选的实际次数,超过 n/2n/2 才输出,否则输出 -1。

(2)C 实现。

c 复制代码
int majority(const int a[], int n) {
    if (n <= 0) return -1;
    int candidate = 0, votes = 0;
    for (int i = 0; i < n; ++i) {
        if (votes == 0) { candidate = a[i]; votes = 1; } // 建立新候选
        else if (a[i] == candidate) ++votes;
        else --votes;  // 消去一对不同值
    }
    int count = 0;
    for (int i = 0; i < n; ++i)
        if (a[i] == candidate) ++count;
    return count > n / 2 ? candidate : -1;
}

题中第一个数组可留下候选 5,第二遍计数为 5,满足 5>8/25>8/2,输出 5;第二个数组的 5 出现 4 次,只等于一半,输出 -1。n=1 时唯一元素就是主元素;空数组由入口检查返回 -1。题设合法元素非负,所以 -1 不会与合法值混淆。

**(3)正确性与复杂度。**若抵消一对涉及主元素,主元素与非主元素各减少一个,数量优势不变;若抵消两个非主元素,主元素优势增大。因此存在主元素时最终候选必为它,第二遍计数保证不会误报。两遍均扫描 n 个元素,时间 O(n)O(n);只用固定几个变量,额外空间 O(1)O(1)。虽然值域为 0~n-1,可以另建计数数组,但投票法无需 O(n)O(n) 额外空间。

进入练习

第 42 题

数据结构
10 分

设包含 4 个数据元素的集合 S={“do”, “for”, “repeat”, “while”}S = \{\text{“do”, “for”, “repeat”, “while”}\} , 各元素的查找概率依次为 p1=0.35p_{1} = 0.35 , p2=0.15p_{2} = 0.15 , p3=0.15p_{3} = 0.15 , p4=0.35p_{4} = 0.35 。将 SS 保存在一个长度为 4 的顺序表中, 采用折半查找法, 查找成功时的平均查找长度为 2.2。请回答:

1)若采用顺序存储结构保存 S,且要求平均查找长度更短,则元素应如何排列?应使用何种查找方法?查找成功时的平均查找长度是多少?

  1. 若采用链式存储结构保存 SS , 且要求平均查找长度更短, 则元素应如何排列? 应使用何种查找方法? 查找成功时的平均查找长度是多少?
查看答案与解析收起答案与解析

**基础:**成功平均查找长度 ASL=∑piciASL=\sum p_i c_i,其中 cic_i 是找到元素 i 的关键字比较次数。高概率元素应尽量分配较少比较次数,不同结构可以选择不同查找方法。

**(1)顺序存储。**按概率递减排列,如 do、while、for、repeat,使用顺序查找。第 i 个元素需 i 次比较,所以

ASL=0.35×1+0.35×2+0.15×3+0.15×4=2.1<2.2.ASL=0.35\times1+0.35\times2+0.15\times3+0.15\times4=2.1<2.2.

do 与 while 可互换,for 与 repeat 也可互换。若较大概率 p 放在较后位置 j,较小概率 q 放在较前位置 i,交换后 ASL 减少 (p−q)(j−i)>0(p-q)(j-i)>0,说明概率递减是合理次序。该排列不是字典序,应采用顺序查找,不能再直接按关键字进行折半查找。

**(2)链式存储。**可采用二叉链表构造二叉排序树:for 为根,do 为左孩子,while 为右孩子,repeat 为 while 的左孩子。字典序为 do<for<repeat<whiledo<for<repeat<while,该树满足左小右大,查找时逐个比较并选择左右分支。

元素 概率 比较次数
for 0.15 1
do 0.35 2
while 0.35 2
repeat 0.15 3

所以 ASL=0.15+0.35×2+0.35×2+0.15×3=2.0ASL=0.15+0.35\times2+0.35\times2+0.15\times3=2.0,比 2.2 短。也可取 repeat 为根,do 为左孩子且带右孩子 for,while 为右孩子,ASL 同为 2.0。链式存储不必等同于单链表;若限定单链表,则用第(1)问的概率次序连接并顺序查找,也能得到 2.1,二叉链表可进一步改善到 2.0。

进入练习

第 43 题

计算机组成原理
9 分

某 32 位计算机, CPU 主频为 800MHz800 \mathrm{MHz} , Cache 命中时的 CPI 为 4, Cache 块大小为 32 字节; 主存采用 8 体交叉存储方式, 每个体的存储字长为 32 位、存储周期为 40ns; 存储器总线宽度为 32 位, 总线时钟频率为 200MHz200 \mathrm{MHz} , 支持突发传送总线事务。每次读突发传送总线事务的过程包括: 送首地址和命令、存储器准备数据、传送数据。每次突发传送 32 字节, 传送地址或 32 位数据均需要一个总线时钟周期。请回答下列问题, 要求给出理由或计算过程。

1)CPU和总线的时钟周期各为多少?总线的带宽(即最大数据传输率)为多少?

2)Cache缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取?

3)存储器总线完成一次读突发传送总线事务所需的时间是多少?

4)若程序 BP 执行过程中,共执行了 100 条指令,平均每条指令需进行 1.2 次访存,Cache 缺失率为 5%5\% ,不考虑替换等开销,则 BP 的 CPU 执行时间是多少?

查看答案与解析收起答案与解析

**(1)周期与带宽。**周期为频率的倒数:CPU 周期 TC=1/(800×106)=1.25 nsT_C=1/(800\times10^6)=1.25\,\mathrm{ns};总线周期 TB=1/(200×106)=5 nsT_B=1/(200\times10^6)=5\,\mathrm{ns}。总线每周期最多传 32 bit=4 B,最大数据带宽 4×200×106=800×106 B/s=800 MB/s4\times200\times10^6=800\times10^6\,\mathrm{B/s}=800\,\mathrm{MB/s}。这里 MB 按带宽常用十进制单位计;32 位不能直接当成 32 字节。

**(2)事务个数。**填充一个 Cache 块需 32 B,每次突发事务正好传 32 B,故需要 32/32=132/32=1 个读突发事务。总线宽 4 B 是每拍的数据量,不表示一个事务只有 4 B。

**(3)事务时间。**一次事务包括三阶段:首地址及命令占 1 拍,5 ns;存储器准备数据占 40 ns;32 B 分成 8 个 32 位字传送,占 8×5=408\times5=40 ns。8 体交叉存储让连续 8 个字分布在不同存储体,可交叠准备,后续各字不必重新等待一个完整的 40 ns。因此一次事务为 5+40+40=85 ns5+40+40=85\,\mathrm{ns}。

**(4)CPU 执行时间。**命中情况下基础时间 100×4×1.25=500 ns100\times4\times1.25=500\,\mathrm{ns}。总访存数为 100×1.2=120100\times1.2=120,缺失数为 120×0.05=6120\times0.05=6。不计替换等开销,每次缺失额外等待 85 ns,损失 6×85=510 ns6\times85=510\,\mathrm{ns},总时间为 500+510=1010 ns=1.01 μs500+510=1010\,\mathrm{ns}=1.01\,\mu\mathrm s。基础 CPI 已含命中开销,不能再为每次命中重复加访存时间;主频和总线频率也不能混用。

进入练习

第 44 题

计算机组成原理
14 分

某计算机采用 16 位定长指令字格式,其 CPU 中有一个标志寄存器,其中包含进位/借位标志 CF、零标志 ZF 和符号标志 NF。假定为该机设计了条件转移指令,其格式如下:

15 11 10 9 8 7 0
0 0 0 0 0 C Z N OFFSET

其中,00000 为操作码 OP;C、Z 和 N 分别为 CF、ZF 和 NF 的对应检测位,某检测位为 1 时表示需检测对应标志位,需检测的标志位中只要有一个为 1 就转移,否则不转移。例如,若 C = 1, Z = 0, N = 1,则需检测 CF 和 NF 的值,当 CF = 1 或 NF = 1 时发生转移;OFFSET 是相对偏移量,用补码表示。转移执行时,转移目标地址为 (PC)+2+2×OFFSET(PC) + 2 + 2 \times OFFSET ;顺序执行时,下条指令地址为 (PC)+2(PC) + 2 。请回答下列问题。

1)该计算机存储器按字节编址还是按字编址?该条件转移指令向后(反向)最多可跳转多少条指令?

  1. 某条件转移指令的地址为 200CH200 \mathrm{CH} , 指令内容如下图所示, 若该指令执行时 CF=0\mathrm{CF} = 0 , ZF=0\mathrm{ZF} = 0 , NF=1\mathrm{NF} = 1 , 则该指令执行后 PC 的值是多少? 若该指令执行时 CF=1\mathrm{CF} = 1 , ZF=0\mathrm{ZF} = 0 , NF=0\mathrm{NF} = 0 , 则该指令执行后 PC 的值又是多少? 请给出计算过程。
15 11 10 9 8 7 0
0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1

3)实现“无符号数比较小于或等于时转移”功能的指令中,C、Z和N应各是什么?

4)以下是该指令对应的数据通路示意图,要求给出图中部件①~③的名称或功能说明。

第 44 题图 1
第 44 题图 2
第 44 题图 3
查看答案与解析收起答案与解析

**(1)编址与反向范围。**指令长 16 bit=2 B,顺序执行 PC 增加 2,说明每个地址对应 1 B,即按字节编址。8 位 OFFSET 补码范围是 -128~127,乘 2 将指令条数转换为字节偏移。最小目标为 PC+2+2×(−128)=PC−254PC+2+2\times(-128)=PC-254,从当前指令算起,反向距离为 254/2=127254/2=127 条指令。-128 是相对下一条指令 PC+2PC+2 的偏移,不是相对当前指令的条数。

**(2)先判条件,再算 PC。**指令 C=0、Z=1、N=1,条件为 ZF∨NFZF\lor NF,CF 不参与。OFFSET=11100011B=E3H,无符号值 227,补码值 227−256=−29227-256=-29。

当 CF=0、ZF=0、NF=1 时,NF 满足检测,发生转移,PC′=200CH+2+2×(−29)=200EH−003AH=1FD4HPC'=200C\mathrm H+2+2\times(-29)=200E\mathrm H-003A\mathrm H=1FD4\mathrm H。当 CF=1、ZF=0、NF=0 时,被检测的两位都为 0,CF 为 1 也不触发,顺序执行,PC′=200CH+2=200EHPC'=200C\mathrm H+2=200E\mathrm H。

**(3)无符号小于等于。**比较无符号 A、B 可由 A-B 设置标志。A<B 时发生借位,CF=1;A=B 时结果为零,ZF=1。因此所需条件是 CF∨ZFCF\lor ZF,应设 C=1、Z=1、N=0。NF 表示结果符号,不能用于判断无符号大小。

**(4)数据通路。**①保存 OP、C、Z、N、OFFSET,是指令寄存器 IR。②把符号扩展后的 OFFSET 左移一位,产生 2×OFFSET2\times OFFSET;先扩展使负偏移仍保持正确符号。③有来自②及 PC+2PC+2 的两路输入,是加法器,输出转移目标。左侧三个与门分别计算 C·CF、Z·ZF、N·NF,再经或门控制多路选择器:条件真选择③的目标,条件假选择 PC+2PC+2,送回 PC。检测位为 0 时,相应标志不会影响转移决定。

进入练习

第 45 题

操作系统
7 分

某博物馆最多可容纳 500 人同时参观, 有一个出入口, 该出入口一次仅允许一个人通过。参观者的活动描述如下:

c 复制代码
cobegin
    参观者进程 i:
    {
    ...
    进门;
    ...
    参观;
    ...
    出门;
    ...
    }
    coend

请添加必要的信号量和 P、V [或 wait()、signal()] 操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。

查看答案与解析收起答案与解析

馆内人数上限与门口一次一人是两种约束。计数信号量 capacity=500 表示还可预留的参观名额;互斥信号量 gate=1 保护同一个出入口,进入和离开都必须使用。P 申请资源,不足时阻塞;V 释放资源并可能唤醒等待者。

text 复制代码
semaphore capacity = 500, gate = 1;

参观者 i:
    P(capacity);       // 先取得入馆名额
    P(gate);
    进门;
    V(gate);
    参观;
    P(gate);
    出门;
    V(gate);
    V(capacity);       // 完全出门后归还名额

每个参观者成功取得一个名额后才进馆,出馆后归还,因此馆内人数不会超过 500。gate 的临界区只包住进门或出门动作,保证同一时刻最多一人通过;参观时释放 gate,使其他人仍能进出。

进入前必须先 P(capacity) 再 P(gate)。若先占门再等名额,馆满时入馆者持有 gate 阻塞;馆内参观者又必须取得 gate 才能出门、释放名额,会死锁。先等名额的人不占门,出口可持续供馆内的人使用。归还名额应在实际离开后,不能提前允许新参观者进入。

进入练习

第 46 题

操作系统
8 分

某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节。请回答下列问题。

1)若使用一级页表的分页存储管理方式,逻辑地址结构如下:

页号(20位) 页内偏移量(12位)

则页的大小是多少字节?页表最大占用多少字节?

2)若使用二级页表的分页存储管理方式,逻辑地址结构如下:

页目录号(10位) 页表索引(10位) 页内偏移量(12)

设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。

3)采用1)中的分页存储管理方式,一个代码段起始逻辑地址为0000 8000H,其长度为8KB,被装载到从物理地址0090 0000H开始的连续主存空间中。页表从主存0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增)。请计算出该代码段对应的两个页表项的物理地址、这两个页表项中的页框号以及代码页面2的起始物理地址。

第 46 题图 1
第 46 题图 2
第 46 题图 3
查看答案与解析收起答案与解析

**(1)页面和页表大小。**按字节编址,12 位页内偏移表示 212=40962^{12}=4096 个字节位置,所以页大小为 4096 B=4 KB。20 位页号表示最多 2202^{20} 个逻辑页,每页一个 4 B 页表项,完整一级页表最大为 220×4=222=41943042^{20}\times4=2^{22}=4194304 B=4 MB。页表项大小和页面大小是不同参数。

**(2)提取字段。**32 位 LA 的位 31~22 是页目录号,21~12 是页表索引,11~0 是页内偏移。使用无符号 32 位 LA:

c 复制代码
unsigned directory = (LA >> 22) & 0x3FFu;
unsigned index = (LA >> 12) & 0x3FFu;

0x3FF 的低 10 位为 1,保留所需字段。尤其 index 在右移 12 位后还夹带目录号,不能省掉掩码。数学表达式分别为 ⌊LA/222⌋\lfloor LA/2^{22}\rfloor 与 ⌊LA/212⌋ mod 210\lfloor LA/2^{12}\rfloor\bmod2^{10}。

**(3)两页映射。**代码起点 00008000H 页对齐,8 KB 恰占两页;逻辑页号是 8000H/1000H=88000\mathrm H/1000\mathrm H=8 及 9。第 p 项地址为“页表基址+p×4”,页框号为页面物理起点除以 1000H。

代码页 逻辑页号 页表项物理地址 页框号 页面物理起点
1 8 00200000H+8×4=00200020H 00900H 00900000H
2 9 00200000H+9×4=00200024H 00901H 00901000H

第二页连续装载,故起点 00900000H+1000H=00901000H00900000\mathrm H+1000\mathrm H=00901000\mathrm H。表项存放地址、表项中的页框号、页框起始字节地址需分别计算,不能把 00200020H 当作代码页地址。

进入练习

第 47 题

计算机网络
9 分

假设Internet的两个自治系统构成的网络如题47图所示,自治系统ASI由路由器R1连接2个子网构成;自治系统AS2由路由器R2、R3互联并连接3个子网构成。各子网地址、R2的接口名、R1与R3的部分接口IP地址如题47图所示。

第 47 题图 1
第 47 题图 2

题47图 网络拓扑结构

请回答下列问题。

1)假设路由表结构如下表所示。请利用路由聚合技术,给出 R2 的路由表,要求包括到达题 47 图中所有子网的路由,且路由表中的路由项尽可能少。

目的网络 下一跳 接口

2)若R2收到一个目的IP地址为194.17.20.200的IP分组,R2会通过哪个接口转发该IP分组?

3)R1与R2之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?

查看答案与解析收起答案与解析

**(1)聚合与路由表。**AS1 的 153.14.5.0/25 和 153.14.5.128/25 覆盖同一 /24 的上下半区,且都经 R1,可精确合并为 153.14.5.0/24。R3 后面的 194.17.20.0/25 与 194.17.21.0/25 共同前缀为 /23:第三字节 20=00010100、21=00010101,共同前 7 位,加上前两字节的 16 位得到 23 位。

目的网络 下一跳 接口
153.14.5.0/24 153.14.3.2 S0
194.17.20.0/23 194.17.24.2 S1
194.17.20.128/25 直接交付 E0

/23 比两个远端 /25 的覆盖范围更大,还包含本地 194.17.20.128/25,因此本地直连项必须保留,由最长前缀匹配覆盖本地部分。按图中五个所标子网,三种转发方向至少分别需要一个有效路由项,上表三项即可。图中串行互连链路只给邻端地址、未给子网前缀,不另臆造其路由项。

**(2)转发接口。**194.17.20.200 落在本地 /25 的 194.17.20.128~194.17.20.255 范围,同时匹配 /23 汇总项。路由器选匹配位数最多的项,25>23,所以通过 E0 直接交付。不能因 /23 项列在表中较前就先选它,路由不是按任意列出次序匹配。

**(3)协议及封装。**R1 属于 AS1,R2 属于 AS2,跨自治系统交换路由使用 BGP/BGP-4,该外部会话为 eBGP。BGP 报文封装在 TCP 段内,经可靠 TCP 连接传输,TCP 段再由 IP 承载。题问承载 BGP 报文的协议,应答 TCP;RIP、OSPF 属于自治系统内部常用协议,不适合这条跨 AS 会话。

进入练习