2019 年计算机学科专业基础综合全国联考卷

                     

贡献者: xzllxls

1. 一、单项选择题

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

   1.设 $n$ 是描述问题规模的非负整数,下列程序段的时间复杂度是

x=0;
while(n>=(x+1)*(x+1))
    x=x+1;
A. $O(logn)$ $\quad$ B.$O(n)$ $\quad$ C.$O(n)$ $\quad$ D.$O(n^2)$

   2. 若将一棵树 $T$ 转化为对应的二叉树 $BT$,则下列对 $BT$ 的遍历中,其遍历序列与 $T$ 的后根遍历序列相同的是
A.先序遍历 $\quad$ B.中序遍历 $\quad$ C.后序遍历 $\quad$ D.按层遍历

   3. 对 $n$ 个互对不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 $n$ 的值
A.56 $\quad$ B.57 $\quad$ C. 58 $\quad$ D.60

   4. 在任意一棵非平衡二叉树(AVL 树)$T_1$ 中,删除某结点 $v$ 之后形成平衡二叉树 $T_2$,再将 $v$ 插入 $T_2$ 形成平衡二叉树 $T_3$。下列关于 $T_1$ 与 $T_3$ 的叙述中,正确的是
I .若 $v$ 是 $T_1$ 的叶结点,则 $T_1$ 与 $T_3$ 可能不相同
II .若 $v$ 不是 $T_1$ 的叶结点,则 $T_1$ 与 $T_3$ 定不相同
III。若 $v$ 不是 $T_1$ 的叶结点,则 $T_1$ 与 $T_3$ 一定相同
A.仅 I $\quad$ B.仅 H $\quad$ C.仅 I , II $\quad$ D.仅 I、III

   5.下图所示的 AOE 网表示一项包含 8 个活动的工程。活动 d 的最早开始时间和最迟开始时间分别是

图
图 1:第 5 题图

   A.1 $\quad$ B.2 $\quad$ C.3 $\quad$ D.4

   6.用有向无环图描述表达式 $(x+y)*(x+y)/x$,需要的顶点个数至少是
A.5 $\quad$ B. 6 $\quad$ C.8 $\quad$ D.9

   7.选择一个排序算法时,除算法的时空效率外。下列因素中,还需要考虑的是
I.数据的规模 $\quad$ II.数据的存储方式
III.算法的稳定性 $\quad$ IV.数据的初始状态
A.仅 II $\quad$ B.仅 I、II
C.仅 II、III.IV $\quad$ D. I、II、III、IV

   8.现有长度为 $11$ 且初始为空的散列表 $HT$,散列函数是 $H(hey)= key\%7$,采用线性探查(线性探测再散列)法解决冲突将关键字序列 $87$,$40$,$30$,$6$,$11$,$22$,$98$,$20$ 依次插人到 $HT$ 后,$HT$ 查找失败的平均查找长度是
A.4 $\quad$ B.5.25
C.6 $\quad$ D.6.29

   9.设主串 T=“abaabaabecabaabe" ,模式申 S=“abaabe" ,采用 KMP 算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是
A.9 $\quad$ B.10 $\quad$ C.12 $\quad$ D.15

   10.排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一 “趟”。下列序列中,不可能是快速排序第二趟结果的是
A. 5,2,16,12,28,60,32,72
B. 2,16,5,28,12 ,60,32,72
C. 2,12,16,5,28,32,72,60
D. 5,2,12,28,16,32,72,60

   11.设外存上有 120 个初始归并段,进行 12 路归并时,为实现最佳归④g-620 并,需要补充的虚段个数是
A.1 $\quad$ B.2 $\quad$ C.3 $\quad$ D.4

   12.下列关于冯。诺依曼结构计算机基本思想的叙述中,错误的
A.程序的功能都通过中央处理器执行指令实现
B.指令和数据都用二进制表示,形式上无差别
C.指令按地址访问,数据都在指令中直接给出
D.程序执行前,指令和数据需预先存放在存储器中

   13.考虑以下 C 语言代码:

