2024 年 408 真题
本节正在编写中,敬请期待。
选择题
数据结构
1
已知带头结点的非空单链表 L 的头指针为 h,指针 p 指向 L 中间的一个链表结点(不是第一个和最后一个结点)。q=p->next, p->next=q->next, q->next=h->next, h->next=q。这段代码的功能是()。
q=p->next
, q
是 p
的下一个节点, p->next=q>next,p
的 next
指向 q
的下一个的节点, g
节点变为自
由节点, g->next=L->next,L-next=q,
将自由节点 q
插入到 L
的下一位。2
表达式 x+y*(z-u)/v 的等价后缀是( )
可以用栈模拟,也可以将其作为表达式树的中序遍历结果,进而还原二叉树,再进行后续遍历 得到后缀表达式。
3
p、q、v 都是二叉树 T 中的结点,二叉树 T 的中序遍历为…, p, v, q, …,其中 v 有两个孩子结点,则下列说法正确的是( )。
根据中序遍历结果和 v 是子树的根节点这些信息,则可以判定 p,q 分别在 v 的的左右子树上,对 于左子树而言,根据中序遍历结果为…p,则没有右孩子,同理,q 没有左孩子。或者假设 p 有右孩子 ,q 有左孩子,则中序遍历结果中 p,v 之间一定还有序列,v,q 之间也一定还有序列,和题意冲突。
4
给定无向图的邻接多重表,求顶点 b、d 的度()
根据邻接多重表还原图,由下图可知,b 的度为 2,d 的图为 4。
5
下列数据结构中,不适合直接使用折半查找的是()
I 有序链表 II 无序数组 III 有序静态链表 IV 无序静态链表
折半查找也叫二分搜索,可以在有序顺序表中应用。
6
KMP 算法使用修正后的 next 数组进行模式匹配,模式串 S = “aabaab”,当主串中某字符与 S 中某字符失去配对时,S 将向右滑动的最长距离是( )
传统 KMP 使用 next 数组,不过会存在 j=next[j]的情况,因此采用 next_val[] 来优化,处理 好 next[] 和 next_val[] 后,举例即可,比如倒数第二个元素 a 匹配失败,会回到-1 的位置,从-1 的位 置走到 4 的位置需要右滑的距离为 5 位。
下标 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
元素 | a | a | b | a | a | b |
next | -1 | 0 | 1 | 0 | 1 | 2 |
next_val | -1 | -1 | 1 | -1 | -1 | 1 |
7
一棵二叉搜索树如下图所示,K1、K2、K3 分别是对应结点中保存的关键字、三角形表示子树。则子树 T 中任一结点中保存的关键字 X 满足的是( )。
根据二叉搜索树的性质,$K_2$ 的左子树的节点关键字均小于 $K_2$,可以得出 $K_3 < K_2$,$T$ 中所有节点小于 $K_2$, 同理也可以得出 $K_3$ 的右子树节点均大于 $K_3$,即 $T$中所有节点 $> K_3$,$X$ 是 $T$ 中节点,由此可以得出 $K_3 < X < K_2$。
8
使用快速排序算法对含 N(N>=3) 个元素的数组 M 进行排序,若第一趟排序将除枢轴外的 N-1 个元素划分为 P 和 Q 两个部分,则下列叙述中,正确的是( )。
本题考察快排的原理,快排第一趟找到枢轴之后,枢轴的左边的元素即 P 块都是小于枢轴的, 枢轴的右边的元素即 Q 块是大于枢轴的,所以 P 和 Q 块间有序,然而块内未必是有序的,所以还需要 继续对 P 和 Q 两块进行递归快排。
9
已知关键字序列 28, 22, 20, 19, 8, 12, 15, 5 是大根堆(最大堆),对该堆进行两次删除操作后,得到的新堆是( )。
本题考察堆的创建和堆调整,先根据初始序列建堆,然后依次删除堆项元素,过程如下图:
10
初始有三个升序序列(3, 5)、(7, 9)、(6),若按从左至右的次序选择有序序列进行二路归并排序,则关键字之间的总比较次数是()。
本题考察归并排序的原理,首先{3,5}和{7,9)进行归并,需要比较 2 次,合并之后序列变为 (3,5,7,9},然后和{6}进行归并,需要比较 3 次,总比较次数为 5 次。
11
在外排序中,利用败者树对初始为升序的归并段进行多路归并,败者树中记录"冠军"的结点保存的是( )
外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装 入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。
外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分分 别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。
在外部排序中,利用败者树进行多路归并时,败者树中记录“冠军”的节点保存的是最小关键 字所在的归并段号。因为在多路归并排序中,我们总是希望能够快速找到所有归并段中的最小元素 ,以便将其输出到排序结果中。败者树的设计正是为了实现这个目标:在每一轮比较中,我们总是 将最小元素(即“冠军”)留在树根,而将“败者”保存在内存节点中。 A
组成原理
12
C 语言代码如下:
int i = 32777;
short si = i;
int j = si;
执行上述代码段后, j 的值为( )。
int i=32777
,赋值给 short 后,由于 short 只有 16 位,则只会保留 i 的低 16 位,同时,short
的上限为 $2^{15}-1$ 即 32767,所以 32777 在 short 类型的变量中会出现数据溢出问题,32777=32767+9,则溢
出后的二进制补码为 1000000000001001。再将此数转为 int,此时将进行符号扩展,补高 16 位的
时候取决于当前 short 的符号位,若符号位为 1,则高 16 位补 16 个 1,若符号位为 0,则高 16 位补 16 个 0
,所以本题补 16 个 1,结果为补码 1111 …. 1000 0000 0000 1001,换算成原码再计算,选 B。或者
使用排除法,最终通过补码的最高位 1 可以断定该数为负数,A、B 里面选,32777 对于 short 已经溢出,
转为 short 再符号扩展,并不只是单纯地改变子符号,故排除 A,选 B。13
将汇编语言程序中实现特定功能的指令序列定义成一条伪指令。下列选项中,CPU 能理解并直接执行的是
Ⅰ 伪指令 Ⅱ 微指令 Ⅲ 机器指令 Ⅳ 汇编指令
伪指令:伪指令不是真正的 CPU 指令,而是由汇编器识别和执行的一些特殊指令。
微指令:微指令是计算机硬件级别指令,一条机器指令所完成的操作划分成若干条微指令来完成。
机器指令:CPU 可以直接解析和执行的二进制代码。
汇编指令:低级别的编程语言,与机器指令一一对应,不过需要汇编器转换为机器指令,CPU 才能执行。
14
某科学实验中,需要使用大量的整型参数,为了在保证表数精度的基础上提高运算速度,需要选择合理的数据表示方法。若整型参数 a 和β的取值范围分别为 $-2^{20} \sim 2^{20}$、$-2^{40} \sim 2^{40}$,则下列选项中,a 和 B 最适宜采用的数据表示方法分别是( )
a 最适宜采用 32 位整数,32 位整数可以表示 $-2^{31} \sim 2^{31}-1$ 的范围,对于 a 的取值范围,可以用 32 位 整数表示,不会发生溢出或者精度损失,而且整数运算比浮点数运算更快,更省空间,所以优先使用 32 位整数而不是单精度浮点数。排除 B、D,根据 B 的取值范围,可以使用双精度浮点数存储,双精度浮点 数存储范围为 $-2^{1023} \sim 2^{1024}$,不会发生溢出问题,双精度浮点的小数精度为 15-16 位,比起单精度浮点,基 本上不会发生精度损失。
15
下列关于整数乘法运算的叙述中,错误的是( )。
两个变量的乘运算可以编译为移位及加法等指令的循环实现,这种方法称为移位-加法乘法算 法,它是一种基于二进制的乘法算法,可以用来计算两个变量的乘积。
16
对于页式虚拟存储管理系统,下列关于存储器层次结构的叙述中,错误的是()
主存一外存层次的映射方式通常采用页式映射,而不是直接映射。页式映射是一种将虚拟地址 空间分割为固定大小的单元(页)的映射方式,它将页映射到物理地址的空间的相应单元(页框)中 。页式映射的优点是减少了内外存之间的交换次数,提高了空间利用率,缺点是增加了地址转换的开 销,需默维护页表。
17
某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址为 32 位,主存地址为 30 位,页大小为 1 KB。若 TLB 共有 32 个表项,采用 4 路组相联映射方式,则 TLB 表项中标记字段的位数至少是()
根据题意可知,虚拟地址为 32 位,主存地址为 30 位,页大小为 1KB,因此,虚拟页号为 32-10= 22 位,物理页号为 30-10=20 位。TLB 共有 32 个表项,采用 4 路组相联映射方式。因此,TLB 共有 32/4=8 组 ,每组有 4 路。索引字段为 $log_{2}8 = 3$ 位。标记字段位数=虚拟页号位数-索引字段位数=22-3=19 位。
18
下列事件中,不是在 MMU 地址转换过程检测的是()
MMU 地址转换过程中,会检测以下时间:访问越权、页面缺失、TLB 缺失。Cache 缺失不是在 MU 地址转换过程中检测的,而是在 CU 访问主存数据检测的。
19
5 段流水线 RISC 说法错误的是( )。
5 段流水线 RISC 是一种将指令执行过程分为五个阶段的流水线结构,这五个阶段分别是取指 (IF)、译码(ID)、执行(EX)、访存(MEM)和写回(WB)。
数据冒险是指在流水线中,一个指令需要使用前面一个或多个指令的执行结果作为操作数,但是这 些结果还没有准备好,导致流水线暂停或错误的情况。
解决数据冒险的方法有几种:转发或旁路、插入空操作或气泡、调整指令顺序。
20
存储器总线的时钟频率为 420MHz,总线宽度为 64 位,每个时钟周期传送 2 次数据,支持突发传输,最多传 8 次,第一个时钟传地址和读写命令,从第 4~7 个始终连续传 8 次。总线带宽最大传输速率为( )。
时钟频率位 120MHz,总线宽度位 64 位即 8B,第一个时钟传地址和读写命令,从第 4~7 个始 终连续传 8 次,实际上就是 7 个时钟周期传输 8 次数据,共 8B8=64B,总线带宽最大传输速率为: 420MHz64B/7=3.84GB/s
21
关于中断 I/O 方式,错误的是( )。
中断是指外部设备或者程序需要 CPU 的服务时,向 CPU 发出一个信号,请求 CPU 暂停当前 的任务,转而处理中断请求的情况。
中断响应顺序是指当同时有多个中断请求时,CPU 按照一定的优先级顺序来选择响应哪个中断的 规则。
中断屏蔽字只能控制中断的开关,而不能控制中断的顺序,中断的顺序由中断的优先级决定, 优先级高的中断洗被响应,优先级低的中断后被响应。
22
DMA 方式中,DMA 控制器控制的数据传输通路位于( )。
在 DMA 方式中,DMA 控制器控制的数据传输通路位于设备接口和主存之间。这是因为 DMA (Direct Memory Access,直接存储器访问)的主要功能是在外设和存储器之间或者存储器和存 储器之间提供高速数据传输。
操作系统
23
下面关于中断和异常的说法中,错误的是( )。
在 DMA 方式中,DMA 控制器控制的数据传输通路位于设备接口和主存之间。这是因为 DMA (Direct Memory Access,直接存储器访问)的主要功能是在外设和存储器之间或者存储器和存 储器之间提供高速数据传输。
24
下面关于中断和异常的说法中,错误的是( )。
当用户终止进程时,不一定终止子进程。因为子进程的生命周期并不总是与父进程紧密 相关联,在某些情况下,即使父进程被终止,子进程也可以继续运行,如孤儿进程和僵尸进程。
25
在支持页式存储管理的系统中,进程切换时 OS 要执行( )。
Ⅰ. 更新 PC(程序计数器) 值 Ⅱ. 更新栈基址寄存器值(ebp) Ⅲ. 更新页表基址寄存器值
Ⅰ. 更新程序计数器的值:程序计数器存储了下一条要执行的指令的地址。当进程切换时 ,操作系统需要更新程序计数器的值,以便于新的进程能从正确的位置开始执行。
Ⅱ. 更新栈基址寄存器的值:栈基址寄存器存储了当前进程栈的基址。当进程切换时,操作系统 需要更新栈基址寄存器的值,以确保新的进程使用正确的栈。
Ⅲ. 更新页表基址寄存器值:页基址寄存器存储了当前进程的页表基址。当进程切换时,操作系 统需要更新页基址寄存器的值,以确保新的进程能正确地访问其内存空间。
26
文件系统需要额外的外存空间记录空闲块的位置,占用外存空间大小与当前空闲块数量无关的是()。
A. 文件系统需要额外的外存空间记录空闲块的位置,占用外存空间大小与当前空闲块数 量无关的是位示图。位示图是一种常用的记录空闲块位置的方法,它使用一个位来表示一个块是 否空闲。位示图的大小取决于磁盘的总块数,而与当前的空闲块数量无关。
B. 空闲表:空闲表是一种记录磁盘空闲块位置的方法它使用一个表来记录空闲块的位置。空闲 表的大小会随着空闲块的数量的变化而变化。
C. 成组链接:成组链接是一种记录该组中其他块的位置。成组链接的大小会随着空闲块数量的变 化而变化。
D. 空闲链表:空闲链表是一种记录酸盘空闲块位置的方法,它使用一个链表来记录所有空闲块的 位置。空闲链表的大小会随着空闲块数量的变化而变化。
27
回收分区时,仅合并大小相等的空闲分区的算法是( )。
A. 伙伴算法是一种特殊的内存分配算法,他在分配和回收内存时,只合并大小相等的空 闲分区。这种算法的优点是简单且执行速度快,但可能会导致内存碎片:
B. 最佳适应算法:它在分配内存时,会选择大小最接近所需的空闲分区。这种算法的优点是可以 减少内存的浪费,但可能会导致大量的小碎片。
C. 最坏适应算法:它在分配内存时,会选择最大的空闲分区。这种算法的优点是可以减沙内存的 碎片,但可能会导致大量的大碎片。
D.首次适应算法:它在分配内存时,会选择第一个满足所需的空闲分区。这种算法的优点是简单 且执行速度快,但可能会导致内存的碎片。
28
若进程 P 中有一个线程 T,打开文件后获得 fd,再创建线程 Ta、Tb,则线程 Ta、Tb 可共享的资源是( )。 Ⅰ. 进程 P 的地址空间 Ⅱ.线程 T 的栈 Ⅲ. fd
Ⅰ. 进程 P 的地址空间:在同一进程中的所有线程共享该进程的地址空间。这意味着,线程 Ta 和 Tb 可以访问进程 P 的全局变量,因为这些变量存储在进程的地址空间中。此外,如果线程 T 在 堆上分配了内存,那么线程 T 和 Tb 也可以访问这些内存,因为堆是存储在进程的地址空间中的。
Ⅱ. 线程 T 的栈:每个线程都有自己的栈,这是线程的私有资源,不会被其他线程共享。栈用于存 储函数调用的局部变量和返回地址。由于每个线程可能有不同的函数调用序列,因此每个线程需 要由自己的栈,因此,线程 Ta 和 Tb 不能访问线程 T 的栈。
Ⅲ. 文件描述符 fd:在同女进程中的所有线程共享该进程打开的文件描述符。文件描述符是一个 整数,用于表示进程打开的文件。当线程打开一个文件时,操作系统会返回一个文件描述符,然 后线程 T、T 和 Tb 都可以使用这个文件描述符来读写该文件,这是因为,尽管每个线程有自己的栈 ,但是它们共享其余的进程资源,包括文件描述符。
29
以下系统调用中,包含文件按名查找功能的系统调用是( )。
A. open()系统调用用于打开一个文件。它需要一个文件名作为参数,因此它包含了按名 查找文件的功能。如果文件存在并且进程有足够的权限,open()会成功打开文件并返回一个文件 描述符,否则,它会返回一个错误。
B. read()系统调用用于从已打开的文件中读取数据。
C. write()系统调用用于向已打开的文件中写入数据。
D. close()系统调用用于关闭已打开的文件。
30
RR(时间片轮转调度算法)调度,时间片为 5ms,有 10 个进程,初始状态均处于就绪队列,执行结束前仅处于执行态或就绪态,队尾进程 P 所需 CPU 时间最短,为 25ms,不考虑系统开销,则 P 的周转时间为( )。
由于使用的是轮转调度算法,进程即在每次执行一个时间片后,都需要重新回到就绪队 列的末尾等待下一次的时间片。所以,实际上,进程 P 的每一个时间片之间都有一个完整的轮转 周期的等待时间:105ms=50ms,进程 P 需要执行 25/5 个时间片,所有中间有 4 个完整的轮转周期 再加上 P 的周转时间为,总共需要 5 个轮转周期:550ms=250s。
31
键盘中断服务例程执行结束时,所输入的数据存放位置是() 。
键盘中断服务例程执行结束时,所输入的数据存放位置是内核缓冲区,当键盘中断发 生时,操作系统会暂停当前正在执行的任务,转而执行键盘中断服务例程。这个例程会从键盘 控制器读取输入的数据,并将其存放在内核缓冲区中,然后当用户程序准备好读取数据时,它 可以从内核缓冲区中获取。
32
磁道数 400(号为 0~399),用循环扫描算法(CSCAN)进行调度。完成对 200 号磁道的请求后,磁头向磁道号减小的方向移动,若还有 7 个请求,磁道号分别为 300,120,110,0,160,210,399,则完成上述请求后磁头移动的距离是()
在 CSCAN 中,磁头会在一个方向上移动,直到达到磁道的一端,然后立即返回到另一 端,再次开始扫描。
首先磁头会移动到 160 号磁道,然后依次是 120 号、110 号、0 号,接着磁头移动到开头,然后向 磁道号减少的方向移动:依次移动到 399 号、300 号、210 号,完成所有请求后,磁头移动的总 距离为:
200-160=40;160-110=50;110-0=110;399-0=399;399-300=90;300-210=90;
磁头移动的总距离为 40+50+110+399+99+90=788
计算机网络
33
若分组交换网络及每段链路的带宽如下图,则 H1 到 H2 的最大吞吐量约为()。
【解析】H1 和 H2 两端的最大传输速率为 10Mbps,虽然中间的路由器最大传输速率为 1000Mbps, 但是根据网路最大流算法,HI 和 H2 的最大吞吐量等价于最大流,最大流为 1OMbps。
34
在下列二进制数字调制方法中,需要 2 个不同频率载波的是()。
数字调制方法中没有 ASP。
B.PSK:相位移位键控是一种数字调制计数,它通过改变载波信号的相位来表示二进制数据。在 这种调制方式中,只需要一个固定频率的载波。
C. FSK:频率移位键控,是一种数字调制计数,它通过改变载波信号的频率来表示二进制数据。 在这种调制方式中,需要两个不同频率的载波,一个表示二进制 0,另一个表示二进制。
D. DPSK:差分相位移位键控是一种相位调制技术。
35
如下图的支持 VLAN 划分的交换机,已按端口划分了 3 个 VLAN。部分端口连接主机的 IP 和 MAC 地址如图示,ARP 表结构为 <IP 地址,MAC 地址,TTL>
。下列选项中,不会出现在 ARP 表中的是( )
VLAN (Virtual Local Area Network) 虚拟局域网技术可以把同一物理局域网内的不同用户逻辑地划分成不同的广播域。位于同一 VLAN 的主机之间可以相互通信,位于不同 VLAN 的主机之间不能直接通信。
ARP (Address Resolution Protocol) 地址解析协议,是根据 IP 地址获取物理地址的一个 TCP/IP 协议。主机发送信息时将包含目标 IP 地址的 ARP 请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该 IP 地址和物理地址存入本机 ARP 缓存中并保留一定时间,下次请求时直接查询 ARP 缓存以节约资源。
因此,ARP 协议可以在同一 VLAN 中起作用。
由图可知,VLAN1 中包含 H1、H2、H3 和 H4;VLAN2 中包含 H5;VLAN3 中包含 H6 和 H7。
A 和 H2 有关,H2 和 H4 都位于 VLAN1 中,因此该项会出现在 H4 的 ARP 表中。
B 和 H1 有关,H1 和 H4 都位于 VLAN1 中,因此该项会出现在 H4 的 ARP 表中。
C 和 H3 有关,H3 和 H4 都位于 VLAN1 中,因此该项会出现在 H4 的 ARP 表中。
D 和 H6 有关,H6 位于 VLAN3 中,而 H4 都位于 VLAN1 中,两者不在同一个 VLAN 中,因此该项不会出现在 H4 的 ARP 表中。
本题选 D。
36
在采用 CSMA/CA 的 802.11 无线局域网中,DIFS=128us,SIFS=28us,RTS、CTS 和 ACK 帧的传输时延分别是 3us,2us 和 2us,忽略信号传播时延,若主机 A 欲向 AP 发送一个总长度为 1998B 的数据帧,无线链路带宽为 54Mbps,则隐藏站 B 到 AP 发送的 CTS 帧时,没置的网络分配向量 NAV 的值是()
在 CSMA/CA 的 802.11 无线局域网中,网路分配向量(NAW)是用来告诉其他节点预计要占 用无线媒体多长时间的一种机制。在发送 TS(请求发送)和 CTS(清除发送)帧时,发送节点会 在帧头中包含一个持续时间字段,这个字段表示从发送当前帧到接收到最后一个 ACK 帧所需的时 间。其他节点在接收到 RTS 或 CTS 帧后,会根据这个持续时间字段设置自己的 NAV,从而避免在这 段时间内发送数据,防止发生冲突。
NAV 的时间就是其他节点推迟访问的时间,约等于 SIFS 时间+数据发送时间+SIFS 时间+ACK 帧传播 时延。
根据题目中的信息,我们可以计算出设置 NAV 的值。首先,我们需要计算发送数据顿所需的时间 数据帧的总长度为 1998 部,无线链路带宽为 54bps,所以发送数据帧所需的时间为:1998B/ 54Mbps=296μs,则总时间=281s+296μs+28μs+2μs=354μs
37
主机甲通过选择重传(SR)滑动窗口协议向主机乙发送帧的部分过程如下图所示。F 为数据帧,ACKx 为确认帧,x 是位数为比特的序号。乙只对正确接收的数据帧进行独立确认。发送窗口与接收窗口大小相 同且均为最大值。甲在 t1 时刻和 t2 时刻发送的数据帧分别是( )
在 $t_1$ 时刻主机甲接收到了主机乙发送的 ACKO,暂时没有出错的帧,所以继续发送下一 个数据帧 F4:在 $t_2$ 时刻主机甲收到了 F1 超时的错误,根据选择重传协议,发送方只需要重传出 错的帧,而不是所有的帧,所以只需要重新发送 F1。
38
假设主机 H 通过 TCP 向服务器发送长度为 3000B 的报文,往返时间 RTT=10ms,最长报文段寿命 MSL=30s,最大报文段长度 MSS=1000B,忽略 TCP 段的传输时廷,报文传输结束后 H 首先请求断开连接, 则从 H 请求建立 TCP 连接时刻起,到 H 进入 CLOSED 状态为止,所需时间至少是( )
在 TCP 连接中,从建立连接到关闭连接的过程包括以下步骤:
- 建立链接:这个过程通常为称为三次握手,SYN、SYN-ACK、ACK,需要一个往返时间 RTT。
- 数据传输:主机日向服务器发送长度为 3000B 的报文。由于最大报文段长度 MSS=1000B,第一 次拥塞窗口为 1 发送 1000B,第二次拥塞窗口为 2 发送 2000B,所以一共消耗 2 个最长报文段寿 命,2 个 RTT。
- 关闭连接:这个过程通常称为四次挥手 FIN、ACK、FIN、ACK。
第一次挥手和第三次挥手构成一个 RTT,第二次和第三次是连续发送的,第四次发出去的时候 和客户端等待的 2SL 时间重叠,所以需要 1 个 RTT。
所需时间 1RTT+2RTT+1RTT+2MSL=4RTT+2MSL。
将 RTT=10ms=0.01s 和 MSL=30s 代入上式,得到 60.04s。
39
若 UDP 协议在计算校验和过程中,计算机得到中间结果为 1011 1001 1011 0110 时,还需要加上最后 一个 16 位数 0110 0101 1100 0101,则最终计算得到的校验和是()
此处为解析 UDP 是一种传输层协议,UDP 校验和计算的步骤如下:
将 UDP 首部和 UDP 数据字段合并成一个伪首部和一个伪数据字段。伪首部的内容包括源 IP 地址、目 的 IP 地址、协议类型、UDP 数据长度。伪数据字段的内容 UDP 首部和数据字段本身。
对伪首部和伪数据字段进行 16 位的字节级求和,得到一个结果。
对结果进行反码运算,得到最终的校验和。
1011 1001 1011 0110
+ 0110 0101 1100 0101
---------------------
10001 1111 0111 1011
最高位产生进位所以需要在末尾加 1,可得:0001111101111100。
取反可得:1110 0000 1000 0011
40
若浏览器不支持并行 TCP 连接,使用非持久的 HTTP/1.0 协议请求浏览 1 个 web 页,该页中引用同一 个网站上 7 个小图像文件,则从浏览器传输 web 页请求建立 TCP 连接开始,到接收完所有内容为止,所 需要的往返时间 RTT 数至少是()
在 HTTP/1.0 协议中,如果浏览器不支持并行 TCP 连接,那么每个请求(包括主页面和 每个图像文件)都需要单独建立一个 TCP 连接。每个 TCP 连接的建立都需要 1 个往返时间 RTT, 因此,对于主页面和 7 个图像文件的请求,总共需要 8 个 RTT。此外,每个 TCP 连接在数据传输 完成后都需要关闭,每个关闭连接也需要一个 RTT,共 8 个 RTT。所以从浏览器为传输 Web 页请 求建立 TCP 连接开始,到接收完所有内容为所需要的往返时间 RTT 数至少是 8(建立连接) +8(关闭连接)= 16。
解答题
数据结构
41
2023 年 10 月 26 日,神州十七号载人飞船发射取得圆满成功,再次彰显了中国航天事业的辉煌成就。 载人航天工程是包含众多子工程的复杂系统工程,为了保证工程的有序开展,需要明确各子工程的前导工 程。以协调各子工程的实施。该问题可以简化、抽象为有向图的拓扑序列问题。已如有向图 G 采用邻接矩 阵存储,类型定义如下:
typedef struct //图的类型定义
{
int numVertices, numEdges; //图的顶点数和有向边数
char verticesList[MAXV]; //项点表,MAXV 为以定义常量
int Edge[MAXV][MAXV]; //邻接矩阵
} MGraph
请设计算法:int uniquely(MGraph G)。判定 G 是否存在唯一的拓扑序列,若是则返回 1,否则返回 0。 要求:
(1) 给出算法的基本设计思想(4 分)
(2) 根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释(9 分)
42
将关键字 $20,3,11,18,9,14,7$ 依次存储到长度为 $11$ 的散列表 $HT$ 中,散列函数为 $H(key)=(key×3)\%11$,$H0$ 为初始散列地址,$H_1$、$H_2$、$H_3$、$\cdots$、$H_k$ 分别为第 $1$ 次冲突、第 $2$ 次冲突、第 $3$ 次冲突、$\cdots$、第 $k$ 次冲突时探测的地址。$H_k = (H_0 + k^2) \% 11$。请回答下列问题:
(1) 画出所构造的 $HT$。并计算 $HT$ 的域装因子(6 分)
(2) 给出在 $HT$ 中查找关键字 14 的关键字比较序列(2 分)
(3) 在 $HT$ 中查找关键字 8,确认查找失败时的散列地址是多少?(2 分)
组成原理
43
假定计算机 M 字长为 32 位。按字节编址,采用 32 位定长指令字,指令 add slli 和 lw 的格式、编码和功能说明如题 43(a) 图所示。
其中 R[x]表示通用寄存器 x 的内容,M[x]表示地址为 x 的存储单元内容,shamt 为移位位数,imm 为补码表示的偏移量。题 43(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 指令处理的是无符号整数,则应根据哪个标志判断是否溢出(3 分)
(3) 执行 slli 指令时,控制信号 Ext 的取值可以是 0 也可以是 1,为什么?(2 分)
(4) 执行 lw 指令时,控制信号 Ext、ALUctr 的取值分别是什么?(2 分)
(5) 若一条指令的机器码是 A040 A103H,则该指令一定是 lw 指令,为什么?(2 分)
(6) 若执行该指令时,R[01H]=FFFF A2D0H,则所读取数据的存储地址是多少?(2 分)
44
对于题 43 中的计算机 M,C 语言程序Р包含的语句 sum+=a[i];
,在 M 中对应的指令序列 S 如下:
slli r4, r2, 2 // R[r4] <- R[r2]<<2
add r4, r3, r4 // R[r4] <- R[r3]+R[r4]
lw r5, 0(r4) // R[r5] <- M[R[r4]+0]
add r1, r1, r5 // R[r1] <- R[r1]+R[r5]
已知变量 i,sum 和数组 a 都为 int 型,通用寄存器 r1 - r5 的编号为 01H-05H。请回答下列问题。
(1)根据指令序列 s 中每条指令的功能,写出存放数组 a 的首地址、变参 i 和 sum 的通用寄存器编号(3 分)
(2)已知 M 为小端方式,计算机采用页式存储管理方式。页大小为 4KB。若执行到指令序列 s 中第 1 条指令时,i=5 且 r1 和 r3 的内容分别为 0000 1332H 和 0013 DFF0H。从地址 0013 DFF0H 开始存储单元,内容如题 44 图所示。则执行 sum+=a[i];
语句后。a[i] 的地址、a[i] 和 sum 的机器数分别是什么(用十六进制表示)?a[i]所在页的页号是多少?在此次执行中,数据组 a 至少存放在几页中?(5 分)
(3)指令"slli r4, r2, 2"的机器码是什么(用十六进制表示)?若数组 a 改为 short 类型,则指令序列存到 S 中 slli 指令的汇编形式应是什么?
操作系统
45
某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址和物理地址的长度均为 32 位,页表项的大小为 4 字节,页大小为 4MB,虚拟地址结构如下:
进程Р的页表起始虚拟地址为 B8C0 0000H ,被装载到从物理地址 6540 0000H 开始的连续主存空间中。 请回答下列,用十六进制表示:
(1)若 CPU 在执行进程 P 的过程中,访问虚拟地址 1234 5678H 时发生了缺页异常,经过缺页异常处理和 MMU 地式转换后得到的物理地址是 BAB4 5678H。在此次缺页异常的处理中,需要为新缺页分配页框并更新相应的页表项,则该页表项的虚拟地址和物理地址分别是什么?该页表项中的页框号更新后的值是什么?(3 分)
(2)进程Р的页表所在页的页号是什么?该页对应的页表项的虚拟地址是什么?该页表项中的页框号是多少?(4 分)
46
计算机系统中的进程之间往往需要相互协作以完成一个任务,在某网络系统中缓冲区 B 用于存放一个数据分组,对 B 的操作有 C1、C2 和 C3。将一个数据分组写入 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 分)
计算机网络
47
网络空间是继陆海空地之后的"第五疆域",网络技术是网络疆域建设与治理的基础。路由算法与协议是网络核心技术之一。对其准确认知,合理选择与应用,对网络建设十分重要。假设现有互联网中的 4 个自治系统互连拓扑示意图如题 47 图所示。其中,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.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 分)