当前位置: 首页 > news >正文

408真题笔记

2024 年全国硕士研究生招生考试

计算机科学与技术学科联考

计算机学科专业基础综合

(科目代码:408)

                    

一、单项选择题

第 01~40 小题,每小题 2 分,共 80 分。下列每小题给出的四个选项中,只有一个选项是最符合题目要求的。

01.已知带头结点的非空单链表 L 的头指针为 h,结点结构为 [data|next],其中 next 是指向直接后继结点的指针。现有指针 p 和 q,若 p 指向 L 中非首且非尾的任意一个结点,则执行语句序列 “q = p->next; p->next = q->next; q->next = h->next; h->next = q;” 的结果是( )。

A. 在 p 所指结点后插入 q 所指结点

B. 在 q 所指结点后插入 p 所指结点

C. 将 p 所指结点移动到 L 的头结点之后

D. 将 q 所指结点移动到 L 的头结点之后

01.D。【解析】【王道书 2.3 节】
        假设单链表 L 的初始状态如图①所示。执行q=p−>next后的状态如图②所示,q 指向 p 的后继结点。执行p−>next=q−>next后的状态如图③所示,结点 p 的 next 指向 q 的后继结点。执行q−>next=h−>next后的状态如图④所示,结点 q 的 next 指向 h 的后继结点。执行h−>next=q后的状态如图⑤所示,q 所指结点移动到了 L 的头结点 h 之后,选项 D 正确。

2.与表达式 x + y*(z - u)/v 等价的后缀表达式是( )。

A. xyzu-*v/+

