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 会接收该数据报.


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利