unsigned short usi = 65535;
short si = usi;

   14.下列关于缺页处理的叙述中,错误的是
A.缺页是在地址转换时 CPU 检测到的-种异常
B.缺页处理由操作系统提供的缺页处理程序来完成
c.缺页处理程序根据页故障地址从外存读入所缺失的页
D.缺页处理完成后回到发生缺页的指令的下一条指令执行

   15. 某计算机采用大端方式,按字节编址。某指令中操作数的机器数为 1234 FFOOH,该操作数采用基址寻址方式,形式地址(用补码表示)为 FFI2H,基址寄存器内容为 F000 0000H,则该操作数的 LSB(最低有效字节)所在的地址是
A. F000 FFI2H
B. F000 FF15H
C. EFFF FF12H
D. EFFF FF15H

   16.下列有关处理器时钟脉冲信号的叙述中,错误的是
A.时钟脉冲信号由机器脉冲源发出的脉冲信号经整形和分频后形成
B.时钟脉冲信号的寬度称为时钟周期,时钟周期的倒数为机器主频
C.时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定
D.处理器总是在每来一个时钟脉冲信号时就是开始执行一条新的指令

   17.某指令功能为 $R[r2]$←$R[r1]+M[R[r0]]$,其两个源操作数分别采用寄存器、寄存器间接寻址方式。对于下列给定部件,该指令在取数及执行过程中需要用到的是
I.通用寄存器组(GPRs)$\quad$ II.算术逻辑单元(ALU)
III.存储器(Memory)$\quad$ IV.指令译码器(ID)
A.仅 I、I $\quad$ B.仅 1、1、I
C.仅 I、M、IV $\quad$ D.仅 I、I、IV

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

I1: add s2, sl, s0     // R[s2]←R[s1] + R[s0]
I2: load s3, 0(t2)     // R[s3]←M[R[[2] + 0]
I3: add s2, s2 s3      // R[s2]←-R[s2] + R[s3]
I4: store s2, 0(t2)    // M[R[t2] + 0]←R[s2]
下列指令对中,不存在数据冒险的是
A. I1 和 13 $\quad$ B.12 和 I3 $\quad$ C.12 和 14 $\quad$ D.I3 和 I4

   19.假定-台计算机采用 3 通道存储器总线,配套的内存条型号为 DDR3-1333,即内存条所接插的存储器总线的工作频率为 1333 MHz、总线宽度为 64 位,则存储器总线的总带宽大约是
A. 10.66 GB/s $\quad$ B. 32 GB/s $\quad$ C.64 GB/s $\quad$ D.96 GB/s

   20.下列关于磁盘存储器的叙述中,错误的是
A.磁盘的格式化容量比非格式化容量小
B.扇区中包含数据、地址和校验等信息
C.磁盘存储器的最小读写单位为一个字节
D.磁盘存储器由磁盘控制器磁盘驱动器和盘片组成

   21.某设备以中断方式与 CPU 进行数据交换,CPU 主频为 1 GHz,设备。接口中的数据缓冲寄存器为 32 位,设备的数据传输率为 50 kB/s。若每次中断开销(包括中断响应和中断处理)为 1000 个时钟周期,则 CPU 用于该设备输入/输出的时间占整个 CPU 时间的百分比最多是
A.1.25% $\quad$ B.2.5% $\quad$ C.5% $\quad$ D. 12.5%

   22.下列关于 DMA 方式的叙述中,正确的是
I. DMA 传送前由设备驱动程序设置传送参数
II. 数据传送前由 DMA 控制器请求总线使用权
III. 数据传送由 DMA 控制器直接控制总线完成
IV. DMA 传送结束后的处理由中断服务程序完成
A.仅 I、I $\quad$ B.仅 1、M、IV $\quad$ C.仅 I、M、IV $\quad$ D. I、I、I、IV

   23.下列关于线程的描述中,错误的是