B. xyzu-/*v+

C. +x/*y-zuv

D. +*xy/-zuv

2.A。【解析】【王道书 3.3 节】
        根据中缀表达式画出对应的二叉树如右图所示,对该二叉树进行后序遍历即可得到后缀表达式为xyzu−*v/+。本题也可采用王道书中描述的手算方法。

3.若 p、q 和 v 均为二叉树 T 中的结点,v 有两个孩子结点,T 的中序遍历序列形如 “…,p,v,q,…”,则下列叙述中,正确的是( )。

A. p 没有右孩子,q 没有左孩子

B. p 没有右孩子,q 有左孩子

C. p 有右孩子,q 没有左孩子

D. p 有右孩子,q 有左孩子

3.A。【解析】【王道书 5.3 节】
根据中序遍历的特点,v 有左右子树,以 v 为根的子树的中序序列为:v 的左子树的中序序列,v,v 的右子树的中序序列。又由于 T 的中序序列为 “…, p, v, q, …”,可知 p 属于 v 的左子树,q 属于 v 的右子树。在 v 的左子树的中序序列中:假设 p 有右孩子,则 p 的右孩子在中序序列中应在 p 之后,与 p 是最后一个遍历结点矛盾,因此 p 不存在右孩子。在 v 的右子树的中序序列中:假设 q 存在左孩子,则 q 的左孩子在中序序列中应在 q 之前,与 q 是第一个遍历结点矛盾,因此 q 不存在左孩子。

4.若无向图 G = (V, E) 的邻接多重表如下图所示,则 G 中顶点 b 与 d 的度分别是( )。

A. 0,2        B. 2,4        C. 2,5        D. 3,4

4.B。【解析】【王道书 6.2 节】
在邻接多重表中,统计一个结点的入度、出度或度数(入度 + 出度)时,只需考虑所有的边结点。下图是邻接多重表的边结点的结构:

ivex

ilink

jvex

jlink

info

其中,ivex 表示弧头的编号,ilink 域指向下一个弧头相同的边结点,jvex 表示弧尾的编号,jlink 域指向下一个弧尾相同的边结点。根据定义可知:求 x 号结点的入度时,只需统计 jvex 域等于 x 的边结点个数;求 x 号结点的出度时,只需统计 ivex 域等于 x 的边结点个数;x 号结点的度数为入度和出度之和。顶点 b 的编号为 1,统计可知:入度为 1,出度为 1,度数为 2。顶点 d 的编号为 3,统计可知:入度为 1,出度为 3,度数为 4。

5.下列数据结构中,不适合直接使用折半查找的是( )。

I. 有序链表

II. 无序数组

III. 有序静态链表

IV. 无序静态链表

A. 仅 I、III

B. 仅 II、IV

C. 仅 II、III、IV

D. I、II、III、IV

5.D。【解析】【王道书 7.2 节】
折半查找必须满足 2 个条件:①数组(或顺序表),折半查找的上一次查找和本次查找可能相隔很远的距离,如依次查找下标为n/2,n/4,n/8,⋯的元素,若采用链表(或静态链表),则会使得时间复杂度非常高。②有序,只有在有序的情况下才能根据上一次的比较情况舍弃一半的序列。

6.KMP 算法使用修正后的 next 数组进行模式匹配,模式串 S = "aabaab",当主串中某字符与 S 中某字符失配时,S 将向右滑动的最长距离是( )。

A. 5

B. 4

C. 3

D. 2

6.A。【解析】【王道书 4.2 节】
假设位序从 0 开始的,计算出 nextval 数组。当比较到 S [j] 失配时,模式串向右滑动的距离为j−nextval[j](0≤j≤5),由下图可知,当j=4时向右滑动的距离最长,此时距离为 5。

j

0

1

2

3

4

5

S[j]

a

a

b

a

a

b

next[j]

-1

0

1

0

1

2

nextval[j]

-1

-1

1

-1

-1

1

j−nextval[j]

1

2

1

4

5

4

7.一棵二叉搜索树如下图所示,k1、k2、k3 分别是对应结点中保存的关键字。子树 T 的任一结点中保存的关键字 x 满足的是( )。

A. x < k1

B. x > k2

C. k1 < x < k3

D. k3 < x < k2

7.D。【解析】【王道书 7.3 节】
在二叉搜索树中,每个结点的左子树中的所有关键字都小于该结点的关键字,右子树中的所有关键字都大于该结点的关键字。k2​、k3​所在结点都在k1​所在结点的右子树中,因此k2​>k1​、k3​>k1​;k3​所在结点在k2​所在结点的左子树中,因此k3​<k2​;子树 T 是k3​所在结点的右子树,因此子树 T 中任意结点的关键字 x 满足x>k3​。综合可得,k3​<x<k2​。

8.使用快速排序算法对含 n(n≥3)个元素的数组 M 进行排序,若第一趟排序将 M 中除枢轴外的 n - 1 个元素划分为均不为空的 P 和 Q 两块,则下列叙述中,正确的是( )。

A. P 与 Q 块间有序

B. P 与 Q 均块内有序

C. P 和 Q 的元素个数大致相等

D. P 中和 Q 中均不存在相等的元素

8.A。【解析】【王道书 8.3 节】
依题意,对数组 M 进行第一趟快速排序后,会将 M 划分为三部分:小于枢轴值的块 P,枢轴元素,大于枢轴值的块 Q。P 和 Q 块内都是无序的,但是 P 块内的数据≤枢轴值,Q 块内的数据≥枢轴值,因此 P 块内的数据≤Q 块内的数据,即 P 与 Q 块间有序。

9.已知关键字序列 28, 22, 20, 19, 8, 12, 15, 5 是大根堆(最大堆),对该堆进行两次删除操作后,得到的新堆是( )。

A. 20, 19, 15, 12, 8, 5

B. 20, 19, 15, 5, 8, 12

C. 20, 19, 12, 15, 8, 5

D. 20, 19, 8, 12, 15, 5

9.B。【解析】【王道书 8.4 节】
该序列已调整成大根堆,接下来进行第一次删除操作:删除 28 后,将 5 放入堆顶;然后自上而下调整。22 和 20 比较,较大者 22 与 5 比较,交换;19 和 8 比较,较大者 19 与 5 比较,交换。

接下来进行第二次删除操作:删除 22 后,将 15 放入堆顶;然后自上而下调整。19 和 20 比较,较大者 20 与 15 比较,交换;15 直接与其仅有的左孩子 12 比较,不交换。

因此,进行两次删除操作后,得到的新堆是 20, 19, 15, 5, 8, 12。

10.现有由关键字组成的 3 个有序序列 (3, 5)、(7, 9) 和 (6),若按从左至右的次序选择有序序列进行二路归并排序,则关键字之间的总比较次数是( )。

A. 3

B. 4

C. 5

D. 6

10.C。【解析】【王道书 8.5 节】
        从左至右对这三个有序序列进行二路归并排序的过程如下:
①合并(3,5)和(7,9):比较 3 和 7(1 次),选择 3;比较 5 和 7(1 次),选择 5;剩余元素 7 和 9 直接加入。②合并(3,5,7,9)和(6):比较 3 和 6(1 次),选择 3;比较 5 和 6(1 次),选择 5;比较 7 和 6(1 次),选择 6;剩余元素 7 和 9 直接加入。总共比较 5 次。

11.在外排序中,利用败者树对初始为升序的归并段进行多路归并,败者树中记录 “冠军” 的结点保存的是( )。

A. 最大关键字

B. 最小关键字

C. 最大关键字所在的归并段号

D. 最小关键字所在的归并段号

11.D。【解析】【王道书 8.7 节】
        利用败者树归并升序归并段,每次需要得到当前的最小关键字,因此记录 “冠军” 的结点保存的只能是最小关键字或最小关键字所在的归并段号。通过败者树找出最小关键字后,还需要找到该关键字所在的归并段,并移动段内元素,以继续比较下一个元素,下面分别进行讨论:①假设记录 “冠军” 的结点保存的是最小关键字所在的归并段号,则能直接得到最小关键字及其所在的段,时间复杂度低。②假设记录 “冠军” 的结点保存的是最小关键字,则查找其所在的段需要检索所有段的首元素是否与该最小关键字相等,时间复杂度高。为了提高效率,记录 “冠军” 的结点保存的是最小关键字所在的归并段号,而不是最小关键字。

12.C 语言代码段如下,执行该代码段后,j 的值是( )。

A. -32777        B. -32759        C. 32759        D. 32777

12.B。【解析】【王道书 2.1 节】
2^15=32768,i=32768+9=8000H+9H=8009H,32 位有符号数 i 的机器数为 0000 8009H。将 32 位有符号数 i 强制转换为 16 位有符号数 si,直接保留机器数的末 16 位即可,因此 si 的机器数为 8009H,真值为−215+9=−32759。将 16 位有符号数 si 强制转换为 32 位有符号数 j,采用符号扩展(si 的符号为 1,因此高位补 1),j 的机器数变为 FFFF 8009H,对应的真值为 - 32759。

int i

short si

int j

机器数

0000 8009H

8009H

FFFF 8009H

真值

32777

-32759

-32759

13.通常情况下,将汇编语言程序中实现特定功能的指令序列定义成一条伪指令(pseudoinstruction)。下列选项中,CPU 能理解并直接执行的是( )。

I. 伪指令

II. 微指令

III. 机器指令

IV. 汇编指令

A. 仅 I、IV        B. 仅 II、III        C. 仅 III、IV        D. 仅 I、III、IV

13.B。【解析】【王道书 5.4 节】
        高级语言程序、汇编语言程序都需要通过翻译程序来处理,生成机器语言程序后,才能被 CPU 执行。机器指令能被 CPU 理解并直接执行。微指令是 CPU 控制单元用于实现机器指令的更低层次的指令。在微程序控制的 CPU 中,一条机器指令对应一个微程序,微程序是微指令的有序序列,用来控制 CPU 实现机器指令的过程,因此微指令也能被 CPU 理解并直接执行。

14.某科学实验中,需要使用大量的整型参数,为了在保证表数精度的基础上提高运算速度,需要选择合理的数据表示方法。若整型参数 α、β 的取值范围分别为 - 2²⁰~2²⁰、-2⁴⁰~2⁴⁰,则下列选项中,α、β 最适宜采用的数据表示方法是( )。

A. 32 位整数、32 位整数        B. 单精度浮点数、单精度浮点数

C. 32 位整数、双精度浮点数        D. 单精度浮点数、双精度浮点数

14.C。【解析】【王道书 2.3 节】
        表示整数时,相同位数的浮点型的精度不如整型,因此在能满足α、β的取值范围的前提下,应优先选择整型;否则才选择浮点型。32 位补码整数的表示范围为-2^31~2^31-1,满足α的取值范围,因此α应采用 32 位整数。而双精度浮点数的精度比单精度浮点数的更高,-2^40~2^40会超出单精度浮点数可表示的精度(由尾数位数 + 隐含位决定),因此β应采用双精度浮点数。

15.下列关于整数乘法运算的叙述中,错误的是( )。

A. 用阵列乘法器实现的乘运算可以在一个时钟周期内完成

B. 用 ALU 和移位器实现的乘运算无法在一个时钟周期内完成

C. 变量与常数的乘运算可编译优化为若干条移位及加 / 减运算指令

D. 两个变量的乘运算无法编译转换为移位及加法等指令的循环实现

15.D。【解析】【王道书 2.2 节】
        阵列乘法器中的所有部分积同时产生并组成一个阵列,运用多操作数相加就能得到最终的积,因此可以在一个时钟周期内完成。用 ALU 和移位器实现的乘运算通常采用串行的乘法算法,需要多个时钟周期才能完成。当一个乘数是常数时,编译器可将乘运算优化为若干移位和加 / 减运算指令。两个变量的乘运算可以通过移位和加法等指令循环实现,选项 D 错误。

16.对于页式虚拟存储管理系统,下列关于存储器层次结构的叙述中,错误的是( )。

A. Cache - 主存层次的交换单位为主存块,主存 - 外存层次的交换单位为页

B. Cache - 主存层次替换算法由硬件实现,主存 - 外存层次替换算法由软件实现

C. Cache - 主存层次可采用回写法写策略,主存 - 外存层次通常采用回写法写策略

D. Cache - 主存层次可采用直接映射方式,主存 - 外存层次通常采用直接映射方式

16.D。【解析】【王道书 3.6 节】
        Cache 与主存之间交换的是主存块,主存与外存之间交换的是页。Cache - 主存层次和主存 - 外存层次的区别在于前者主要解决速度不匹配的问题,若用软件实现会影响速度,因此 Cache - 主存层次替换算法由硬件实现;而主存 - 外存层次替换算法由软件实现。Cache - 主存层次可采用回写法或全写法;主存 - 外存层次通常采用回写法,即页面被修改后,仅当被换出时才写回外存,访问外存的代价很大,采用全写法的开销过高。由于访问外存的代价很大,提高命中率是关键,因此主存 - 外存层次通常采用全相联映射;而 Cache - 主存层次可采用直接映射、组相联或全相联,选项 D 错误。

17.某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址为 32 位,主存地址为 30 位,页大小为 1KB。若 TLB 共有 32 个表项,采用 4 路组相联映射方式,则 TLB 表项中标记字段的位数至少是( )。

A. 17

B. 18

C. 19

D. 20

17.C。【解析】【王道书 3.6 节】
        按字节编址,页大小为2^10B,故页内地址占 10 位;TLB 有 32 个表项,采用 4 路组相联映射,被分为2^3=8组,故 TLB 组号占 3 位;因此,标记字段的位数至少是32−3−10=19。

18.下列事件中,不是在 MMU 地址转换过程中检测的是( )。

A. 访问越权

B. Cache 缺失

C. 页面缺失

D. TLB 缺失

18.B。【解析】【王道书 3.6 节】
        MMU 负责虚拟地址到物理地址的转换。在地址转换的过程中,MMU 会检查页表项的访问权限,以确保进程有权访问某个页面,否则是访问越权。为了获得对应的页表项,先查找 TLB,若找不到,则 TLB 缺失,然后查找页表,若找不到,则页面缺失。访问 Cache 是在获得物理地址之后使用物理地址存取数据的过程中才执行的操作,而 MMU 地址转换过程是在获得物理地址之前进行的,选项 B 错误。

19.对于采用 “取指、译码 / 取数、执行、访存、写回”5 段流水线的 RISC 数据通路,下列关于指令流水线数据冒险处理的叙述中,错误的是( )。

A. 相邻两条指令的操作数相关可能引起数据冒险

B. 在数据相关的指令间插入 “气泡” 能避免数据冒险

C. 所有数据冒险都可以通过加入转发(旁路)电路解决

D. 所有数据冒险都能通过调整指令顺序和插入 nop 指令解决

19.C。【解析】【王道书 5.6 节】
        对于 load - use 数据冒险,即后一条指令 y 需要使用前一条访存指令 x 从主存中取出的数据,由于指令 y 中所需数据在指令 x 的访存阶段(MEM)结束时才可使用,即使有转发电路,指令 y 在执行阶段也无法获得所需的数据,只能通过插入 nop 指令或调整指令顺序解决。

20.某存储器总线的时钟频率为 420MHz,总线宽度为 64 位,每个时钟周期传送 2 次数据;其总线事务支持突发传送方式,最多传送 8 次数据,第 1 个时钟周期传送地址和读 / 写命令,从第 4 个至第 7 个时钟周期连续传送 8 次数据。该总线的总线带宽(最大数据传输率)为( )。

A. 3.84GB/s

B. 6.72GB/s

C. 30.72GB/s

D. 53.76GB/s

20.B。【解析】【王道书 6.1 节】
        总线带宽(最大数据传输率)是理想情况(所有总线周期都在传送数据)下,不需考虑每个总线事务的具体情况,而计算(平均)数据传输率才需考虑每个总线事务的具体情况。因此题中 “其总线事务支持…… 连续传送 8 次数据。” 这句话属于干扰条件。根据定义,总线带宽 = 总线宽度 × 总线时钟频率 × 每个时钟周期传送的数据数

=64bit×420MHz×2=6.72GB/s。

21.下列关于中断 I/O 方式的叙述中,错误的是( )。

A. 中断屏蔽字用于确定中断响应的优先级

B. 保存断点和程序状态字在中断响应阶段完成

C. 保存通用寄存器和设置新中断屏蔽字由软件实现

D. 单重中断方式下中断处理时 CPU 处于关中断状态

21.A。【解析】【王道书 7.3 节】
        中断优先级包括响应优先级和处理优先级。响应优先级由硬件线路或查询程序的查询顺序确定,不可动态改变;处理优先级由中断屏蔽字确定,可灵活改变。

22.DMA 控制 I/O 方式下,设备的输入 / 输出由 DMA 控制器控制完成,此时,DMA 控制器控制的数据传输通路位于( )。

A. CPU 和主存之间

B. CPU 和 DMA 控制器之间

C. 设备接口和主存之间

D. 设备接口和 DMA 控制器之间

22.C。【解析】【王道书 7.3 节】
        DMA 的传送过程:①预处理:CPU 完成一些必要的准备工作,由 DMA 控制器向 CPU 发总线请求。②数据传送:DMA 控制器接管总线后,在设备接口和主存之间进行数据传送,此阶段由 DMA 控制器控制。③后处理:传送结束后,DMA 控制器向 CPU 发送中断信号,做结束处理。

23.下列关于中断、异常和系统调用的叙述中,错误的是( )。

A. 中断异常发生时,CPU 处于内核态

B. 每个系统调用都有对应的内核服务例程

C. 中断处理程序开始执行时,CPU 处于内核态

D. 系统添加新类型设备时,需注册相应的中断服务例程

23.A。【解析】【王道书 1.3 节】
        当中断或异常发生时,CPU 既可能处于内核态,又可能处于用户态,具体取决于当时 CPU 正在处理的任务,选项 A 错误。不同的系统调用都对应不同的内核服务例程,选项 B 正确。在中断响应阶段,若 CPU 处于用户态,则需要切换到内核态,因此在中断处理阶段,CPU 一定处于内核态,选项 C 正确。设备种类非常繁多,计算机不可能事先准备好所有设备对应的中断服务例程(实际上属于设备驱动程序),因此系统添加新类型设备时,需注册相应的中断服务例程。

24.下列选项中,操作系统在终止进程时不一定执行的是( )。

A. 终止子进程

B. 回收进程占用的设备

C. 释放进程控制块

D. 回收为进程分配的内存

24.A。【解析】【王道书 2.1 节】
        当操作系统终止进程时,所有的进程资源,如内存空间、进程控制块、设备、打开文件、I/O 缓冲区等,都会被释放。有些系统不允许子进程在父进程已终止的情况下存在,对于这类系统,如果一个进程终止,那么它的所有子进程也应终止,这种现象称为级联终止。但不是所有操作系统都是这么设计的,因此终止子进程不一定会在终止进程时执行。

25.在支持页式存储管理的系统中,进程切换时操作系统需要执行的操作是( )。

I. 更新程序计数器的值 II. 更新栈基址寄存器的值 III. 更新页表基地址寄存器的值

A. 仅 III

B. 仅 I、II

C. 仅 I、III

D. I、II、III

25.D。【解析】【王道书 2.2 节】
        发生进程切换时,需要进行上下文切换,主要完成:①将当前 CPU 中各个寄存器的内容保存到当前进程 PCB 中。②将新进程的现场信息装入 CPU 的各个寄存器。③将控制转至新进程执行,即更新程序计数器 PC 的值。栈基址寄存器是用来指明系统内核栈位置的寄存器,页表基址寄存器是用来指明当前进程顶级页表基地址的寄存器,属于进程控制信息。因此 I、II、III 均需要更新。

26.文件系统需占用部分外存空间记录空闲块位置。下列方法中,占用外存空间的大小与当前空闲块数量无关的是( )。

A. 位图法

B. 空闲表法

C. 成组链接法

D. 空闲链表法

26.A。【解析】【王道书 4.3 节】
        位图法利用二进制的 1 个位来表示磁盘中一个盘块的使用情况,磁盘上的所有盘块都有一个二进制位与之对应。当其值为 “0” 时,表示对应的盘块空闲;当其值为 “1” 时,表示已分配。位图所占空间的大小只取决于外存空间的总大小(盘块数量),而与当前空闲块数量无关。

27.下列算法中,每次回收分区时仅合并大小相等的空闲分区的是( )。

A. 伙伴算法

B. 最佳适应算法

C. 最坏适应算法

D. 首次适应算法

27.A。【解析】【王道书 3.1 节】
        伙伴算法的一次回收过程可能要进行多次合并,如回收大小为2i的空闲分区时,若之前已存在2^i的空闲分区(这两个分区称为一对伙伴),则将其与伙伴分区合并为大小为2^i+1的空闲分区;合并后,若还存在2^i+1的空闲分区,则继续与其伙伴分区合并为大小为2^i+2的空闲分区,以此类推。综上所述,伙伴算法每次回收分区时仅合并大小相等的空闲分区,选项 A 正确。

28.若进程 P 中的线程 T 先打开文件,得到文件描述符 fd,再创建两个线程 Ta 和 Tb,则下列资源中,Ta 与 Tb 可共享的是( )。

I. 进程 P 的地址空间 II. 线程 T 的栈 III. 文件描述符 fd

A. 仅 I

B. 仅 I、III

C. 仅 II、III

D. I、II、III

28.B。【解析】【王道书 2.1 节】
        线程可理解为轻量级进程,仅拥有一点必不可少、能保证独立运行的资源。例如,在每个线程中都有一个用于控制线程运行的线程控制块(TCB)、用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。因此,线程 T 的栈空间是线程 T 所独有的,不会被线程 Ta 和 Tb 共享。多个线程共享所属进程所拥有的资源,进程 P 的线程可以访问进程 P 的全部地址空间和资源,如已打开的文件、定时器、信号量机构等,以及它申请到的 I/O 设备等。综上所述,Ta 和 Tb 共享的是进程 P 的地址空间和文件描述符 fd。

29.下列系统调用的实现中,包含文件按名查找功能的是( )。

A. open ()

B. read ()

C. write ()

D. close ()

29.A。【解析】【王道书 4.1 节】
        当用户首次对某文件发出操作请求时,需要先用系统调用 open () 将该文件打开。所谓 “打开”,是指系统利用文件名检索到指定文件的目录项,将文件的属性(包括该文件在外存中的物理位置)从外存复制到内存的打开文件表的一个表目中,并给用户返回一个文件描述符 fd。此后(只要文件未被关闭),用户对该文件的所有操作都是通过文件描述符 fd 来进行的。

30.假设某系统使用时间片轮转调度算法进行 CPU 调度,时间片大小为 5ms,系统共有 10 个进程,初始时均处于就绪队列,执行结束前仅处于执行态或就绪态。若队尾的进程 P 所需 CPU 时间最短,时间均为 25ms,在不考虑系统开销的情况下,则进程 P 的周转时间为( )。

A. 200ms

B. 205ms

C. 250ms

D. 295ms

30.C。【解析】【王道书 2.2 节】
        系统使用时间片轮转调度算法,初始时共有 10 个进程处于就绪队列,进程 P 处于队尾,时间片大小为 5ms。假设t=0时开始进程调度,就绪队列的前 9 个进程依次运行一个时间片,则t=45ms时调度进程 P 运行,运行 5ms 后,在t=50ms时又开始新一轮循环。进程 P 所需的 CPU 时间为 25ms,共需 5 轮循环,由于其他进程所需的 CPU 时间都比进程 P 的要长,因此这 5 轮循环中其余 9 个进程都不会运行结束,因此进程 P 的周转时间为50×5=250ms。

31.键盘中断服务例程执行结束时,所输入数据的存放位置是( )。

A. 用户缓冲区

B. CPU 中的通用寄存器

C. 内核缓冲区

D. 键盘控制器的数据寄存器

31.C。【解析】【王道书 5.2 节】
        以 C 语言中 scanf () 函数的执行过程为例,用户请求通过键盘输入数据,当程序执行到 scanf () 时,会触发系统调用,CPU 切换到内核态,执行系统调用服务例程,系统调用的内核程序会进行一些初始化操作,启动外设并同时阻塞该用户进程,直到键盘输入数据,键盘中断服务例程(实际上是驱动程序)会将数据从 I/O 接口(键盘控制器)中的数据寄存器取出并送至内核缓冲区,然后唤醒用户进程,用户进程被唤醒后进入就绪队列,等得到 CPU 运行后,再将内核缓冲区中的数据送至用户缓冲区,最后进行系统调用的返回。综上所述,键盘中断服务例程执行结束后,所输入数据的存放位置是内核缓冲区,系统调用结束时,所输入数据才被送至用户缓冲区。

32.某磁盘的磁道数为 400(磁道号为 0~399),采用循环扫描算法(CSCAN)进行磁盘调度,完成对 200 号磁道的请求后,磁头向磁道号减小的方向移动。若还有 7 个磁盘请求,对应的磁道号分别为 300, 120, 110, 0, 160, 210, 399,则完成上述磁盘访问请求后磁头移动的距离是( )。

A. 599

B. 619

C. 788

D. 799

32.C。【解析】【王道书 5.3 节】
        采用 CSCAN 算法进行磁盘调度,完成 200 号磁道的请求后,磁头向磁道号减小的方向移动,依次处理 160, 120, 110, 0 号磁道的请求;然后,磁头向磁道号增大的方向快速移动至 399 号磁道,在快速移动的过程中不处理任何请求;完成 399 号磁道的请求后,依次处理 300, 210 号磁道的请求,故磁头移动的总距离是(200−0)+(399−0)+(399−210)=788。调度过程如下图所示。

33.若某分组交换网络及每段链路的带宽如下图所示,则 H1 到 H2 的最大吞吐量约为( )。

A. 1Mb/s

B. 10Mb/s

C. 100Mb/s

D. 1000Mb/s

33.B。【解析】【王道书 1.1 节】
        从 H1 发出的数据共有三条路径可到达 H2,假设每个数据段等长且等于 10Mb,现分析数据全部从 100Mb/s 和 1Mb/s 链路通过的吞吐量,数据全部从 1000Mb/s 链路通过的情况和 100Mb/s 链路的类似,不做单独分析。假设数据全部从 100Mb/s 链路通过,前两个路由器的转发时延都是10Mb÷100Mb/s=0.1s,第三个路由器的转发时延为 1s,H2 每隔 1s 收到一个 10Mb 的数据段,吞吐量约为 10Mb/s。假设数据全部从 1Mb/s 链路通过,则第一个路由器的转发时延为10Mb÷1Mb/s=10s,第三个路由器的转发时延为10Mb÷10Mb/s=1s,H2 每隔 10s 收到一个 10Mb 的数据段,吞吐量约为 1Mb/s。因此,H1 到 H2 的最大吞吐量约为 10Mb/s,选项 B 正确。综上所述,可得出结论:一条由多段链路组成的信道,其带宽(最大数据传输率)取决于带宽最小的那段链路。

34.在下列二进制数字调制方法中,需要 2 个不同频率载波的是( )。

A. ASK

B. PSK

C. FSK

D. DPSK

34.C。【解析】【王道书 2.1 节】
        FSK 通过改变载波的频率来表示数字信号 0 和 1,即用两个不同的频率分别表示 0 和 1,这种调制方法通过改变载波的频率来编码数字信息,而不需要改变载波的幅度或相位,选项 C 正确。ASK 通过改变载波的幅度来表示 0 和 1。PSK 通过改变载波的相位来表示 0 和 1。DPSK 与 PSK 不同,DPSK 是通过检测当前码元与前一码元的载波相位差来传输数字信息的。

35.如下图所示的支持 VLAN 划分的交换机,已按端口划分了 3 个 VLAN,部分端口连接主机的 IP 地址和 MAC 地址如图所示,ARP 表结构为 <IP 地址,MAC 地址,TTL>。下列选项中,不会出现在 H4 的 ARP 表中的是( )。

A. 192.168.3.81, 00-18-A2-3B-36-21, 14:32:00

B. 192.168.3.91, 00-3E-C2-39-12-B5, 14:37:00

C. 192.168.3.125, 00-E5-78-4A-09-B2, 14:45:00

D. 192.168.3.129, 00-08-6E-05-A7-82, 14:52:00

35.D。【解析】【王道书 4.2 节】
        ARP 用于解决局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。因此 H4 的 ARP 表中只有和 H4 处于同一虚拟局域网上的主机的 IP 地址和 MAC 地址的映射,H4 位于 VLAN1,H6 位于 VLAN3,因此选项 D 表示的 H6 的 IP 地址与 MAC 地址的映射不应出现在 H4 的 ARP 表中。

36.在采用 CSMA/CA 的 802.11 无线局域网中,DIFS = 128μs,SIFS = 2μs,RTS、CTS 和 ACK 帧的传输时延分别是 3μs、2μs 和 2μs,忽略信号传播时延。若主机 A 欲向 AP 发送一个总长度为 1998B 的数据帧,无线链路带宽为 54Mb/s,则隐藏站 B 收到 AP 发送的 CTS 帧时,设置的网络分配向量 NAV 的值是( )。

A. 326μs

B. 354μs

C. 385μs

D. 513μs

36.B。【解析】【王道书 3.5 节】
        数据帧的长度为 1998B,链路带宽为 54Mb/s,因此数据帧的发送时延为1998B÷54Mb/s=296μs。网络分配向量(NAV)指出了信道忙的持续时间,其含义是 “正在通信的两个站点以外的站点都不能在这段时间发送数据” 。CSMA/CA 协议中的 RTS 帧、CTS 帧和数据帧都会携带占用信道的持续时间,当 A 广播一个 RTS 帧时,将占用信道的持续时间(SIFS + CTS + SIFS + DATA + SIFS + ACK)写入 RTS 帧的首部;当 AP 收到 RTS 帧后,会广播一个 CTS 帧,将占用信道的持续时间(SIFS + DATA + SIFS + ACK)写入 CTS 帧的首部;之后传送的数据帧的首部也会携带本次通信所需的持续时间。其他站收到这些帧后,根据帧中的持续时间设置自己的 NAV 值,因此隐蔽站 B 收到 AP 发送的 CTS 帧时,设置自己的 NAV 值为 SIFS + DATA + SIFS + ACK =28μs+296μs+28μs+2μs=354μs。

37.主机甲通过选择重传(SR)滑动窗口协议向主机乙发送帧的部分过程如右图所示,Fx​为数据帧,ACKx​为确认帧,x是位数为 3 比特的序号。乙只对正确接收的数据帧进行独立确认,发送窗口与接收窗口大小相同且均为最大值。甲在t1​时刻和t2​时刻发送的数据帧分别是( )。
A. F1​,F3​
B. F1​,F4​
C. F3​,F1​
D. F4​,F1​

37.D。【解析】【王道书 3.4 节】
        数据帧编号的范围是 0~7,发送窗口与接收窗口大小相等且均为最大值,因此,发送窗口大小 = 接收窗口大小=2^3−1=4。甲发送了 F0, F1, F2, F3 四个数据帧后,收到了 F0 的确认,因此在t1​时刻,发送窗口向右滑动,可以继续发送 F4,之后收到 F2 的确认,但由于 F1 丢失,甲无法收到 F1 的确认,发送窗口无法继续向右滑动,直到t2​时刻,F1 超时,重传 F1,选项 D 正确。

38.假设主机 H 通过 TCP 向服务器发送长度为 3000B 的报文,往返时间 RTT = 10ms,最长报文段寿命 MSL = 30s,最大报文段长度 MSS = 1000B,忽略 TCP 段的传输时延,报文传输结束后 H 首先请求断开连接,则从 H 请求建立 TCP 连接时刻起,到 H 进入 CLOSED 状态为止,所需的时间至少是( )。

A. 30.03s

B. 30.04s

C. 60.03s

D. 60.04s

38.D。【解析】【王道书 5.3 节】
        建立 TCP 连接的前两次握手需要 1 个 RTT,第三次握手的报文段可以携带 MSS = 1000B 的数据,H 收到该报文段的确认后,发送窗口增大到 2000B,因此第三个 RTT 可以发送 2000B 的数据,经过 3 个 RTT 后,3000B 的报文传输结束。第四个 RTT 开始时,H 向服务器发送 FIN 报文段请求断开连接,题目问的是最少时间,因此服务器收到 FIN 请求后不再发送数据,即服务器同时发出连接释放 ACK 报文段和 FIN 报文段。H 收到服务器发来的 FIN 报文段后开启时间等待计时器,等待 2MSL 的时间(60s),进入 CLOSED 状态,总时间为40ms+60s=60.04s。

39.若 UDP 协议在计算校验和过程中,计算得到中间结果为 1011 1001 1011 0110 时,还需要加上最后一个 16 位数 0110 0101 1100 0101,则最终计算得到的校验和是( )。

A. 0001 1111 0111 1011

B. 0001 1111 0111 1100

C. 1110 0000 1000 0011

D. 1110 0000 1000 0100

39.C。【解析】【王道书 5.2 节】
        UDP 校验和的计算方法是二进制反码求和再取反,二进制反码求和的运算规则如下:①从低位到高位逐列进行计算,0 和 0 相加是 0,0 和 1 相加是 1,1 和 1 相加是 0 并产生进位 1;②若最高位相加后产生进位,则最后得到的结果要在最低位加 1,该过程也称回卷。计算过程如下:

40.若浏览器不支持并行 TCP 连接,使用非持久的 HTTP/1.0 协议请求浏览 1 个 Web 页,该页中引用同一网站上的 7 个小图像文件,则从浏览器为传输 Web 页请求建立 TCP 连接开始,到接收完所有内容为止,所需要的往返时间 RTT 数至少是( )。

A. 4

B. 9

C. 14

D. 16

40.D。【解析】【王道书 6.5 节】
        浏览器不支持并行 TCP 连接,使用非持续的 HTTP/1.0 协议,因此每传输一个 Web 页和小图像文件都要建立一次 TCP 连接。第一次建立 TCP 连接时,前两次握手花 1 个 RTT,第三次握手报文段中可以携带 HTTP 请求,服务器收到请求后返回 Web 页,共花 2 个 RTT。之后每传输一个图像文件都要花 2 个 RTT。因此,到接收完所有内容,需要的总时间至少是2×8=16个 RTT。注意,若浏览器支持并行 TCP 连接,则请求 Web 页仍花 2 个 RTT,但收到 Web 页后,可建立 7 个并行的 TCP 连接请求图像文件,传输图像的过程仅花 2 个 RTT,总时间为 4 个 RTT。

二、综合应用题

第 41~47 小题,共 70 分。

41.(13 分)2023 年 10 月 26 日,神舟十七号载人飞船发射取得圆满成功,再次彰显了中国航天事业的辉煌成就。载人航天工程是包含众多子工程的复杂系统工程,为了保证工程的有序开展,需要明确各子工程的前导子工程,以协调各子工程的实施。该问题可以简化、抽象为有向图的拓扑序列问题。已知有向图 G 采用邻接矩阵存储,类型定义如下。

请设计算法:int uniquely (MGraph G),判定 G 是否存在唯一的拓扑序列,若是,返回 1,否则返回 0。要求如下。

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

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

41.【王道书 6.4 节】

1)【标准答案】
算法的基本设计思想:
建立图 G 各顶点的入度表 degree []。
选择入度为 0 的顶点 v,将 v 的所有邻接点的入度减 1,重复执行这个过程。若每次选中的入度为 0 的顶点有且仅有一个,且共进行了 G.numVertices 次,则意味着存在唯一的拓扑序列,返回 1,否则不存在拓扑序列,或者存在多个拓扑序列,返回 0。
2)【标准答案】
用 C 语言描述的算法如下:

int uniquely(MGraph G) {//判定有向图是否存在唯一的拓扑序列int *degree,i,j,count=0,in0=-1,prev_in0;degree=(int*)malloc(G.numVertices*sizeof(int));for(j=0;j<G.numVertices;j++){//计算各顶点的入度degree[j]=0;for(i=0;i<G.numVertices;i++)degree[j]+=G.Edge[i][j];if(degree[j]==0){if(in0==-1) in0=j;     //入度为0的顶点else in0=-2;          //有多个入度为0的顶点}}while(in0>=0){count++;prev_in0=in0;in0=-1;for(j=0;j<G.numVertices;j++)if(G.Edge[prev_in0][j]>0){if(--degree[j]==0){  //邻接点入度值减1if(in0==-1) in0=j; //入度为0的顶点else in0=-2;      //有多个入度为0的顶点}}}free(degree);if(count==G.numVertices) return 1;else return 0;
}

42.(10 分)将关键字序列 20, 3, 11, 18, 9, 14, 7 依次存储到初始为空、长度为 11 的散列表 HT 中,散列函数 H (key) = (key×3)%11。H (key) 计算出的初始散列地址为 H0,发生冲突时探查地址序列是 H1,H2,H3,… ,其中,Hk = (H0 + k^2)%11,k = 1, 2, 3, … 。请回答下列问题。
1)画出所构造的 HT,并计算 HT 的装填因子。
2)给出在 HT 中查找关键字 14 的关键字比较序列。
3)在 HT 中查找关键字 8,确认查找失败时的散列地址是多少?

42.【王道书 7.5 节】
1)【标准答案】
散列表(HT)如下。

装填因子α=7/11。
【分析】
①H(20)=5,装入地址 5;②H(3)=9,装入地址 9;③H(11)=0,装入地址 0;④H(18)=10,装入地址 10;⑤H(9)=5,冲突,H1​(9)=(5+1)%11=6,装入地址 6;⑥H(14)=9,冲突,H1​(14)=(9+1)%11=10,冲突,H2​(14)=(9+4)%11=2,装入地址 2。
2)【标准答案】
查找关键字 14 的关键字比较序列:3, 18, 14。
【分析】
H(14)=9,和关键字 3 比较,不命中;H1​(14)=(9+1)%11=10,和关键字 18 比较,不命中;H2​(14)=(9+4)%11=2,和关键字 14 比较,命中。
3)【标准答案】
查找关键字 8,确认查找失败时的散列地址是 7。
【分析】
H(8)=2,和关键字 14 比较,不命中;H1​(8)=(2+1)%11=3,和关键字 7 比较,不命中;H2​(8)=(2+4)%11=6,和关键字 9 比较,不命中;H3​(8)=(2+9)%11=0,和关键字 11 比较,不命中;H4​(8)=(2+16)%11=7,是空位置,确认查找失败。

43.(13 分)假定计算机 M 字长为 32 位,按字节编址,采用 32 位定长指令字,指令 add、slli 和 lw 的格式和编码和功能说明如下图 (a) 所示。

其中,R [x] 表示通用寄存器 x 的内容,M [x] 表示地址为 x 的存储单元内容,shamt 为移位位数,imm 为补码表示的偏移量。图 (b) 给出了计算机 M 的部分数据通路及其控制信号(用带箭头虚线表示),其中,A 和 B 分别表示从通用寄存器 rs1 和 rs2 中读出的内容;IR [31:20] 表示指令寄存器中的高 12 位;控制信号 Ext 为 0、1 时扩展器分别实现零扩展、符号扩展,ALUctr 为 000、001、010 时 ALU 分别实现加、减、逻辑左移运算。请回答下列问题。

1)计算机 M 最多有多少个通用寄存器?为什么 shamt 字段占 5 位?(2 分)

2)执行 add 指令时,控制信号 ALUBsrc 的取值应是什么?若 rs1 和 rs2 寄存器内容分别是 8765 4321H 和 9876 5432H,则 add 指令执行后,ALU 输出端 F、OF 和 CF 的结果分别是什么?若该 add 指令的操作数是无符号整数,则应根据哪个标志判断是否溢出?(5 分)

3)执行 slli 指令时,控制信号 Ext 的取值可以是 0 也可以是 1,为什么?(2 分)

4)执行 lw 指令时,控制信号 Ext、ALUCtr 的取值分别是什么?(2 分)

5)若一条指令的机器码是 A400 A103H,则该指令一定是 lw 指令,为什么?若执行该指令时,R [01H]=FFFF A2D0H,则所读取数据的存储地址是什么?(2 分)

43.【王道书 4.3 节】
1)【标准答案】
最多有2^5=32个通用寄存器。M 字长为 32 位,故通用寄存器宽度为 32 位,因此 shamt 字段占log2​32=5位。
2)【标准答案】
控制信号 ALUBsrc = 0。F=1FDB9753H;OF=1;CF=1;根据 CF 判断是否溢出。
【分析】
add 指令的两个源操作数均来自通用寄存器,因此多路选择器的控制信号 ALUBsrc = 0。rs1=87654321H,rs2=98765432H,则rs1+rs2=87654321H+98765432H=1FDB9753H,计算过程中,次高位向最高位的进位为 0,最高位产生的进位为 1,因此OF=0⊕1=1。add 做的是加法操作,sub=0,因此CF=0⊕1=1,无符号数根据 CF 标志位判断是否溢出。
3)【标准答案】
因为 slli 指令的移位位数只使用 IR [31:20] 中的低 5 位,与高位 IR [31:25] 及扩展出来的位无关,故 Ext 取值可以是 0,也可以是 1。
4)【标准答案】
Ext=1;ALUctr = 000。
【分析】
lw 指令的功能是将主存地址为R[rs1]+imm的数据加载到目标寄存器,需要先通过 ALU 计算访存有效地址,imm 是补码表示的 12 位有符号数,在和R[rs1]中的 32 位数相加时需要进行符号扩展,R[rs1]中的数和 imm 符号扩展后的数做的是加法。
5)【标准答案】
因为 A040 A103H = 101000000100 00001 010 00010 0000011B,根据指令格式中 IR [6:0] = 0000011B,IR [14:12] = 010B,可以判定该指令是 lw 指令。lw 指令所读取数据的存储地址为 FFFF 9CD4H。
【分析】
lw 指令的高 12 位 = A04H,经过符号扩展后,得到 32 位机器码为 FFFF FA04H,所读取数据的存储地址为 FFFF A2D0H + FFFF FA04H = FFFF 9CD4H。

44.(10 分)对于题 43 中的计算机 M,C 语言程序 P 包含的语句 “sum+=a [i];” 在 M 中对应的指令序列 S 如下。

已知变量 i、sum 和数组 a 都为 int 型,通用寄存器 r1~r5 的编号为 01H~05H。请回答下列问题。

1)根据指令序列 S 中每条指令的功能,写出存放数组 a 的首地址、变量 i 和 sum 的通用寄存器编号。(3 分)

2)已知 M 为小端方式计算机,采用页式存储管理方式,页大小为 4KB。若执行到指令序列 S 中第 1 条指令时,i=5 且 r3 的内容分别为 0000 1332H 和 0013 DFF0H,从地址 0013 DFF0H 开始的存储单元内容如下图所示,则执行 “sum+=a [i];” 语句后,a [i] 的地址、a [i] 和 sum 的机器数分别是什么(用十六进制表示)?a [i] 所在页的页号是多少?此次执行中,数组 a 至少存放在几页中?(5 分)

3)指令 “slli r4,r2,2” 的机器码是什么(用十六进制表示)?若数组 a 改为 short 类型,则指令序列 S 中 slli 指令的汇编形式应是什么?(2 分)

44.【王道书 4.3 节】
1)【标准答案】
a 的首地址存放在 r3 中;i 存放在 r2 中;sum 存放在 r1 中。
【分析】
r2 中存放的是变量 i 的值,R[r4]←R[r2]<<2的功能是将 i 左移两位,即将i×4的值送到 r4。r3 中存放的是数组 a 的首地址,即 a [0] 的地址,R[r4]←R[r3]+R[r4]的功能是计算addr(a[0])+i×4,即将 a [i] 的地址送到 r4。R[r5]←M[R[r4]+0]的功能就是将 a [i] 送到 r5。r1 中存放的是变量 sum 的值,R[r1]←R[r1]+R[r5]的功能是将sum+a[i]的结果送回 r1。
2)【标准答案】
a [i] 的地址为 0013 E004H;a [i] 的机器数为 FFFF ECDCH;sum 的机器数为 0000 000EH;a [i] 所在页的页号是 0013EH;数组 a 至少存放在 2 页中。
【分析】
数组 a 的首地址为 0013 DFF0H,从表中可以看出,a [5] 的地址为 0013 E004H,页大小为 4KB,因此页内偏移量为低 12 位,页号为地址高 20 位即 0013EH,M 为小端方式计算机,根据表格可知,a [5] 的机器数为 FFFF ECDCH。sum 的初值为 0000 1332H,执行sum+=a[i]后,sum 的值更新为 0000 1332H + FFFF ECDCH = 0000 000EH。表格中的数据包含了页号为 0013DH 和 0013EH 两个不同页面的数据,故数组 a 至少存放在 2 页中。
3)【标准答案】
指令机器码为 0021 2213H。汇编形式是 slli r4,r2,1。
【分析】
机器码 = 0000000 00010 00010 010 00100 0010011 = 0021 2213H。若数组 a 改为 short 型,则每个元素占 2 字节,a [i] 的地址为addr(a[0])+i×2,因此 slli 指令的汇编形式是 slli r4,r2,1。

45.(7 分)某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址和物理地址的长度均为 32 位,页表项的大小为 4 字节,页大小为 4MB,虚拟地址结构如下。

进程 P 的页表起始虚拟地址为 B8C0 0000H,被装载到从物理地址 6540 0000H 开始的连续主存空间中。请回答下列问题,要求答案用十六进制表示。

1)若 CPU 在执行进程 P 的过程中,访问虚拟地址 1234 5678H 时发生了缺页异常,经过缺页异常处理和 MMU 地址转换后得到的物理地址是 BAB4 5678H,在此次缺页异常处理过程中,需要为所缺页分配页框并更新相应的页表项,则该页表项的虚拟地址和物理地址分别是什么?该页表项中的页框号更新后的值是什么?(3 分)

2)进程 P 的页表所在页的页号是什么?该页对应的页表项的虚拟地址是什么?该页表项中的页框号是什么?(4 分)

45.【王道书 3.2 节】
1)【标准答案】
页表项的虚拟地址为:B8C0 0000H + 48H << 2 = B8C0 0120H。
页表项的物理地址为:6540 0000H + 48H << 2 = 6540 0120H。
相应页表项中的页框号为:BAB4 5678H >> 22 = 2EAH。
2)【标准答案】
进程 P 的页表所在页的页号为:B8C0 0000H >> 22 = 2E3H。
页表项的虚拟地址为:B8C0 0000H + 2E3H << 2 = B8C0 0B8CH。
页表项中的页框号为:6540 0000H >> 22 = 195H。
【分析】
符号 “<<” 表示左移操作,符号 “>>” 表示右移操作。
将 048H 展开为二进制,并左移 2 位,与 “乘以 4” 的效果等价。
页表项中的页框号为物理地址的前 10 位,可以通过右移 22 位得到。

46.(8 分)计算机系统中的进程之间往往需要相互协作以完成一个任务。在某网络系统中,缓冲区 B 用于存放一个数据分组,对 B 的操作有 C1、C2 和 C3。C1 将一个数据分组写入 B,C2 从 B 中读出一个数据分组,C3 对 B 中的数据分组进行修改。要求 B 为空时才能执行 C1,B 非空时才能执行 C2 和 C3。请回答下列问题。

1)假设进程 P1 和 P2 均需要执行 C1,实现 C1 的代码是否为临界区?为什么?(2 分)

2)假设 B 初始为空,进程 P1 执行 C1 一次,进程 P2 执行 C2 一次。请定义尽可能少的信号量,并用 wait ()、signal () 操作描述进程 P1 和 P2 之间的同步或互斥关系,说明所用信号量的作用及其初值。(3 分)

3)假设 B 初始不为空,进程 P1 和 P2 各执行 C3 一次。请定义尽可能少的信号量,并用 wait ()、signal () 操作描述进程 P1 和 P2 之间的同步或互斥关系,说明所用信号量的作用及其初值。(3 分)

46.【王道书 2.3 节】
1)【标准答案】
实现 C1 的代码是临界区。因为代码 C1 执行对 B 的写操作,且 P1 和 P2 需要互斥执行 C1。
2)【标准答案】
进程 P1 和 P2 的同步伪代码如下。

【分析】
有一组互斥关系和一组同步关系。互斥关系为:P1 和 P2 需要互斥访问缓冲区 B;同步关系为:P1 执行完 C1 后,P2 才能执行 C2。缓冲区 B 初始为空,且最大容量为 1,因此可不用定义互斥信号量 mutex。因为在缓冲区大小为 1 的条件下,同步信号量 S 就可同时保证 P1 和 P2 互斥访问 B,符合题意 “尽可能定义少的信号量” 的要求。
3)【标准答案】
进程 P1 和 P2 的互斥伪代码如下。

【分析】
缓冲区 B 初始非空,因此仅需一个互斥信号量 mutex 来保证 P1 和 P2 互斥访问 B 即可。

47.(9 分)网络空间是继陆海空天之后的 “第五疆域”,网络技术是网络疆域建设与治理的基础。路由算法与协议是网络核心技术之一,对其准确认知、合理选择与应用,对于网络建设十分重要。假设现有互联网中的 4 个自治系统互连拓扑示意图如下图所示。其中,AS1 运行内部网关协议 RIP;AS3 规模较小,自治系统内任意两个主机间通信,经过路由器数量不超过 15 个;AS4 规模较大,自治系统内任意两个主机间通信,经过路由器数量可能超过 20 个。请回答下列问题。

1)若仅有 RIP 和 OSPF 内部网关协议供选择,则 AS4 应该选择哪个协议?(1 分)

2)若 AS3 中的某主机向本自治系统内另一主机发送 1 个 IP 分组,为确保该 IP 分组能够被正常接收,则该 IP 分组的初始 TTL 值应该至少设置为多少?(1 分)

3)假设 AS1 中的路由器同一时刻启动,启动后立即构建并交换初始距离向量,之后每隔 30s 交换一次最新的距离向量,则从交换初始距离向量时刻算起,R11~R16 路由器均获得到达网络 210.2.3.0/24 的正确路由,至少需要多长时间?均获得到达网络 210.2.4.0/24 的正确路由,至少需要多长时间?(2 分)

4)R44 向 R13 通告到达网络 136.5.16.0/20 路由时,由 BGP 协议哪类会话完成?通过哪个 BGP 报文通告?R13 通过 BGP 协议的哪类会话将该网络可达性信息通告给 R14 和 R15?(3 分)

5)若 R14 和 R15 均收到分别由 R11、R12、R13 通告的到达网络 136.5.16.0/20 的可达性信息如下。

目的网络:136.5.16.0/20,AS 路径:AS2 AS8 AS19,下一跳:R11

目的网络:136.5.16.0/20,AS 路径:AS3 AS7 AS11 AS19,下一跳:R12

目的网络:136.5.16.0/20,AS 路径:AS4 AS10 AS19,下一跳:R13

则在无策略约束情况下,R14 和 R15 更新路由表后,各自路由表中到达网络 136.5.16.0/20 路由的下一跳分别是什么(用路由器名称表示)?(2 分)

47.【王道书 4.4 节】
1)【标准答案】
AS4 应该选择 OSPF 协议。
【分析】
首先,RIP 限制了网络的规模,它能支持的最大距离为 15(16 表示不可达)。其次,RIP 路由器之间交换的信息是完整的路由表,随着网络规模的扩大,开销也很大。
2)【标准答案】
初始 TTL 值应该至少设置为 16。
【分析】
每经过一个路由器,TTL 值都要减 1,当 TTL 值减为 0 时,就丢弃这个 IP 分组。为保证 IP 分组能被正常接收,需要考虑该 IP 分组可能经过路由器的最大数量,故初始 TTL 值应至少设置为 16,这样当经过 15 个路由器后,TTL 值恰好变为 1,不会被丢弃。
3)【标准答案】
R11~R16 路由器均获得到达网络 210.2.3.0/24 的正确路由,至少需要 30s;均获得到达网络 210.2.4.0/24 的正确路由,至少需要 60s。
【分析】
对于网络 210.2.3.0/24,启动后立即构建距离向量,R14 直连网络 210.2.3.0/24,首先更新 R14 的路由表,然后开始第一次交换初始距离向量,R14 分别与 R11 和 R15 交换路由信息,至此,R14、R11、R15 均获得了到达网络 210.2.3.0/24 的正确路由,如图 1 所示。经过 30s 后,R11 和 R12 交换路由信息,R15 分别与 R13 和 R16 交换路由信息,至此,R11~R16 路由器均获得了到达网络 210.2.3.0/24 的正确路由,如图 2 所示。


对于网络 210.2.4.0/24,启动后立即构建距离向量,R16 直连网络 210.2.4.0/24,首先更新 R16 的路由表,然后开始第一次交换初始距离向量,R16 与 R15 交换路由信息,至此,R16、R15 均获得了到达网络 210.2.4.0/24 的正确路由,如图 3 所示。经过 30s 后,R15 分别与 R13 和 R14 交换路由信息,至此,R16、R15、R14、R13 均获得了到达网络 210.2.4.0/24 的正确路由,如图 4 所示。又经过 30s 后,R14 与 R11 交换路由信息,R13 与 R12 交换路由信息,至此,R11~R16 路由器均获得了到达网络 210.2.4.0/24 的正确路由,如图 5 所示。


4)【标准答案】
由 BGP 协议外部会话(eBGP)完成;通过 UPDATE 报文通告;R13 通过 BGP 协议内部会话(iBGP)通告 R14 和 R15。
【分析】
R44 向 R13 通告到达网络 136.5.16.0/20 路由属于自治系统之间的 BGP 会话,由 eBGP 完成。UPDATE(更新)报文用来通告某一路由的信息,以及列出要撤销的多条路由。R13 向 R14 和 R15 通告网络可达性信息属于自治系统内部的 BGP 会话,由 iBGP 完成。
5)【标准答案】
R14 路由表中到达网络 136.5.16.0/20 路由的下一跳是 R11。
R15 路由表中到达网络 136.5.16.0/20 路由的下一跳是 R13。
【分析】
没有任何策略约束,且 R14 从 R11、R12、R13 到达目的网络所经过的自治系统的数量都是 1,因此应采用热土豆路由选择算法,算法思想是让分组经过最少的转发次数离开本自治系统。这时要使用内部网关协议,AS1 采用的是 RIP,因此 R14 会选择离它最近的 R11 转发分组,类似地,R15 会选择离它最近的 R13 转发分组。

2023 年全国硕士研究生招生考试

计算机科学与技术学科联考

计算机学科专业基础综合

(科目代码:408)

一、单项选择题

第 01~40 小题,每小题 2 分,共 80 分。下列每小题给出的四个选项中,只有一个选项符合试题要求。

1.下列对顺序存储的有序表(长度为 n)实现给定操作的算法中,平均时间复杂度为 O (1) 的是( )。

A. 查找包含指定值元素的算法

B. 插入包含指定值元素的算法

C. 删除第 i(1≤i≤n)个元素的算法

D. 获取第 i(1≤i≤n)个元素的算法

2.现有非空双向链表 L,其结点结构为 prev | data | next ,prev 是指向直接前驱结点的指针,next 是指向直接后继结点的指针。若要在 L 中指针 p 所指向的结点(非尾结点)之后插入指针 s 指向的新结点,则在执行语句序列 “s->next = p->next; p->next = s;” 后,下列语句序列中还需要执行的是( )。

A. s->next->prev = p; s->prev = p;

B. p->next->prev = s; s->prev = p;

C. s->prev = s->next->prev; s->next->prev = s;

D. p->next->prev = s->prev; s->next->prev = p;

3.若采用三元组表存储结构存储稀疏矩阵 M,则除三元组表外,下列数据中还需要保存的是( )。

I. M 的行数

II. M 中包含非零元素的行数

III. M 的列数

IV. M 中包含非零元素的列数

A. 仅 I、III

B. 仅 I、IV

C. 仅 II、IV

D. I、II、III、IV

4.在由 6 个字符组成的字符集 S 中,各字符出现的频次分别为 3, 4, 5, 6, 8, 10,为 S 构造的哈夫曼编码的加权平均长度为( )。

A. 2.4

B. 2.5

C. 2.67

D. 2.75

5.已知一棵二叉树的树形如下图所示,若其后序遍历序列为 f, d, b, e, c, a,则其先(前)序遍历序列是( )。

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

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

C. c, a, b, e, f, d

D. d, f, e, b, a, c

6.已知无向连通图 G 中各边的权值均为 1。下列算法中,一定能够求出图 G 中从某顶点到其余各顶点的最短路径的是( )。

I. 普里姆(Prim)算法

II. 克鲁斯卡尔(Kruskal)算法

III. 图的广度优先搜索算法

A. 仅 I

B. 仅 III

C. 仅 I、II

D. I、II、III

7.下列关于非空 B 树的叙述中,正确的是( )。

I. 插入操作可能增加树的高度

II. 删除操作一定会导致叶结点的变化

III. 查找某关键字总是要查找到叶结点

IV. 插入的新关键字最终位于叶结点中

A. 仅 I

B. 仅 I、II

C. 仅 III、IV

D. 仅 I、II、IV

8.对含 600 个元素的有序顺序表进行折半查找,关键字间的比较次数最多是( )。

A. 9

B. 10

C. 30

D. 300

9.现有长度为 5、初始为空的散列表 HT,散列函数 H (k) = (k + 4)%5,用线性探查再散列法解决冲突。若将关键字序列 2022, 12, 25 依次插入 HT,然后删除关键字 25,则 HT 中查找失败的平均查找长度为( )。

A. 1

B. 1.6

C. 1.8

D. 2.2

10.下列排序算法中,不稳定的是( )。

I. 希尔排序

II. 归并排序

III. 快速排序

IV. 堆排序

V. 基数排序

A. 仅 I、II

B. 仅 II、V

C. 仅 I、III、IV

D. 仅 III、IV、V

11.使用快速排序算法对数据进行升序排序,若经过一次划分后得到的数据序列是 68, 11, 70, 23, 80, 77, 48, 81, 93, 88,则该次划分的枢轴是( )。

A. 11

B. 70

C. 80

D. 81

12.若机器 M 的主频为 1.5GHz,在 M 上执行程序 P 的指令条数为 5×10⁵,P 的平均 CPI 为 1.2,则 P 在 M 上的指令执行速度和用户 CPU 时间分别为( )。

A. 0.8GIPS, 0.4ms

B. 0.8GIPS, 0.4μs

C. 1.25GIPS, 0.4ms

D. 1.25GIPS, 0.4μs

13.若 short 型变量 x = -8190,则 x 的机器数是( )。

A. E002H

B. E001H

C. 9FFFH

D. 9FFEH

14.已知 float 型变量用 IEEE 754 单精度浮点数格式表示。若 float 型变量 x 的机器数为 8020 0000H,则 x 的值是( )。

A. -2⁻¹²⁸

B. -1.01×2⁻¹²⁷

C. -1.01×2⁻¹²⁶

D. 非数(NaN)

15.某计算机的 CPU 有 30 根地址线,按字节编址,CPU 和主存芯片连接时,要求主存芯片占满所有可能的存储地址空间,并且 RAM 区和 ROM 区所分配的空间大小比是 3∶1。若 RAM 在连续低地址区,ROM 在连续高地址区,则 ROM 的地址范围是( )。

A. 0000 0000H~0FFF FFFFH

B. 1000 0000H~2FFF FFFFH

C. 3000 0000H~3FFF FFFFH

D. 4000 0000H~4FFF FFFFH

16.已知 x, y 为 int 型变量,当 x = 100, y = 200 时,执行 “x 减 y” 指令得到的溢出标志 OF 和借位标志 CF 分别为 0, 1,那么当 x = 10, y = -20 时,该指令得到的 OF 和 CF 分别为( )。

A. OF = 0, CF = 0

B. OF = 0, CF = 1

C. OF = 1, CF = 0

D. OF = 1, CF = 1

17.某运算类指令中有一个地址码为通用寄存器编号,对应通用寄存器中存放的是操作数或操作数的地址,CPU 区分两者的依据是( )。

A. 操作数的寻址方式

B. 操作数的编码方式

C. 通用寄存器的编号

D. 通用寄存器的内容

18.数据通路由组合逻辑元件(操作元件)和时序逻辑元件(状态元件)组成。下列给出的元件中,属于操作元件的是( )。

I. 算术逻辑部件(ALU)

II. 程序计数器(PC)

III. 通用寄存器组(GPRs)

IV. 多路选择器(MUX)

A. 仅 I、II

B. 仅 I、IV

C. 仅 II、III

D. 仅 I、II、IV

19.在采用 “取指、译码 / 取数、执行、访存、写回”5 段流水线的 RISC 处理器中,执行如下指令序列(第一列为指令序号),其中 s0、s1、s2、s3 和 t2 表示寄存器编号。

若采用转发(旁路)技术处理数据冒险,采用硬件阻塞方式处理控制冒险,则在指令 I1~I4 执行过程中,发生流水线阻塞的指令有( )。

A. 仅 I3

B. 仅 I2、I4

C. 仅 I3、I4

D. 仅 I2、I3、I4

20.某存储器总线宽度为 64 位,总线时钟频率为 1GHz,在总线上传输一个数据或地址需要一个时钟周期,不支持突发传送方式。若通过该总线连接 CPU 和主存,主存每次准备一个 64 位数据需要 6ns,主存块大小为 32B,则读取一个主存块需要的时间是( )。

A. 8ns

B. 11ns

C. 26ns

D. 32ns

21.下列关于硬件和异常 / 中断关系的叙述中,错误的是( )。

A. CPU 在执行一条指令过程中检测异常事件

B. CPU 在执行完一条指令时检测中断请求信号

C. 开中断时 CPU 检测到中断请求后就进行中断响应

D. 外部设备通过中断控制器向 CPU 发中断结束信号

22.下列关于 I/O 控制方式的叙述中,错误的是( )。

A. 查询方式下,通过 CPU 执行查询程序进行 I/O 操作

B. 中断方式下,通过 CPU 执行中断服务程序进行 I/O 操作

C. DMA 方式下,通过 CPU 执行 DMA 传送程序进行 I/O 操作

D. 对于 SSD、网络适配器等高速设备,采用 DMA 方式输入 / 输出

23.与宏内核操作系统相比,下列特征中,微内核操作系统具有的是( )。

I. 较好的性能 II. 较高的可靠性 III. 较高的安全性 IV. 较强的可扩展性

A. 仅 II、IV

B. 仅 I、II、III

C. 仅 I、III、IV

D. 仅 II、III、IV

24.在操作系统内核中,中断向量表适合采用的数据结构是( )。

A. 数组

B. 队列

C. 单向链表

D. 双向链表

25.某系统采用页式存储管理,用位图管理空闲页框。若页大小为 4KB,物理内存大小为 16GB,则位图所占空间的大小是( )。

A. 128B

B. 128KB

C. 512KB

D. 4MB

26.下列操作完成时,导致 CPU 从内核态转为用户态的是( )。

A. 阻塞进程

B. 执行 CPU 调度

C. 唤醒进程

D. 执行系统调用

27.下列由当前线程引起的事件或执行的操作中,可能导致该线程由执行态变为就绪态的是( )。

A. 键盘输入

B. 缺页异常

C. 主动出让 CPU

D. 执行信号量的 wait () 操作

28.对于采用虚拟内存管理方式的系统,下列关于进程虚拟地址空间的叙述中,错误的是( )。

A. 每个进程都有自己独立的虚拟地址空间

B. C 语言中 malloc () 函数返回的是虚拟地址

C. 进程对数据段和代码段可以有不同的访问权限

D. 虚拟地址空间的大小由内存和硬盘的大小决定

29.进程 P₁、P₂和 P₃进入就绪队列的时刻、优先级(值越大优先权越高)及 CPU 执行时间如下表所示。

若系统采用基于优先权的抢占式 CPU 调度算法,从 0ms 时刻开始进行调度,则 P₁、P₂和 P₃的平均周转时间为( )。

A. 60ms

B. 61ms

C. 70ms

D. 71ms

30.进程 R 和 S 共享数据 data,若 data 在 R 和 S 中所在页的页号分别为 p₁和 p₂,两个页所对应的页框号分别为 f₁和 f₂,则下列叙述中,正确的是( )。

A. p₁和 p₂一定相等,f₁和 f₂一定相等

B. p₁和 p₂一定相等,f₁和 f₂不一定相等

C. p₁和 p₂不一定相等,f₁和 f₂一定相等

D. p₁和 p₂不一定相等,f₁和 f₂不一定相等

31.若文件 F 仅被进程 P 打开并访问,则当进程 P 关闭 F 时,下列操作中,文件系统需要完成的是( )。

A. 删除目录中文件 F 的目录项

B. 释放 F 的索引节点所占的内存空间

C. 释放 F 的索引节点所占的外存空间

D. 将文件磁盘索引节点中的链接计数减 1

32.下列因素中,设备分配需要考虑的是( )。

I. 设备的类型 II. 设备的访问权限

III. 设备的占用状态 IV. 逻辑设备与物理设备的映射关系

A. 仅 I、II

B. 仅 II、III

C. 仅 III、IV

D. I、II、III、IV

34.在下图所示的分组交换网络中,主机 H1 和 H2 通过路由器互连,2 段链路的带宽均为 100Mbps、时延带宽积(即单向传播时延 × 带宽)均为 1000bits。若 H1 向 H2 发送 1 个大小为 1MB 的文件,分组长度为 1000B,则从 H1 开始发送时刻起到 H2 收到文件全部数据时刻止,所需的时间至少是( )。(注:M =10^6)

A. 80.02ms

B. 80.08ms

C. 80.09ms

D. 80.10ms

35.某无噪声理想信道带宽为 4MHz,采用 QAM 调制,若该信道的最大数据传输速率是 48Mbps,则该信道采用的 QAM 调制方案是( )。

A. QAM - 16

B. QAM - 32

C. QAM - 64

D. QAM - 128

36.假设通过同一条信道,数据链路层分别采用停 - 等协议、GBN 协议和 SR 协议(发送窗口和接收窗口等)传输数据,三个协议的数据帧长度相同,忽略确认帧长度,帧序号位数为 3 比特。若对应三个协议的发送方最大信道利用率分别是()。

A. U1​≤U2​≤U3​
B. U1​≤U3​≤U2​
C. U2​≤U3​≤U1​
D. U3​≤U2​≤U1​

37.已知 10BaseT 以太网的争用时间片为 51.2μs。若网卡在发送某帧时发生了连续 4 次冲突,则基于二进制指数退避算法确定的再次尝试重发该帧前等待的最长时间是( )。

A. 51.2μs

B. 204.8μs

C. 768μs

D. 819.2μs

37.若甲向乙发送数据时采用 CRC 校验,生成多项式为G(X)=X^4 +X+1(即G=10011),则乙接收到下列比特串时,可以断定其在传输过程中未发生错误的是( )。

A. 10111 0000

B. 10111 0100

C. 10111 1000

D. 10111 1100

38.某网络拓扑如下图所示,其中路由器 R2 实现 NAT 功能。若主机 H 向 Internet 发送 1 个 IP 分组,则经过 R2 转发后,该 IP 分组的源 IP 地址是( )。

A. 195.123.0.33

B. 195.123.0.35

C. 192.168.0.1

D. 192.168.0.3

39.主机 168.16.84.24/20 所在子网的最小可分配 IP 地址和最大可分配 IP 地址分别是( )。

A. 168.16.80.1,168.16.84.254

B. 168.16.80.1,168.16.95.254

C. 168.16.84.1,168.16.84.254

D. 168.16.84.1,168.16.95.254

40.下列关于 IPv4 和 IPv6 的叙述中,正确的是( )。

I. IPv6 地址空间是 IPv4 地址空间的 96 倍

II. IPv4 首部和 IPv6 基本首部的长度均可变

III. IPv4 向 IPv6 过渡可以采用双协议栈和隧道技术

IV. IPv6 首部的 Hop Limit 字段等价于 IPv4 首部的 TTL 字段

A. 仅 I、II

B. 仅 I、IV

C. 仅 II、III

D. 仅 III、IV

二、综合应用题

第 41~47 小题,共 70 分。

41.(13 分)已知有向图 G 采用邻接矩阵存储,类型定义如下:

typedef struct                  //图的类型定义
{int numVertices, numEdges;  //图的顶点数和有向边数char VerticesList[MAXV];    //顶点表,MAXV为已定义常量int Edge[MAXV][MAXV];      //邻接矩阵
} MGraph;

将图中出度大于入度的顶点称为 K 顶点。例如在题 41 图中,顶点 a 和 b 为 K 顶点。

请设计算法:int printVertices (MGraph G),对给定的任意非空有向图 G,输出 G 中所有的 K 顶点,并返回 K 顶点的个数。要求:

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

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

42.(10 分)对含有 n(n > 0)个记录的文件进行外部排序,采用置换 - 选择排序生成初始归并段时需要使用一个工作区,工作区中能保存 m 个记录。请回答下列问题。

1)若文件中含有 19 个记录,其关键字依次是 51, 94, 37, 92, 14, 63, 15, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100,则当 m = 4 时,可生成几个初始归并段?各是什么?

2)对任意的 m(n >> m > 0),生成的第一个初始归并段的长度最大值和最小值分别是多少?

43.(14 分)已知计算机 M 字长为 32 位,按字节编址,采用请求调页策略的虚拟存储管理方式,虚拟地址为 32 位,页大小为 4KB;数据 Cache 采用 4 路组相联映射方式,数据区大小为 8KB,主存块大小为 32B。现有 C 语言程序段如下:

int a[24][64];
……
for(i = 0; i < 24; i++)for(j = 0; j < 64; j++) a[i][j] = 10;

已知二维数组 a 按行优先存放,在虚拟地址空间中分配的起始地址为 0042 2000H,sizeof (int) = 4,假定在 M 上执行上述程序段之前数组 a 不在主存,且在该程序段执行过程中不会发生页面置换。请回答下列问题。

1)数组 a 分布在几个页面中?对于数组 a 的访问,会发生几次缺页异常?页故障地址各是什么?

2)不考虑变量 i 和 j,该程序段的数据访问是否具有时间局部性?为什么?

3)计算机 M 的虚拟地址(A31~A0)中哪几位用作块内地址?哪几位用作 Cache 组号?a [1][0] 的虚拟地址是多少?其所在主存块对应的 Cache 组号是多少?

4)数组 a 占用多少主存块?假设上述程序段执行过程中数组 a 的访问不会和其他数据发生 Cache 访问冲突,则数组 a 的 Cache 命中率是多少?若将循环中 i 和 j 的次序按如下方式调换:

for(j = 0; j < 64; j++)for(i = 0; i < 24; i++) a[i][j] = 10;

则数组 a 的 Cache 命中率是多少?(10 分)

44.(9 分)题 43 中的 C 程序段在计算机 M 上的部分机器级代码如下,每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。

  for(i = 0; i < 24; i++)
1 00401072 C7 45 F8 00 00 00 00           mov [ebp - 8], 0
2 00401079 EB 09                          jmp 00401084h
3 0040107B 8B 55 F8                        mov eax, [ebp - 8]……                ……                        ……
7 00401088 7D 32                           jge 004010bchfor(j = 0; j < 64; j++)
8 004010A C7 45 FC 00 00 00 00             mov [ebp - 4], 0……                ……                        ……a[i][j] = 10;……                ……                        ……
19 004010AE C7 84 82 00 20 42 00 0A 00 00 00     mov [ecx + edx * 4 + 00422000h], 0Ah
20   ……                                          ……

请回答下列问题。

1)第 20 条指令的虚拟地址是多少?

2)已知第 2 条 jmp 和第 7 条 jge 都是跳转指令,其操作码分别是 EBH 和 7DH,跳转目标地址分别为 0040 1084H、0040 10BCH,这两条指令都采用什么寻址方式?给出第 2 条指令 jmp 的跳转目标地址计算过程。

3)已知第 19 条 mov 指令的功能为 “a [i][j]=10”,其中 ecx 和 edx 为寄存器名,0042 2000H 是数组 a 的首地址,指令中源操作数采用什么寻址方式?已知 edx 中存放的是变量 j,ecx 中存放的是什么?根据该指令的机器码判断计算机 M 采用的是大端还是小端方式。

4)第一次执行第 19 条指令时,取指令过程中是否会发生缺页异常?为什么?

45.(7 分)现要求学生使用 swap 指令和布尔型变量 lock 实现临界区互斥。lock 为线程间共享的变量,lock 的值为 TRUE 时线程不能进入临界区,为 FALSE 时线程能够进入临界区。某同学编写的实现临界区互斥的伪代码如题 45 (a) 图所示。

请回答下列问题。

1)题 45 (a) 图的伪代码中哪些语句存在错误?将其改为正确的语句(不增加语句的条数)。

2)题 45 (b) 图给出了交换两个变量值的函数 newSwap () 的代码,是否可以用函数调用语句 “newSwap (&key, &lock)” 代替指令 “swap key, lock” 以实现临界区互斥?为什么?

46.(8 分)进程 P 通过执行系统调用从键盘接收一个字符的输入,已知此过程中与进程 P 相关的操作包括:① 将进程 P 插入就绪队列;② 将进程 P 插入阻塞队列;③ 将字符从键盘控制器读入系统缓冲区;④ 启动键盘中断处理程序;⑤ 进程 P 从系统调用返回;⑥ 用户在键盘上输入字符。以上编号①~⑥仅用于标记操作,与操作的先后顺序无关。请回答下列问题。

1)按照正确的操作顺序,操作①的前一个和后一个操作分别是上述操作中的哪一个?操作⑥的后一个操作是上述操作中的哪一个?

2)在上述哪个操作之后 CPU 一定从进程 P 切换到其他进程?在上述哪个操作之后 CPU 调度程序才能选中进程 P 执行?

3)完成上述哪个操作的代码属于键盘驱动程序?

4)键盘中断处理程序执行时,进程 P 处于什么状态?CPU 处于内核态还是用户态?

47.(9 分)某网络拓扑如题 47 图所示,主机 H 登录 FTP 服务器后,向服务器上传一个大小为 18000B 的文件 F。假设 H 为传输 F 建立数据连接时,选择的初始序号为 100,MSS = 1000B,拥塞控制初始阈值为 4MSS,RTT = 10ms,忽略 TCP 段的传输时延;在 F 的传输过程中,H 均以 MSS 段向服务器发送数据,且未发生差错、丢包和乱序现象。

请回答下列问题。

1)FTP 的控制连接是持久的还是非持久的?FTP 的数据连接是持久的还是非持久的?H 登录 FTP 服务器时,建立的 TCP 连接是控制连接还是数据连接?

2)H 通过数据连接发送 F 时,F 的第 1 个字节的序号是多少?在断开数据连接过程中,FTP 服务器发送的第二次挥手 ACK 段的确认序号是多少?

3)H 通过数据连接发送 F 的过程中,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为多少?收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为多少?

4)H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止,至少需要多长时间?期间应用层数据平均发送速率是多少?

2022 年全国硕士研究生招生考试

计算机科学与技术学科联考

计算机学科专业基础综合

(科目代码:408)

一、单项选择题

第 01~40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项符合试题要求。

01.下列程序段的时间复杂度是( )。

int sum = 0;
for (int i = 1; i < n; i *= 2)for (int j = 0; j < i; j++)sum++;

A. O(logn)        B. O(n)        C. O(nlogn)        D. O(n2)

02.给定有限符号集 S,in 和 out 均为 S 中所有元素的任意排列。对于初始为空的栈 ST,下列叙述中,正确的是( )。
A. 若 in 是 ST 的入栈序列,则不能判断 out 是否为其可能的出栈序列
B. 若 out 是 ST 的出栈序列,则不能判断 in 是否为其可能的入栈序列
C. 若 in 是 ST 的入栈序列,out 是对应 in 的出栈序列,则 in 与 out 一定不同
D. 若 in 是 ST 的入栈序列,out 是对应 in 的出栈序列,则 in 与 out 可能互为倒序

03.若结点 p 与 q 在二叉树 T 的中序遍历序列中相邻,且 p 在 q 之前,则下列 p 与 q 的关系中,不可能的是( )。
I. q 是 p 的双亲
II. q 是 p 的右孩子
III. q 是 p 的右兄弟
IV. q 是 p 的双亲的双亲
A. 仅 I
B. 仅 III
C. 仅 II、III
D. 仅 II、IV

04.若三叉树 T 中有 244 个结点(叶结点的高度为 1),则 T 的高度至少是( )。
A. 8
B. 7
C. 6
D. 5

05.对任意给定的含 n(n > 2)个字符的有限集 S,用二叉树表示 S 的哈夫曼编码集和定长编码集,分别得到二叉树T1​和T2​。下列叙述中,正确的是( )。
A. T1​与T2​的结点数相同
B. T1​的高度大于T2​的高度
C. 出现频次不同的字符在T1​中处于不同的层
D. 出现频次不同的字符在T2​中处于相同的层

06.对于无向图G=(V,E),下列选项中,正确的是( )。
A. 当∣V∣>∣E∣时,G一定是连通的
B. 当∣V∣<∣E∣时,G一定是连通的
C. 当∣V∣=∣E∣−1时,G一定是不连通的
D. 当∣V∣>∣E∣+1时,G一定是不连通的

07.右图是一个有 10 个活动的 AOE 网,时间余量最大的活动是( )。
A. c
B. g
C. h
D. j

08.在下图所示的 5 阶 B 树 T 中,删除关键字 260 之后需要进行必要的调整,得到新的 B 树T1​。下列选项中,不可能是T1​根结点中关键字序列的是( )。


A. 60, 90, 280                B. 60, 90, 350
C. 60, 85, 110, 350        D. 60, 90, 110, 350

09.下列因素中,影响散列(哈希)方法平均查找长度的是( )。
I. 装填因子
II. 散列函数
III. 冲突解决策略
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II、III

10.使用二路归并排序对含 n 个元素的数组 M 进行排序时,二路归并操作的功能是( )。
A. 将两个有序表合并为一个新的有序表
B. 将 M 划分为两部分,两部分的元素个数大致相等
C. 将 M 划分为 n 个部分,每个部分中仅含有一个元素
D. 将 M 划分为两部分,一部分元素的值均小于另一部分元素的值

11.对数据进行排序时,若采用直接插入排序而不采用快速排序,则可能的原因是( )。
I. 大部分元素已有序
II. 待排序元素数量很少
III. 要求空间复杂度为O(1)
IV. 要求排序算法是稳定的
A. 仅 I、II
B. 仅 III、IV
C. 仅 I、II、IV
D. I、II、III、IV

12.某计算机主频为 1GHz,程序 P 运行过程中,共执行了 10000 条指令,其中,80% 的指令执行平均需 1 个时钟周期,20% 的指令执行平均需 10 个时钟周期。程序 P 的平均 CPI 和 CPU 执行时间分别是( )。
A. 2.8, 28 μs
B. 28, 28 μs
C. 2.8, 28 ms
D. 28, 28 ms

13.32 位补码所能表示的整数范围是( )。

14.-0.4375 的 IEEE 754 单精度浮点数表示为( )。
A. BEE0 0000H
B. BF60 0000H
C. BF70 0000H
D. C0E0 0000H

15.某计算机主存地址为 24 位,采用分页虚拟存储管理方式,虚拟地址空间大小为 4GB,页大小为 4KB,按字节编址。某进程的页表部分内容如下表所示。

当 CPU 访问虚拟地址 0008 2840H 时,虚 - 实地址转换的结果是( )。
A. 得到主存地址 02 4840H
B. 得到主存地址 18 0840H
C. 得到主存地址 01 8840H
D. 检测到缺页异常

16.若计算机主存地址为 32 位,按字节编址,某 Cache 的数据区容量为 32KB,主存块大小为 64B,采用 8 - 路组相联映射方式,该 Cache 中比较器的个数和位数分别为( )。
A. 8, 20
B. 8, 23
C. 64, 20
D. 64, 23

17.某内存条包含 8 个8192×8192×8位的 DRAM 芯片,按字节编址,支持突发(burst)传送方式,对应存储器总线宽度为 64 位,每个 DRAM 芯片内有一个行缓冲区(row buffer)。下列关于该内存条的叙述中,不正确的是( )。
A. 内存条的容量为 512MB
B. 采用多模块交叉编址方式
C. 芯片的地址引脚为 26 位
D. 芯片内行缓冲有8192×8位

18.下列选项中,属于指令集体系结构(ISA)规定的内容是( )。
I. 指令字格式和指令类型
II. CPU 的时钟周期
III. 通用寄存器个数和位数
IV. 加法器的进位方式
A. 仅 I、II
B. 仅 I、III
C. 仅 II、IV
D. 仅 I、III、IV

19.设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为 6 位,包含零地址、一地址和二地址 3 种格式的指令。若二地址指令有 12 条,一地址指令有 254 条,则零地址指令的条数最多为( )。

A. 0

B. 2

C. 64

D. 128

20.将高级语言源程序转换为可执行目标文件的主要过程是( )。
A. 预处理→编译→汇编→链接
B. 预处理→汇编→编译→链接
C. 预处理→编译→链接→汇编
D. 预处理→汇编→链接→编译

21.下列关于中断 I/O 方式的叙述中,不正确的是( )。
A. 适用于键盘、针式打印机等字符型设备
B. 外设和主机之间的数据传送通过软件完成
C. 外设准备数据的时间应小于中断处理时间
D. 外设为某进程准备数据时 CPU 可运行其他进程

22.下列关于并行处理技术的叙述中,不正确的是( )。
A. 多核处理器属于 MIMD 结构
B. 向量处理器属于 SIMD 结构
C. 硬件多线程技术只可用于多核处理器
D. SMP 中所有处理器共享单一物理地址空间

23.下列关于多道程序系统的叙述中,不正确的是( )。
A. 支持进程的并发执行
B. 不必支持虚拟存储管理
C. 需要实现对共享资源的管理
D. 进程数越多 CPU 利用率越高

24.下列选项中,需要在操作系统进行初始化过程中创建的是( )。
A. 中断向量表
B. 文件系统的根目录
C. 硬盘分区表
D. 文件系统的索引节点表

25.进程P0​、P1​、P2​和P3​进入就绪队列的时刻、优先级(值越小优先权越高)及 CPU 执行时间如下表所示。

        若系统采用基于优先权的抢占式进程调度算法,从 0ms 时刻开始调度,到 4 个进程都运行结束为止,发生进程调度的总次数为( )。
A. 4
B. 5
C. 6
D. 7

26.系统中有三个进程P0​、P1​、P2​及三类资源 A、B、C。若某时刻系统分配资源的情况如下表所示,则此时系统中存在的安全序列的个数为( )。

A. 1        B. 2        C. 3        D. 4

27.下列关于 CPU 模式的叙述中,正确的是( )。
A. CPU 处于用户态时只能执行特权指令
B. CPU 处于内核态时只能执行特权指令
C. CPU 处于用户态时只能执行非特权指令
D. CPU 处于内核态时只能执行非特权指令

28.下列事件或操作中,可能导致进程 P 由执行态变为阻塞态的是( )。
I. 进程 P 读文件
II. 进程 P 的时间片用完
III. 进程 P 申请外设
IV. 进程 P 执行信号量的 wait () 操作
A. 仅 I、IV
B. 仅 II、III
C. 仅 III、IV
D. 仅 I、III、IV

29.某进程访问的页 b 不在内存中,导致产生缺页异常,该缺页异常处理过程中不一定包含的操作是( )。
A. 淘汰内存中的页
B. 建立页号与页框号的对应关系
C. 将页 b 从外存读入内存
D. 修改页表中页 b 对应的存在位

30.下列选项中,不会影响系统缺页率的是( )。
A. 页置换算法
B. 工作集的大小
C. 进程的数量
D. 页缓冲队列的长度

31.执行系统调用的过程涉及下列操作,其中由操作系统完成的是( )。
I. 保存断点和程序状态字
II. 保存通用寄存器的内容
III. 执行系统调用服务例程
IV. 将 CPU 模式改为内核态
A. 仅 I、III
B. 仅 II、III
C. 仅 II、IV
D. 仅 II、III、IV

32.下列关于驱动程序的叙述中,不正确的是( )。
A. 驱动程序与 I/O 控制方式无关
B. 初始化设备由驱动程序控制完成的
C. 进程在执行驱动程序时可能进入阻塞态
D. 读 / 写设备的操作是由驱动程序控制完成的

33.在 ISO/OSI 参考模型中,实现两个相邻结点间的流量控制功能的是( )。
A. 物理层
B. 数据链路层
C. 网络层
D. 传输层

34.在一条带宽为 200kHz 的无噪声信道上,若采用 4 个幅值的 ASK 调制,则该信道的最大数据传输速率是( )。
A. 200kbps
B. 400kbps
C. 800kbps
D. 1600kbps

35.若某主机的 IP 地址是 183.80.72.48,子网掩码是 255.255.192.0,则该主机所在网络的网络地址是( )。
A. 183.80.0.0
B. 183.80.64.0
C. 183.80.72.0
D. 183.80.192.0

36.下图所示网络中的主机 H 的子网掩码与默认网关分别是( )。

A. 255.255.255.192, 192.168.1.1
B. 255.255.255.192, 192.168.1.62
C. 255.255.255.224, 192.168.1.1
D. 255.255.255.224, 192.168.1.62

37.在 SDN 网络体系结构中,SDN 控制器向数据平面的 SDN 交换机下发流表时所使用的接口是( )。
A. 东向接口
B. 南向接口
C. 西向接口
D. 北向接口

38.假设主机甲和主机乙已建立一个 TCP 连接,最大段长 MSS = 1KB,甲一直有数据向乙发送,当甲的拥塞窗口为 16KB 时,计时器发生了超时,则甲的拥塞窗口再次增长到 16KB 所需要的时间至少是( )。
A. 4RTT
B. 5RTT
C. 11RTT
D. 16RTT

39.假设客户 C 和服务器 S 已建立一个 TCP 连接,通信往返时间 RTT = 50ms,最长报文段寿命 MSL = 800ms,数据传输结束后,C 主动请求断开连接。若从 C 主动向 S 发出 FIN 段时刻算起,则 C 和 S 进入 CLOSED 状态所需的时间至少分别是( )。
A. 850ms, 50ms
B. 1650ms, 50ms
C. 850ms, 75ms
D. 1650ms, 75ms

40.假设主机 H 通过 HTTP/1.1 请求浏览某 Web 服务器 S 上的 Web 页 news408.html,news408.html 引用了同目录下的 1 幅图像,news408.html 文件大小为 1MSS(最大段长),图像文件大小为 3MSS,H 访问 S 的往返时间 RTT = 10ms,忽略 HTTP 响应报文的首部开销和 TCP 段传输时延。若 H 已完成域名解析,则从 H 请求与 S 建立 TCP 连接时刻起,到接收到全部内容,所需的时间至少是( )。
A. 30ms
B. 40ms
C. 50ms
D. 60ms

二、综合应用题

41~47 小题,共 70 分。

41.(13 分)已知非空二叉树 T 的结点值均为正整数,采用顺序存储方式保存,数据结构定义如下:

typedef struct {             //MAX-SIZE为已定义常量int SqBiTNode[MAX_SIZE]; // 保存二叉树结点值的数组int ElemNum;              // 实际占用的数组元素个数
} SqBiTree;

T 中不存在的结点在数组 SqBiTNode 中用 - 1 表示。例如,对于下图所示的两棵非空二叉树T1​和T2​,

请设计一个尽可能高效的算法,判定一棵采用这种方式存储的二叉树是否为二叉搜索树,若是,则返回 true,否则,返回 false。要求:
1)给出算法的基本设计思想。(4 分)
2)根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释。(9 分)

42.(10 分)现有 n(n > 100000)个数保存在一维数组 M 中,需要查找 M 中最小的 10 个数。请回答下列问题。
1)设计一个完成上述查找任务的算法,要求平均情况下的比较次数尽可能少,简述其算法思想(不需要程序实现)。(6 分)
2)说明你所设计的算法平均情况下的时间复杂度和空间复杂度。(4 分)

43.(15 分)某 CPU 中部分数据通路如题 43 图所示,其中,GPRs 为通用寄存器组;FR 为标志寄存器,用于存放 ALU 产生的标志信息;带箭头虚线表示控制信号,如控制信号 Read、Write 分别表示主存读、主存写,MDRin 表示内部总线上数据写入 MDR,MDRout 表示 MDR 的内容输出到内部总线。

请回答下列问题。
1)设 ALU 的输入端 A、B 及输出端 F 的最高位分别为A15​、B15​及F15​,FR 中的符号标志和溢出标志分别为 SF 和 OF,则 SF 的逻辑表达式是什么?A 加 B、A 减 B 时 OF 的逻辑表达式分别是什么?要求逻辑表达式的输入变量为A15​、B15​及F15​。
2)为什么要设置寄存器 Y 和 Z?
3)若 GPRs 的输入端 rs、rd 分别为所读、写的通用寄存器的编号,则 GPRs 中最多有多少个通用寄存器?rs 和 rd 来自图中的哪个寄存器?已知 GPRs 内部有一个地址译码器和一个多路选择器,rd 应连接地址译码器还是多路选择器?
4)取指令阶段(不考虑 PC 增量操作)的控制信号序列是什么?若从发出主存读命令到主存读出数据并传送到 MDR 共需 5 个时钟周期,则取指令阶段至少需要几个时钟周期?
5)图中控制信号由什么部件产生?图中哪些寄存器的输出信号会连到该部件的输入端?

44.(8 分)假设某磁盘驱动器中有 4 个双面盘片,每个盘面有 20000 个磁道,每个磁道有 500 个扇区,每个扇区可记录 512 字节的数据,盘片转速为 7200rpm(转 / 分),平均寻道时间为 5ms。请回答下列问题。
1)每个扇区包含数据及其地址信息,地址信息分为 3 个字段。这 3 个字段的名称各是什么?对于该磁盘,各字段至少占多少位?
2)一个扇区的平均访问时间约为多少?
3)若采用周期挪用 DMA 方式进行磁盘与主机之间的数据传送,磁盘控制器中的数据缓冲区大小为 64 位,则在一个扇区读写过程中,DMA 控制器向 CPU 发送了多少次总线请求?若 CPU 检测到 DMA 控制器的总线请求信号时也需要访问主存,则 DMA 控制器是否可以获得总线使用权?为什么?

45.(7 分)某文件系统的磁盘块大小为 4KB,目录项由文件名和索引节点构成,每个索引节点占 256 字节,其中包含直接地址项 10 个,一级、二级和三级间接地址项各 1 个,每个地址项占 4 字节。该文件系统中子目录 stu 的结构如题 45 (a) 图所示,stu 包含子目录 course 和文件 doc,course 子目录包含文件 course1 和 course2。各文件的文件名、索引节点号、占用磁盘块的块号如题 45 (b) 图所示。

请回答下列问题。
1)目录文件 stu 中每个目录项的内容是什么?
2)文件 doc 占用的磁盘块的块号 x 的值是多少?
3)若目录文件 course 的内容已在内存,则打开文件 course1 并将其读入内存,需要读几个磁盘块?说明理由。
4)若文件 course2 的大小增长到 6MB,则为了存取 course2 需要使用该文件索引节点的哪几级间接地址项?说明理由。

46.(8 分)某进程的两个线程T1​和T2​并发执行 A、B、C、D、E 和 F 共 6 个操作,其中T1​执行 A、E 和 F,T2​执行 B、C 和 D。题 46 图表示上述 6 个操作的执行顺序所必须满足的约束:C 在 A 和 B 完成后执行,D 在 E 完成后执行,F 在 E 完成后执行。请使用信号量的 wait ()、signal () 操作描述T1​和T2​之间的同步关系,并说明所用信号量的作用及其初值。

47.(9 分)某网络拓扑如题 47 图所示,R 为路由器,S 为以太网交换机,AP 是 802.11 接入点,路由器的 E0 接口和 DHCP 服务器的 IP 地址配置如图中所示;H1​与H2​属于同一个广播域,但不属于同一个冲突域;H2​和H3​属于同一个冲突域;H4​和H5​已经接入网络,并通过 DHCP 动态获取了 IP 地址。现有路由器、100BaseT 以太网交换机和 100BaseT 集线器(Hub)三类设备各若干台。

请回答下列问题。
1)设备 1 和设备 2 应该分别选择哪类设备?
2)若信号传播速度为2×108m/s,以太网最小帧长为 64B,信号通过设备 2 时会产生额外的 1.5μs 的时间延迟,则H2​与H3​之间可以相距的最远距离是多少?
3)在H4​通过 DHCP 动态获取 IP 地址过程中,H4​首先发送了 DHCP 报文 M,M 是哪种 DHCP 报文?路由器 E0 接口能否收到封装 M 的以太网帧?S 向 DHCP 服务器转发的封装 M 的以太网帧的目的 MAC 地址是什么?
4)若H4​向H5​发送一个 IP 分组 P,则H5​收到的封装 P 的 802.11 帧的地址 1、地址 2 和地址 3 分别是什么?

2021 年全国硕士研究生招生考试

计算机科学与技术学科联考

计算机学科专业基础综合

(科目代码:408)

一、单项选择题

第 01~40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项符合试题要求。

01.已知头指针 h 指向一个带头结点的非空单循环链表,结点结构为[data | next],其中 next 是指向直接后继结点的指针,p 是尾指针,q 是临时指针。现要删除该链表的第一个元素,正确的语句序列是( )。
A. h -> next = h -> next -> next; q = h -> next; free(q);
B. q = h -> next; h -> next = h -> next -> next; free(q);
C. q = h -> next; h -> next = q -> next; if(p != q) p = h; free(q);
D. q = h -> next; h -> next = q -> next; if(p == q) p = h; free(q);

02.已知初始为空的队列 Q 的一端仅能进行入队操作,另外一端既能进行入队操作又能进行出队操作。若 Q 的入队序列是 1, 2, 3, 4, 5,则不能得到的出队序列是( )。
A. 5, 4, 3, 1, 2
B. 5, 3, 1, 2, 4
C. 4, 2, 1, 3, 5
D. 4, 1, 3, 2, 5

03.已知二维数组 A 按行优先方式存储,每个元素占用 1 个存储单元。若元素 A [0][0] 的存储地址是 100,A [3][3] 的存储地址是 220,则元素 A [5][5] 的存储地址是( )。
A. 295
B. 300
C. 301
D. 306

04.某森林 F 对应的二叉树为 T,若 T 的先序遍历序列是 a, b, d, c, e, g, f,中序遍历序列是 b, d, a, e, g, c, f,则 F 中树的棵数是( )。
A. 1
B. 2
C. 3
D. 4

05.若某二叉树有 5 个叶结点,其权值分别为 10, 12, 16, 21, 30,则其最小的带权路径长度(WPL)是( )。
A. 89
B. 200
C. 208
D. 289

06.给定平衡二叉树如下图所示,插入关键字 23 后,根中的关键字是( )。
A. 16
B. 20
C. 23
D. 25

07.给定如下有向图,该图的拓扑有序序列的个数是( )。
A. 1
B. 2
C. 3
D. 4

08.使用 Dijkstra 算法求下图中从顶点 1 到其余各顶点的最短路径,将当前找到的从顶点 1 到顶点 2, 3, 4, 5 的最短路径长度保存在数组 dist 中,求出第二条最短路径后,dist 中的内容更新为( )。
A. 26, 3, 14, 6
B. 25, 3, 14, 6
C. 21, 3, 14, 6
D. 15, 3, 14, 6

09.在一棵高度为 3 的 3 阶 B 树中,根为第 1 层,若第 2 层中有 4 个关键字,则该树的结点个数最多是( )。
A. 11
B. 10
C. 9
D. 8

10.设数组 S [] = {93, 946, 372, 9, 146, 151, 301, 485, 236, 327, 43, 892},采用最低位优先(LSD)基数排序将 S 排列成升序序列。第 1 趟分配、收集后,元素 372 之前、之后紧邻的元素分别是( )。
A. 43, 892
B. 236, 301
C. 301, 892
D. 485, 301

11.将关键字 6, 9, 1, 5, 8, 4, 7 依次插入初始为空的大根堆 H,得到的 H 是( )。
A. 9, 8, 7, 6, 5, 4, 1
B. 9, 8, 7, 5, 6, 1, 4
C. 9, 8, 7, 5, 6, 4, 1
D. 9, 6, 7, 5, 8, 4, 1

12.2017 年公布的全球超级计算机 TOP 500 排名中,我国 “神威・太湖之光” 超级计算机蝉联第一,其浮点运算速度为 93.0146 PFLOPS,说明该计算机每秒内完成的浮点操作次数约为( )。
A. 9.3×10^13次
B. 9.3×10^15次
C. 9.3 千万亿次
D. 9.3 亿亿次

13.已知带符号整数用补码表示,变量 x, y, z 的机器数分别为 FFFDH, FFFDH, 7FFCH,下列结论中,正确的是( )。
A. 若 x, y 和 z 为无符号整数,则z<x<y
B. 若 x, y 和 z 为无符号整数,则x<y<z
C. 若 x, y 和 z 为带符号整数,则x<y<z
D. 若 x, y 和 z 为带符号整数,则y<x<z

14.下列数值中,不能用 IEEE 754 浮点格式精确表示的是( )。
A. 1.2
B. 1.25
C. 2.0
D. 2.5

15.某计算机的存储器总线中有 24 位地址线和 32 位数据线,按字节编址,字长为 32 位。若 00 0000H~3F FFFFH 为 RAM 区,则需要512K×8位的 RAM 芯片数为( )。
A. 8
B. 16
C. 32
D. 64

16.若计算机主存地址为 32 位,按字节编址,Cache 数据区大小为 32KB,主存块大小为 32B,采用直接映射方式和回写(Write Back)策略,则 Cache 行的位数至少是( )。
A. 275
B. 274
C. 258
D. 257

17.下列寄存器中,汇编语言程序员可见的是( )。
I. 指令寄存器
II. 微指令寄存器
III. 基址寄存器
IV. 标志 / 状态寄存器
A. 仅 I、II
B. 仅 I、IV
C. 仅 II、IV
D. 仅 III、IV

18.下列关于数据通路的叙述中,错误的是( )。
A. 数据通路包含 ALU 等组合逻辑(操作)元件
B. 数据通路包含寄存器等时序逻辑(状态)元件
C. 数据通路不包含用于异常事件检测及响应的电路
D. 数据通路中的数据流动路径由控制信号进行控制

19.下列关于总线的叙述中,错误的是( )。
A. 总线是在两个或多个部件之间进行数据交换的传输介质
B. 同步总线由时钟信号定时,时钟频率不一定等于工作频率
C. 异步总线由握手信号定时,一次握手过程完成一位数据交换
D. 突发(Burst)传送总线事务可以在总线上连续传送多个数据

20.下列选项中,不属于 I/O 接口的是( )。
A. 磁盘驱动器
B. 打印机适配器
C. 网络控制器
D. 可编程中断控制器

21.异常事件在当前指令执行过程中进行检测,中断请求则在当前指令执行后进行检测。下列事件中,相应处理程序执行后,必须回到当前指令重新执行的是( )。
A. 系统调用
B. 页缺失
C. DMA 传送结束
D. 打印机缺纸

22.下列是关于多重中断系统中 CPU 响应中断的叙述,其中错误的是( )。
A. 仅在用户态(执行用户程序)下,CPU 才能检测和响应中断
B. CPU 只有在检测到中断请求信号后,才会进入中断响应周期
C. 进入中断响应周期时,CPU 一定处于中断允许(开中断)状态
D. 若 CPU 检测到中断请求信号,则一定存在未被屏蔽的中断源请求信号

23.下列指令中,只能在内核态执行的是( )。
A. trap 指令
B. I/O 指令
C. 数据传送指令
D. 设置断点指令

24.下列操作中,操作系统在创建新进程时,必须完成的是( )。
I. 申请空白的进程控制块
II. 初始化进程控制块
III. 设置进程状态为执行态
A. 仅 I
B. 仅 I、II
C. 仅 I、III
D. 仅 II、III

25.下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是( )。
I. 进程控制块
II. 时钟中断处理程序
III. 进程就绪队列
IV. 进程阻塞队列
A. 仅 II、III
B. 仅 I、IV
C. 仅 I、II、III
D. 仅 I、II、IV

26.某系统中磁盘的磁道数为 200(0~199),磁头当前在 184 号磁道上。用户进程提出的磁盘访问请求对应的磁道号依次为 184, 187, 176, 182, 199。若采用最短寻道时间优先调度算法(SSTF)完成磁盘访问,则磁头移动的距离(磁道数)是( )。
A. 37
B. 38
C. 41
D. 42

27.下列事件中,可能引起进程调度程序执行的是( )。
I. 中断处理结束
II. 进程阻塞
III. 进程执行结束
IV. 进程的时间片用完
A. 仅 I、III
B. 仅 II、IV
C. 仅 III、IV
D. I、II、III 和 IV

28.某请求分页存储系统的页大小为 4KB,按字节编址。系统给进程 P 分配 2 个固定的页框,并采用改进型 Clock 置换算法,进程 P 页表的部分内容如下表所示。

若 P 访问虚拟地址为 02A01H 的存储单元,则经地址变换后得到的物理地址是( )。
A. 00A01H
B. 20A01H
C. 60A01H
D. 80A01H

29.在采用二级页表的分页系统中,CPU 页表基址寄存器中的内容是( )。
A. 当前进程的一级页表的起始虚拟地址
B. 当前进程的一级页表的起始物理地址
C. 当前进程的二级页表的起始虚拟地址
D. 当前进程的二级页表的起始物理地址

30.若目录 dir 下有文件 file1,则为删除该文件内核不必完成的工作是( )。
A. 删除 file1 的快捷方式
B. 释放 file1 的文件控制块
C. 释放 file1 占用的磁盘空间
D. 删除目录 dir 中与 file1 对应的目录项

31.若系统中有 n(n≥2)个进程,每个进程均需要使用某类临界资源 2 个,则系统不会发生死锁所需的该类资源总数至少是( )。
A. 2
B. n
C. n + 1
D. 2n

32.下列选项中,通过系统调用完成的操作是( )。
A. 页置换
B. 进程调度
C. 创建新进程
D. 生成随机整数

33.在 TCP/IP 参考模型中,由传输层相邻的下一层实现的主要功能是( )。
A. 对话管理
B. 路由选择
C. 端到端报文段传输
D. 结点到结点流量控制

34.若下图为一段差分曼彻斯特编码信号波形,则其编码的二进制位串是( )。

A. 1011 1001        B. 1101 0001        C. 0010 1110        D. 1011 0110

35.现将一个 IP 网络划分为 3 个子网,若其中一个子网是 192.168.9.128/26,则下列网络中,不可能是另外两个子网之一的是( )。
A. 192.168.9.0/25
B. 192.168.9.0/26
C. 192.168.9.192/26
D. 192.168.9.192/27

36.若路由器向 MTU = 800B 的链路转发一个总长度为 1580B 的 IP 数据报(首部长度为 20B)时,进行了分片,且每个分片尽可能大,则第 2 个分片的总长度字段和 MF 标志位的值分别是( )。
A. 796, 0
B. 796, 1
C. 800, 0
D. 800, 1

37.某网络中的所有路由器均采用距离向量路由算法计算路由。若路由器 E 与邻居路由 A, B, C 和 D 之间的直接链路距离分别是 8, 10, 12 和 6,且 E 收到邻居路由器的距离向量如下表所示,则路由器 E 更新后的到达目的网络net1​~net4​的距离分别是( )。

目的网络

A 的距离向量

B 的距离向量

C 的距离向量

D 的距离向量

net1​

1

23

20

22

net2​

12

35

30

28

net3​

24

18

16

36

net4​

36

30

8

24

A. 9, 10, 12, 6
B. 9, 10, 28, 20
C. 9, 20, 12, 20
D. 9, 20, 28, 20

38.若客户首先向服务器发送 FIN 段请求断开 TCP 连接,则当客户收到服务器发送的 FIN 段并向服务器发送了 ACK 段后,客户的 TCP 状态转换为( )。
A. CLOSE_WAIT        B. TIME_WAIT        C. FIN_WAIT_1        D. FIN_WAIT_2

39.若大小为 12B 的应用层数据分别通过 1 个 UDP 数据报和 1 个 TCP 段传输,则该 UDP 数据报和 TCP 段实现的有效载荷(应用层数据)最大传输效率分别是( )。
A. 37.5%, 16.7%
B. 37.5%, 37.5%
C. 60.0%, 16.7%
D. 60.0%, 37.5%

40.设主机甲通过 TCP 向主机乙发送数据,部分过程如下图所示。甲在t0​时刻发送一个序号 seq = 501、封装 200B 数据的段,在t1​时刻收到乙发送的序号 seq = 601、确认序号 ack = 501、接收窗口rcvwdn = 500B 的段,则甲在未收到新的确认段之前,可以继续向乙发送的数据序号范围是( )。

A. 501~1000
B. 601~1100
C. 701~1000
D. 801~1100

二、综合应用题

第 41~47 小题,共 70 分。

41.(15 分)已知无向连通图 G 由顶点集 V 和边集 E 组成,∣E∣>0,当 G 中度为奇数的顶点个数为不大于 2 的偶数时,G 存在包含所有边且长度为∣E∣的路径(称为 EL 路径)。设图 G 采用邻接矩阵存储,类型定义如下:

typedef struct{                //图的定义int numVertices, numEdges; //图中实际的顶点数和边数char VerticesList[MAXV];   //顶点表。MAXV为已定义常量int Edge[MAXV][MAXV];      //邻接矩阵
}MGraph;

请设计算法:int IsExistEL (MGraph G),判断 G 是否存在 EL 路径,若存在,则返回 1,否则,返回 0。要求:
1)给出算法的基本设计思想。(5 分)
2)根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释。(6 分)
3)说明你所设计算法的时间复杂度和空间复杂度。(4 分)

42.(8 分)已知某排序算法如下:

void cmpCountSort(int a[], int b[], int n){int i, j, *count;count=(int *)malloc(sizeof(int)*n); //C++语言:count=new int[n];for(i=0;i<n;i++)  count[i]=0;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j])  count[j]++;else  count[i]++;for(i=0;i<n;i++)  b[count[i]]= a[i];free(count);  //C++语言:delete count;
}

请回答下列问题。
1)若有 int a [] = {25, -10, 25, 10, 11, 19}, b [6];,则调用 cmpCountSort (a,b,6) 后数组 b 中的内容是什么?(2 分)
2)若 a 中含有 n 个元素,则算法执行过程中,元素之间的比较次数是多少?(2 分)
3)该算法是稳定的吗?若是,则阐述理由;否则,修改为稳定排序算法。(4 分)

43.(15 分)假定计算机 M 字长为 16 位,按字节编址,连接 CPU 和主存的系统总线中地址线为 20 位、数据线为 8 位,采用 16 位定长指令字,指令格式及其说明如下:

格式

6 位

2 位

2 位

2 位

4 位

指令功能或指令类型说明

R 型

000000

rs

rt

rd

op1

R[rd]←R[rs] op1 R[rt]

I 型

op2

rs

rt

imm

含 ALU 运算、条件转移和访存操作 3 类指令

J 型

op3

target

PC 的低 10 位←target

其中,op1~op3为操作码,rs, rt 和 rd 为通用寄存器编号,R[r]表示寄存器 r 的内容,imm 为立即数,target 为转移目标的形式地址。请回答下列问题。
1)ALU 的宽度是多少位?可寻址主存空间大小为多少字节?指令寄存器、主存地址寄存器(MAR)和主存数据寄存器(MDR)分别应有多少位?(3 分)
2)R 型格式最多可定义多少种操作?I 型和 J 型格式总共最多可定义多少种操作?通用寄存器最多有多少个?(3 分)
3)假定op1为 0010 和 0011 时,分别表示带符号整数减法和带符号整数乘法指令,则指令 01B2H 的功能是什么(参考上述指令功能说明的格式进行描述)?若 1, 2, 3 号通用寄存器当前内容分别为 B052H, 0008H, 0020H,则分别执行指令 01B2H 和 01B3H 后,3 号通用寄存器内容各为什么?各自结果是否溢出?(4 分)
4)若采用 I 型格式的访存指令中 imm(偏移量)为带符号整数,则地址计算时应对 imm 进行零扩展还是符号扩展?(2 分)
5)无条件转移指令可以采用上述哪种指令格式?(3 分)

44.(8 分)假设计算机 M 的主存地址为 24 位,按字节编址;采用分页存储管理方式,虚拟地址为 30 位,页大小为 4KB;TLB 采用 2 路组相联方式和 LRU 替换策略,共 8 组。请回答下列问题。
1)虚拟地址中哪几位表示虚页号?哪几位表示页内地址?
2)已知访问 TLB 时虚页号高位部分用作 TLB 标记,低位部分用作 TLB 组号,M 的虚拟地址中哪几位是 TLB 标记?哪几位是 TLB 组号?
3)假设 TLB 初始时为空,访问的虚页号依次为 10, 12, 16, 7, 26, 4, 12 和 20,在此过程中,哪一个虚页号对应的 TLB 表项被替换?说明理由。
4)若将 M 中的虚拟地址位数增加到 32 位,则 TLB 表项的位数增加几位?

45.(7 分)下表给出了整型信号量 S 的 wait () 和 signal () 操作的功能描述,以及采用开 / 关中断指令实现信号量操作互斥的两种方法。

请回答下列问题。
1)为什么在 wait () 和 signal () 操作中对信号量 S 的访问必须互斥执行?
2)分别说明方法 1 和方法 2 是否正确。若不正确,请说明理由。
3)用户程序能否使用开 / 关中断指令实现临界区互斥?为什么?

46.(8 分)某计算机用硬盘作为启动盘,硬盘第一个扇区存放主引导记录,其中包含磁盘引导程序和分区表。磁盘引导程序用于选择要引导哪个分区的操作系统,分区表记录硬盘上各分区的位置等描述信息。硬盘被划分成若干分区,每个分区的第一个扇区存放分区引导程序,用于引导该分区中的操作系统。系统采用多阶段引导方式,除了执行磁盘引导程序和分区引导程序,还需要执行 ROM 中的引导程序。请回答下列问题。
1)系统启动过程中操作系统的初始化程序、分区引导程序、ROM 中的引导程序、磁盘引导程序的执行顺序是什么?
2)把硬盘制作为启动盘时,需要完成操作系统的安装、磁盘的物理格式化、逻辑格式化、对磁盘进行分区,执行这 4 个操作的正确顺序是什么?
3)磁盘扇区的划分和文件系统根目录的建立分别是在第 2)问的哪个操作中完成的?

47.(9 分)某网络拓扑如题 47 图所示,以太网交换机 S 通过路由器 R 与 Internet 互联。路由器部分接口、本地域名服务器、H1、H2 的 IP 地址和 MAC 地址如图中所示。在t0​时刻 H1 的 ARP 表和 S 的交换表均为空,H1 在此刻利用浏览器通过域名www.abc.com请求访问 Web 服务器,在t1​时刻(t1​>t0​)S 第一次收到了封装 HTTP 请求报文的以太网帧,假设从t0​到t1​期间网络未发生任何与此次 Web 访问无关的网络通信。

请回答下列问题。
1)从t0​到t1​期间,H1 除 HTTP 外还运行了哪个应用层协议?从应用层到数据链路层,该应用层协议报文是通过哪些协议进行逐层封装的?
2)若 S 的交换表结构为 <MAC 地址,端口>,则t1​时刻 S 交换表的内容是什么?
3)从t0​到t1​期间,H2 至少会接收到几个与此次 Web 访问相关的帧?接收到的是什么帧?帧的目的 MAC 地址是什么?

相关文章:

  • Linux基础指令【下】
  • EBO的使用
  • 数字智慧方案5974丨智慧农业大数据应用平台综合解决方案(79页PPT)(文末有下载方式)
  • [vscode]全局配置nim缩进
  • 【工具变量】上市公司治理水平数据集-含参考文献及dta、xlsx格式(2003-2023年)
  • ClackyAI:下一代智能云开发环境的技术革新与实践价值
  • 多节点监测任务分配方法比较与分析
  • 数字智慧方案5976丨智慧农业顶层设计建设与运营方案(59页PPT)(文末有下载方式)
  • 面经-计算机网络——OSI七层模型与TCP/IP四层模型的对比详解
  • Umi-OCR项目(1)
  • 第七章:赤 色广播计划的全面启动
  • VAO与VBO的相关操作
  • Hive数据倾斜 常见解决办法
  • DeepSeek V3 训练策略:FP8混合精度与多Token预测
  • Python 常用内置函数详解(八):对象属性操作getattr()、setattr()、delattr()、hasattr()、vars()函数详解
  • ​基于51单片机的数字温度计—可显示负数
  • esp32cam开发板的引脚使用和测试
  • 《跨越边界:探索跨端框架中通用状态管理方案设计》
  • 数据库Mysql_约束
  • 响应式布局,在飞帆平台中如此简单
  • CMG亚太总站:没有邀请韩国偶像团体举办巡回演出
  • A股2024年年报披露收官,四分之三公司盈利
  • 426.8万人次!长三角铁路创单日客发量历史新高
  • 永辉超市回应顾客结算时被“反向抹零”:整改并补偿
  • 国家医保局副局长颜清辉调任人社部副部长
  • 白玉兰奖征片综述丨国产剧集创作的此消彼长