A.内核级线程的调度由操作系统完成
B.操作系统为每个用户级线程建立一个线程控制块
C.用户级线程间的切换比内核级线程间的切换效率高
D.用户级线程可以在不支持内核级线程的操作系统上实现

   24.下列选项中,可能将进程唤醒的事件是
I. I/O 结束 $\quad$ II.某进程退出临界区
III.当前进程的时间片用完
A.仅 I $\quad$ B.仅 III $\quad$ C.仅 I、II $\quad$ D.I、II、III

   25.下列关于系统调用的叙述中,正确的是
I.在执行系统调用服务程序的过程中,CPU 处于内核态
II.操作系统通过提供系统调用避免用户程序直接访向外设
III.不同的操作系统为应用程序提供了统一的系统调用接口
IV.系统调用是操作系统内核为应用程序提供服务的接口 A.仅 I、IV $\quad$ B.仅 II、III $\quad$ C.仅 I、II、IV $\quad$ D.仅 I、III、IV

   26.下列选项中,可用于文件系统管理空闲磁盘块的数据结构是
I.位图 $\quad$ II.索引节点
III.空闲磁盘块链 $\quad$ IV.文件分配表(FAT)
A.仅 I、II $\quad$ B.仅 I、III、IV
C.仅 I、III $\quad$ D.仅 II、III、IV

   27.系统采用二级反馈队列调度算法进行进程调度。就绪队列 Q1 采 用时间片轮转调度算法,时间片为 10 ms;就绪队列 Q2 采用短进程 优先调度算法;系统优先调度 Q1 队列中的进程,当 Q1 为空时系统 才会调度 Q2 中的进程;新创建的进程首先进人 QI;Q1 中的进程 执行一个时间片后,若未结束,则转入 Q2。若当前 Q1 .Q2 为空,系 统依次创建进程 PI、P2 后即开始进程调度 P1、P2 需要的 CPU 时 间分别为 30 ms 和 20 ms,则进程 PI、P2 在系统中的平均等待时 间为
A.25 ms $\quad$ B.20 ms $\quad$ C.15 ms $\quad$ D. 10 ms

   28.在分段存储管理系统中,用共享段表描述所有被共享的段。若进 程 PI 和 P2 共享段 S,下列叙述中,错误的是
A. 在物理内存中仅保存一份段 S 的内容
B. 段 S 在 P1 和 P2 中应该具有相同的段号
C. P1 和 P2 共享段 S 在共享段表中的段表项
D. P1 和 P2 都不再使用段 S 时才回收段 S 所占的内存空间

   29.某系统采用 LRU 页置换算法和局部置换策略,若系统为进程 P 预 分配了 4 个页框,进程 P 访问页号的序列为 0,1,2,7,0,5,3,5,0, 2,7 ,6,则进程访问上述页的过程中,产生页置换的总次数是
A.3 $\quad$ B.4 $\quad$ C.5 $\quad$ D.6

   30.下列关于死锁的叙述中,正确的是
I.可以通过剥夺进程资源解除死锁
II.死锁的预防方法能确保系统不发生死锁
III.银行家算法可以判断系统是否处于死锁状态
IV.当系统出现死锁时,必然有两个或两个以上的进程处于阻塞态
A.仅 II、III $\quad$ B.仅 I、II、IV $\quad$ C.仅 I、II、III $\quad$ D.仅 I、III、IV

   31. 某计算机主存按字节编址,采用二级分页存储管理,地址结构如下所示
页目录号(10 位)$\qquad$ 页号(10 位)$\qquad$ 页内偏移(12 位)
虚拟地址 2050 1225H 对应的页目录号、页号分别是
A.081H ,101H $\qquad$ B.081H. ,401H
C.201H、101H $\quad$ D.201H、401H

   32.在下列动态分区分配算法中,最容易产生内存碎片的是
A.首次适应算法 $\quad$ B.最坏适应算法
C.最佳适应算法 $\quad$ D.循环首次适应算法

   33.OSI 参考模型的第 5 层(自下而上)完成的主要功能是
A.差错控制 $\quad$ B.路由选择
C.会话管理 $\quad$ D.数据表示转换

   34.100BaseT 快速以太网使用的导向传输介质是
A.双绞线 $\quad$ B.单模光纤 $\quad$ C.多模光纤 $\quad$ D.同轴电缆

   35.对于滑动窗口协议,如果分组序号采用 3 比特编号,发送窗口大小为 5,则接收窗口最大是
A.2 $\quad$ B.3 $\quad$ C.4 $\quad$ D.5

   36.假设一个采用 CSMA/CD 协议的 100Mbps 局域网,最小帧长是 128B,则在一个冲突域内两个站点之间的单向传播延时最多是
A. 2.56 μs $\quad$ B.5.12 μs $\quad$ C.10.24 μs $\quad$ D.20.48 μs

   37.若将 101.200.16.0/20 划分为 5 个子网,则可能的最小子网的可分配 IP 地址数是
A.126 $\quad$ B.254 $\quad$ C.510 $\quad$ D.1022

   38.某客户通过一个 TCP 连接向服务器发送数据的部分过程如题 38 图所示客户在 t。时刻第一次收到确认序列号 ack. _seq=100 的段,并发送序列号 seq=100 的段,但发生丢失。若 TCP 支持快速重传,则客户重新发送 seq= 100 段的时刻是

图
图 2:第 38 题图

   A. $t_1$ $\quad$ B. $t_2$ $\quad$ C. $t_3$ $\quad$ D. $t_4$

   39.若主机甲主动发起一个与主机乙的 TCP 连接,甲,乙选择的初始序列号分别为 2018 和 2046,则第三次握手 TCP 段的确认序列号是
A.2018 $\quad$ B.2019 $\quad$ C.2046 $\quad$ D.2047

   40.下列关于网络应用模型的叙述中,错误的是
A.在 P2P 模型中,结点之间具有对等关系
B.在客户/服务器(C/S)模型中,客户与客户之间可以直接通信
C.在 C/S 模型中,主动发起通信的是客户,被动通信的是服务器
D.在向多用户分发一个文件时,P2P 模型通常比 C/S 模型所需时间短。

2. 二、综合应用题

   41~47 小题,共 70 分。

   41. (13 分)设线性表 L =(a+,a,..",a_-r,a-,a.) 采用带头结点的 单链表保存,链表中结点定义如下:

typedef struct node
{
    int data;
    struct node *next;
} NODE;
请设计一个空间复杂度为 $O(1)$ 且时间上尽可能高效的算法,重新 排列 $L$ 中的各结点,得到线性表 $L'=(a_1,a_n,a_2,a_{n-1},a_3,a_{n-2},...)$.要求:
(1)给出算法的基本设计思想
(2)根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释。
(3)说明你所设计的算法的时间复杂度。

   42. (10 分)请设计一个队列,要求满足:①初始时队列为空;②人队时,允许增加队列占用空间;③出队后,出队元素所占用的空间可重复使用,即整个队列所占用的空间只增不减;④人队操作和出队操作 的时间复杂度始终保持为 $O(1)$。请回答下列问题:
(1)该队列应该选择链式存储结构,还是顺序存储结构?
(2)画出队列的初始状态。并给出判断队空和队满的条件
(3)画出第一个元素人队后的队列状态。
(4)给出人队操作和出队操作的基本过程。

   43. (8 分)有 $n(n\geqslant3)$ 位哲学家围坐在-张圆桌边,每位哲学家交替地就餐和思考。在圆桌中心有 $m(m\geqslant1)$ 个碗,每两位哲学家之间有 1 根筷子。每位哲学家必须取到一个碗和两侧的筷之后,才能就餐,进餐完毕,将碗和筷子放回原位,并继续思考。为使尽可能多的哲学家同时就餐,且防止出现死锁现象,请使用信号量的 P、V 操作(wait()、signal()操作)描述上述过程中的互斥与同步,并说明所用信号量及初值的含义。

   44. (7 分)某计算机系统中的磁盘有 300 个柱面,每个柱面有 10 个磁道,每个磁道有 200 个扇区。扇区大小为 512 B。文件系统的每个簇包含 2 个扇区。请回答下列问题:
(1)磁盘的容量是多少?
(2)假设磁头在 85 号柱面上,此时有 4 个磁盘访问请求,簇号分别为:100260、60005、101660 和 110560。若采用最短寻道时间优先(SSTF)调度算法,则系统访问簇的先后次序是什么?
(3)第 100530 簇在磁盘上的物理地址是什么?将簇号转换成磁盘物理地址的过程是由 I/O 系统的什么程序完成的?

   45. (16 分)已知 $f(n)=n!=n\times(n-1)\times(n-2)\times...\times2\times1$.计算 $f(n)$ 的 $C$ 语言函数 $f1$ 的源程序(阴影部分)及其在 $32$ 位计算机 $M$ 上的部分机器级代码如下:

int f1(int n){
1   00401000    55    push    ebp

    if(n>1)
11  00401018    83 7D 08 01    cmp    dword ptr[ebp+8],1
12  0040101C    7E17    jle  fl+35h (00401035)
    return n*f1(n-1);
13  0040101E    8B  45  08   mov  eax, dword ptr [ebp+8]
14  00401021    83  E8  01   sub  eax, 1
15  00401024    50           push  eax
16  00401025    E8  D6  FF  FF  FF    call f1 (00401000)
19  00401030    0F  AF  C1  imul eax, ecx
20  00401033    EB  05      jmp f1+3Ah(0040103a)
    else return 1;
21  00401035    B8  01  00  00  00    mov eax,1


26  00401040    3B  EC    cmp ebp ,esp
30  0040104A    C3        ret
}
其中,机器级代码行包括行号、虚拟地址。机器指令和汇编指令,计算机 M 按字节编址,int 型数据占 32 位。请回答下列问题:
(1)计算 f(10)需要调用函数 f1 多少次?执行哪条指令会递归调 用 f1?
(2)上述代码中,哪条指令是条件转移指令?哪几条指令一定会 使程序跳转执行?
(3)根据第 16 行 call 指令,第 17 行指令的虚拟地址应是多少?
(4) f(13)=6227 020800,但 f1(13)的返回值为 1 932 053 504,为什么两者不相等?要使 f1(13)能区回正确的结果,应如何修改 fl 源程序?
(5)第 19 行 in R[ecx],当乘法器输出的高、低 32 位乘积之间满足什么条件时,溢出标志 OF=1?要使 CPU 在发生溢出时转异常处理,编泽器应在 imul 指令后加一条什么指令?

   46. (7 分)对于题 45,若计算机 M 的主存地址为 32 位,采用分页存储管理方式,页大小为 4 KB,则第 1 行 push 指令和第 30 行 ret 指令是否在同一页中(说明理由)?若指令 Cache 有 64 行,采用 4 路组相联映射方式,主存块大小为 64B,则 32 位主存地址中,哪几位表示块内地址?哪儿位表示 Cache 组号?哪几位表示标记(tag)信息?读取第 16 行 call 指令时,只可能在指令 Cache 的哪一组中命中(说明理由)?

   47. (9 分)某网络拓扑如题 47 图所示,其中 R 为路由器,主机 H1~H4.的 IP 地址配置以及 R 的各接口 IP 地址配置如图中所示。现有若 f 台以太网交换机(无 VLAN 功能)和路由器两类网络互连设备可 供选择。

图
图 3:第 47 题图

   请回答下列问题:
(1)设备 1、设备 2 和设备 3 分别应选择什么类型网络设备?
(2)设备 1、设备 2 和设备 3 中,哪几个设备的接口需要配置 IP 地。 址?并为对应的接口配置正确的 IP 地址。
(3)为确保主机 H1~H4 能够访问 Internet,R 需要提供什么服务?
(4)若主机 H3 发送一个目的地址为 192.168.1.127 的 IP 数据报,网络中哪几个主机会接收该数据报?

3. 参考答案

一、单项选择题

   1. B $\quad$ 2. B $\quad$ 3. C $\quad$ 4. A $\quad$ 5. C
6. A $\quad$ 7. D $\quad$ 8. C $\quad$ 9. B $\quad$ 10. D
11. B $\quad$ 12.C. $\quad$ 13. A $\quad$ 14. D $\quad$ 15. D
16. D $\quad$ 17. B $\quad$ 18.C. $\quad$ 19. B $\quad$ 20.C.
21. A $\quad$ 22.D. $\quad$ 23. B $\quad$ 24.C. $\quad$ 25. C
26. B $\quad$ 27. C $\quad$ 28. B $\quad$ 29. C $\quad$ 30. B
31. A $\quad$ 32. C $\quad$ 33.C. $\quad$ 34. A $\quad$ 35. B
36. B $\quad$ 37. B $\quad$ 38. C $\quad$ 39.D. $\quad$ 40. B

二、综合应用题

   41. [答案要点]
(1) 算法的基本设计思想:
算法分 3 步完成。第 1 步,采用两个指针交替前行,找到单链表的中间结点;第 2 步,将单链表的后半段结点原地逆置;第 3 步,从单链表前后两段中依次各取一个结点,按要求重排。
(2) 算法实现:

void change_list(NODE *h)
{
    NODE *p,*q,*r,*s;
    p=q=h;
    while (q->next != NULL)       // 寻找中间结点
    {
        p = p->next;                // p走一步.
        q = q->next;
        if (q->next != NULL) q = q->next; // q走两步
    }
    q = p->next;         // p所指结点为中间结点,q为后半段链表的首结点
    p->next = NULL;
    while (q != NULL)    // 将链表后半段逆置
    {
        r = q->next;
        q->next = p->next;
        p->next = q:
        q = r;
    }
    s = h->next;       // s指向前半段的第一个数据结点,即插入点
    q = p->next;       // q指向后半段的第一个数据结点
    p->next = NULL;
    while( q! = NULL )  //将链表后半段的结点插入到指定位置
    {
        r = q->next;    // r指向后半段的下一个结点
        q->next = s->next; // 将q所指结点插入到s所指结点之后
        s->next = q;
        s = q->next;    // s指向前半段的下一个插入点
        q = r;
    }
}
(3)算法的时间复杂度:$O(n)$。

   42. [答案要点]
(1) 采用链式存储结构(两段式单向循环链表),队头指针为 front,队尾指针为 rear。
(2) 初始时,创建只有一个空闲结点的两段式单向循环链表,头指 针 front 与尾指针 rear 均指向空闲结点。如下图所示。

图
图 4:第 2 小题解答图

   队空的判定条件:front == rear。 队满的判定条件:front == rear->next。
(3) 插入第一个元素后的队列状态:

图
图 5:第 3 小题解答图

   (4) 操作的基本过程:

表1:操作的基本过程
人队操作:
若(ront == rear->nex1) //队满 则在 rear 后面插人一个新的空闲结点; 人队元素保存到 rear 所指结点中:rear = ear->nex;返回.
出队操作:
若(romt == rer) //队空 则出队失败.返回: 取 front 所指结点中的元素 e;front = fronl->next;返回 e。

   43. [答案要点]

//信号量
semaphore bowl;    //用于协调哲学家对碗的使用
semaphore chopsticks[n];    //用于协调哲学家对筷子的使用
for(inti=0;i<n;i++)
{
    chopstick[i].value = 1;       // 设置两个哲学家之间筷子的数量
    bowl.value = min(n-1, m);     // bowl.value≤n-1, 确保不死锁
}

CoBegin
while (True)    // 哲学家i的程序
{
    思考;
    P(bowl);    // 取碗
    P(chopstiks[i]);    // 取左边筷子
    P(chopsticks[(i+1) MOD n]);    // 取右边筷子
    就餐;
    V(chopsticls[i]);
    V(chopsticks[(i+1) MOD n]);
    V(bowl);
}
Co End

   44. [答案要点]
(1) 磁盘容量=$(300\times10\times200\times512/1024)KB=3\times10^5KB$。
(2) 依次访问的簇是 $100 260$、$101 660$、$110 560$、$60 005$。
(3) 第 100530 簇在磁盘上的物理地址由其所在的柱面号、磁头号、扇区号构成 其所在的柱面号为 $\lfloor100530/(10\times200/2)\rfloor=100$。
$100530\%(10\times200/2)=530$, 磁头号为 $\lfloor530/(200/2)\rfloor=5$。 扇区号为 $(530\times2)\%200=60$。
将簇号转换成磁盘物理地址的过程由磁盘驱动程序完成。

   45. [答案要点]
(1) 计算 $f(10)$ 需要调用函数 $f1$ 共 $10$ 次 执行第 $16$ 行 $call$ 指令会递归调用 $f1$。
(2) 第 $12$ 行 $jle$ 指令是条件转移指令。第 $16$ 行 $call$ 指令、第 $20$ 行 $jmp$ 指令。第 $30$ 行 $ret$ 指令一定会使程序跳转执行。
(3) 第 $16$ 行 $call$ 指令的下一条指令的地址为 0040 1025H+5=0040 102AH ,故第 $17$ 行指令的虚拟地址是 0040 102AH 的 $call$ 指令采用相对寻址方式,即目标地址=(PC)+偏移量,call 指令的目标地址为 0040 1000H ,所以偏移量=目标地址-(PC)= 0040 1000H - 0040 102AH = FFFF FFD6H 根据第 16 行 call 指令的偏移量字段为 D6FF FF FF,可确定 M 采用小端方式。
(4) 因为 $f(13) = 6 227020 800$,大于 $32$ 位 $int$ 型数据可表示的最大值,因而 $f1(13)$ 的返回值是一个发生了溢出的结果。为使 $f1(13)$ 能返阿正确结果,可将函数 $f1$ 的返回值类型改为 double(或 long long 或 long double 或 float)。
(5) 若乘积的高 $33$ 位为非全 $0$ 或非全 $1$,则 $OF=1$ 编译器应该在 $imul$ 指令后加一条 “溢出自陷指令”,使得 CPU 自动查询溢出标志 $OF$,当 $0F=1$ 时调出 “溢出异常处理程序”。

   46. [答案要点]
第 $1$ 行指令和第 $30$ 行指令的代码在同一页。因为页大小为 $4 KB$,所以虚拟地址的高 $20$ 位为虚拟页号。第 $1$ 行指令和第 $30$ 行指令的虚拟地址高 $20$ 位都是 $00401H$,因此两条指令在同一页中。
Cache 组数为 $64/4=16$,因此,主存地址划分中,低 $6$ 位为块内地址、中间 4 位为组号(组索引)、高 $22$ 位为标记。
读取第 $16$ 行 $call$ 指令时,只可能在指令 $Cache$ 第 $0$ 组中命中。
因为页大小为 $4KB$,所以虚拟地址和物理地址的最低 $12$ 位完全相同,因而 $ceall$ 指令虚拟地址 $00401025H$ 中的 $025H=000000100101B=000000100101B$ 为物理地址的低 $12$ 位,故对应 $Cache$ 组号为 $0$。

   47. [答案要点]
(1) 设备 1:路由器,设备 2:以太网交换机,设备 3:以太网交换机
(2)设备 1 的接口需要配置 IP 地址;设备 1 的 IFI、IF2 和 IF3 接口。的 IP 地址分别是:192.168.1.254.192.168.1.1 和 192.168.1.65。
(3) R 需要提供 NAT 服务
(4) 主机 H4 会接收该数据报。

                     

© 小时科技 保留一切权利