1.若元素 a,b,c,d,e,f 依次进栈,允许进栈、退栈交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是_____。
A.d c e b f a B.c b d a e f C.b c a e f d D.a f e d c b
解答:D
A. push(a); push(b); push(c); push(d); pop(); pop(); push(e); pop(); pop(); push(f); pop(); 可得
B.push(a); push(b); push(c); pop(); pop(); push(d); pop(); pop(); push(e); pop(); pop(); 可得
C. push(a); push(b); pop(); push(c); pop(); pop(); push(d); push(e); pop(e); push(f); pop(); pop(); 可得
D.push(a); pop(); push(b); push(c); push(d); push(e); push(f); pop(); pop(); pop(); pop(); pop(); 可得,连续三次以上 pop(),不符合要求。
2.某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素 a,b,c,d,e 依次入次队列后再进行出队操作,则不可能得到的出队序列是______。
A.b a c d e B.d b a c e C.d b c a e D.e c b a d
解答:C
假设仅允许在右端出队。
A.leftOffer(); rightOffer(); leftOffer(); leftOffer(); leftOffer(); 可得
B.leftOffer();rightOffer(); leftOffer();rightOffer(); leftOffer(); 可得
C.不可得
D.leftOffer(); leftOffer(); leftOffer(); rightOffer(); leftOffer(); 可得
3.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是_______。
A. B C D
解答:D
线索二叉树:以一定规则将二叉树中的节点排列成一个线性序列,得到二叉树中节点的先序序列,中序序列或后序序列。
该二叉树后续遍历得到 d b c a,只有 A 和 D 图中 d 节点的前驱为空 ,A 中 d 的前驱为 d ,不符合要求,故选 D。
4.在下图所示平衡二叉树中,插入关键字 48 后得到一颗新平衡二叉树。在新平衡二叉树中,关键字 37 所在节点的左、右子节点中保存的关键字分别是_____。
A.13,48 B.24,48 C.24,53 D.24,90
解答:C
平衡二叉树:或是一颗空树或是一颗左右子树高度差不大于 1 且左右子树均是平衡二叉树的二叉排序树。
二叉排序树满足如下性质:
(1)若左子树不空,左子树上所有节点的值均小于根节点的值
(2)若右子树不空,右子树上所有节点的值均大于根节点的值
(3)左右子树均为排序二叉树
平衡二叉树的调整策略主要有以下几种:
(1)LL 型,根节点的左子树的左子树造成的不平衡,将左子树的根节点作为新树的根节点,原根节点变为其右子节点
(2)RR 型,根节点的右子树的右子树造成的不平衡,将右子树的根节点作为新树的根节点,原根节点变为其左子节点
(3)LR 型,根节点的左子树的右子树造成的不平衡,将左子树的右子树的根节点作为新树的根节点,原根节点变为其右子节点
(4)RL 型,根节点的右子树的左子树造成的不平衡,将右子树的左子树的根节点作为新树的根节点,原根节点变为其左子节点
插入关键字 48 应是节点 37 的右子树的根节点,此时不满足平衡二叉树的定义,根节点左右子树高度差为 2 ,要进行 RL 型调整,即将 37 作为新树的根节点,24 变为其左子节点,54 变为其右子节点,48 为 53的左子节点。
5.在一棵度为 4 的树 T 中,若有 20 个度为 4 的节点,10 个度为 3 的节点,1 个度为 2 的节点,10 个度为 1 的节点,则树 T 的叶节点个数是________。
A.41 B.82 C.113 D.122
解答:B
一颗树中,最大节点的度称为树的度。
一个节点的子树的个数称为该节点的度。
第一层度为 2,第二层两个节点;第二层度为 3 ,第三层 6 个节点;第三层节点度都是 3 ;第四层共 18 个节点,左边两个节点度为 3 ,其余 16 个节点度为 4;第四层 6+4*16=70 个节点,左边四个度为 4 ,其余节点度为 0 或 1,可视作叶子节点,则第四层有 66 个叶子节点;第五层叶子节点数 为 4*4=16。因此树 T 的叶节点个数为 66+16=82。
6.对 n (n>=2) 个权值均不相同的字符构造成哈夫曼树。下列关于哈夫曼树的叙述中,错误的是________。
A.该数一定是一颗完全二叉树 B.树中一定没有度为 1 的节点
C.树中两个权值最小的节点一定是兄弟节点
D.树中任一非叶节点的权值一定不小于下一层任一节点的权值
解答:A
给定 N 个权值作为 N 个叶子节点,构造一颗二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称哈夫曼树。
哈夫曼树非叶节点的权值为其子树权值之和。
完全二叉树:一颗深度为 k 的有 n 个节点的二叉树,对树中节点按从上到下,从左到右的顺序进行编号,如果编号为 i (1<=i<=n) 的节点与满二叉树(拥有 2^k-1 个节点的 k 层树)中编号为 i 的节点在二叉树中的位置相同,则这颗二叉树称为完全二叉树。
哈夫曼树不一定是完全二叉树,如权值 1,2,10 构造成的哈夫曼树,节点1,2 在根结点的右节点上时,是哈夫曼树,但不是完全二叉树。
哈夫曼树的构造,每次选取权值最小的两个节点组成树,然后将根节点的权值作为新的节点参与下一次构造直至节点个数为 1。因此 C、D 正确。
7. 若无向图 G=(V,E)中含有 7 个顶点,则要保证图 G 在任何情况下都是连通的,则需要的边数是_______。
A.6 B.15 C.16 D.21
解答:C
要保证图 G 在任何情况下都连通,即任意变动图 G 中的边,G 始终保持完全连通。这里指的意思应该是将其中一条边任意挪动位置,即从 A-B 变为 C-D,图依然是连通的。因此至少需要 其中6 个顶点构成完全连通子图,另外一个顶点通过一条边与其相连即可。 6 个顶点构成的完全连通子图需要 6*5/2=15 条边,第七个顶点与其相连需要 1 条边。故至少需要 16 条边。
8.对下图进行拓扑排序,可以得到的不同拓扑排序的个数是______。
A.4 B.3 C.2 D.1
解答:B
对一个有向无环图 G 进行拓扑排序,是将 G 中所有的顶点排成一个线性序列,使得图中任意一对顶点 u 和 v,若边 属于 E(G),则 u 在线性序列中出现在 v 之前。
对该题中的图排成的线性序列,a在序列首位,d 在序列末尾,故有三种情况,abced,aebcd
和 abecd。
9.已知一个长度为 16 的顺序表 L,其元素按关键字有序排列。若按折半查找法查找一个 L 中不存在的元素,则关键字的比较次数最多是______。
A.4 B.5 C.6 D.7
解答:A
折半查找法即二分查找法。因此当该元素在第一个元素和第二个元素之间时比较次数最多,需要 5 次。
10.采用递归方式对顺序表进行快速排序。下列关于递归次数的说明中,正确的是_____。
A.递归次数与初始数据的排列次序无关
B.每次划分后,先处理较长的分区可以减少递归次数
C.每次划分后,先处理较短的分区可以减少递归次数
D.递归次数与每次划分后得到的分区的处理顺序无关
解答:D
快速排序流程:
(1)首先设定一个分界值,通过该分界值将该数组分成左右两部分
(2)将大于等于分界值的数据移动到该分界值右边,小于分界值的数据集中在数组左边
(3)对分界值左边和右边的数据分别重复 (1)(2)直至全部排序好
通过以上可知 D 正确。
A.递归次数与除数数据的排序次序有关。若根据一定规则选取的临界值使临界值左右两边大小尽可能相等,则递归次数较少,否则递归次数较多。每次划分后,左右分区的递归次数与下次选取的临界值有关而与处理顺序无关。
11.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:
第一趟排序结果:2,12,16,5,10,88
第二趟排序结果:2,12,5,10,16,88
第三趟排序结果:2,5,10,12,16,88
则采用的排序方法可能是______。
A.冒泡排序 B.希尔排序 C.归并排序 D.基数排序
解答:A
冒泡排序,每次将未排序的最大值移动到最后面或最小值移动到最前面。三趟都符合要求,细看,每一趟从头开始遍历,将相邻项的较大者移动到相对较后面的位置。符合要求。故选A。
希尔排序也叫缩小增量排序。假设初始增量(下标值相差固定值)为 x ,第一次对子序列 0,x,2x.....,子序列 1,1+x,1+2x,...... 子序列 2,2+x,2+2x,....... ...... 子序列 x-1, 2x-1,3x-1...... 进行排序,然后将初始增量变小进行再排序,直至最后初始增量变为 1。第一趟中 88 被移动至末尾,其原位置为倒数第三个,因此此时的增量应为 2 ,但12 88 10排序后 12 5 88,元素和元素序列都对不上。
归并排序。88 被移动至末尾,因此2,12,16为一组, 5,10,88 为一组,不应该存在第三趟。
基数排序。按照低位至高位的值依次进行排序。第一趟中 10 应该再最前面,且只有两趟。
12.下列选项中,能缩短程序执行时间的措施是______。
Ⅰ.提到 CPU 时钟频率 Ⅱ.优化数据通路结构
Ⅲ.对程序进行编译优化
A.Ⅰ、Ⅱ B.Ⅰ、Ⅲ C.Ⅱ、Ⅲ D.Ⅰ、Ⅱ、Ⅲ
解答:D
提高 CPU 时钟周期,1 s 内 CPU 能做的事更多,程序执行时间减少。
数据通路:数据在功能部件之间的传送路径。优化数据通路结构,传输速率更快,计算机性能提高,程序执行时间减少。
对程序进行编译优化,程序执行效率提高,运行时间减少。
13.假定有 4 个整数用 8 位补码分别表示 r1=FEH,r2=F2H,r3=90H,r4=F8H,若你将运算结果存放在一个 8 位寄存器中,则下列运算中会发生溢出的是______。
A.r1*r2 B.r2*r3 C.r1*r4 D.r2*r4
解答:B
r3 最小,因此最容易溢出,先计算 B 项,r2=F2H=1111 0010H,所以 r2 对应数(按位取反再+1) -14,r3 对应数的绝对值为 0111 0000 H ,乘以 14 显然超出 8 位表示范围。
14.假定变量 i,float 和 double (int 用补码表示,float 和double 使用 IEEE 754 单精度和双精度浮点数格式表示),已知 i=785,f=1.5678e3 ,d=1.5e100。若在 32 位机器中执行下列关系表达式,则结果为 “真” 的是______。
Ⅰ.i==(int)(float) i Ⅱ.f==(float)(int)f Ⅲ.f==(float)(double)f Ⅳ.d+f-d==f
A. ⅠⅡ B.ⅠⅢ C.Ⅱ Ⅲ D.Ⅲ Ⅳ
解答:B
ⅠⅢ 显然结果为真
Ⅱ.(int)f=1567,(float)(int) f=1567-1567.8>1e-6,不相等
Ⅲ d+f,f 过小,被忽略,所以d+f=d,d+f-d=0
15.假定用若干 2K*4 位的芯片组成一个 8K*8 的存储器,则地址 0B1FH 所在芯片的最小地址是_______。
A.0000H B.0600H C.0700H D.0800H
解答:D
以 2 个 2K*4 位一组组成一个 2K*8 的芯片,然后由 4 组组成 8K*8。因此第一组的地址是 0000H-07FFH(2K-1),第二组的地址是 0800H-0EFFH,0B1FH 在该组内,因此最小地址是 0800H。
16.下列有关 RAM 和 ROM 的叙述中,正确的是______。
ⅠRAM 是易失性存储器,ROM 是非易失性存储器
Ⅱ RAM 和 ROM 都采用随机存取方式进行信息访问
Ⅲ RAM 和 ROM 都可用作 Cache
Ⅳ RAM 和 ROM 都需要进行刷新
A. ⅠⅡ B.Ⅱ Ⅲ C. ⅠⅡ Ⅳ D.Ⅱ Ⅲ Ⅳ
解答:A
RAM:随机存取存储器,也叫主存,是与 CPU 直接交换数据的只读存储器。
ROM:只读存储器,只能读出无法写入数据。
随机存取方式,允许从任何位置开始访问,不受存储顺序的限制。
17.下列命中组合中,一次访存过程中不可能发生的是______。
A. TLB 未命中,Cache 未命中,Page 未命中
B. TLB 未命中,Cache 命中,Page 命中
C. TLB 命中,Cache 未命中,Page 命中
D. TLB 命中,Cache 命中,Page 未命中
解答:D
Cache 中存放的是主存中的一部分副本,TLB(块表)中存放的是 Page(页表)的一部分副本。若 TLB 命中,Page 必定命中。TLB 为命中,Page 和 Cache 可能命中也可能未命中。若 Cache 命中,TLB 可能命中可能不命中,但页表必定命中。
18.下列寄存器中,汇编语言程序员可见的是_____。
A.存储器地址寄存器(MAR) B.程序计数器(PC)
C.存储器数据寄存器(MDR) D.指令寄存器(IR)
解答:B
MAR 用来存放将被访问的存储单元的地址。
MDR 用来存放将被放入或刚被取出的寄存器数据。
PC 用来存放下一条指令在主存储器中的地址。
IR 用来保存当前执行指令。
MAR,MDR和 IR 是 CPU 内部工作的寄存器,对程序员不可见。
19.下列操作中,不会引起指令流水线阻塞的是_____。
A.数据旁路(转发) B.数据相关 C.条件转移 D.资源冲突
解答:A
指令流水线:为提高指令执行的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。
数据旁路(转发):不必等待某条指令的执行结果送回寄存器,再从中取出作为下一条指令的源操作数,而是直接将执行结果送到其他指令所需要的地方。
数据相关:又叫数据依赖,某条指令会用到另一条指令的计算结果,则该指令必须等待另一条指令执行完毕
资源冲突:多个任务再同一个时间周期内争用同一个流水段
条件转移:若某条指令是条件转移指令,则需要等待该指令执行完成才能判断下一步执行哪一条指令。
20.下列选项中的英文缩写均为总线标准的是_____。
A.PCI,CRT,USB,EISA B.ISA,CPI,VESA,EISA
C.ISA,SCSI,RAM,MIPS D.ISA,EISA,PCI,PCI-Express
解答:D
典型的总线标准有:ISA,EISA,VESA,PCI,PCI-Express,AGP,USB,RS-232C等。
CRT 是阴极射线管显示器;CPI 是每条指令的时钟周期数;RAM 是主存,随机存取存储器。
21.单级中断系统中,中断服务程序内的执行顺序是_________。
Ⅰ保护现场 Ⅱ开中断 Ⅲ关中断 Ⅳ保存断点 Ⅴ中断事件处理
Ⅵ 恢复现场 Ⅶ 中断返回
A.Ⅰ- Ⅴ - Ⅵ - Ⅱ- Ⅶ B.Ⅲ-Ⅰ-Ⅴ- Ⅶ
C.Ⅲ-Ⅳ-Ⅴ- Ⅵ - Ⅶ D. Ⅳ-Ⅰ-Ⅴ- Ⅵ - Ⅶ
解答:A
单级中断系统:只能处理一个中断的系统
部分程序不能中途停止执行(如恢复现场),此时 CPU 启动关中断,执行完毕后 CPU 启动开中断。
中断处理过程为:关中断-保存断点-识别中断源-保护现场-中断事件处理-恢复现场-开中断-中断返回。前三者由硬件完成,与中断服务程序无关,故选A。
22.假定一台计算机的显示存储器用 DRAM 芯片实现,若要求显示分辨率为 1600*1200,颜色深度为 24 位,帧频为 85Hz,显存总带宽的 50% 用来刷新屏幕,则需要的显存总带宽至少约为_____。
A.245Mbps B.979Mbps C.1958Mbps D.7834Mbps
解答:D
DRAM:基于电容的动态随机访问存储器,需要定期刷新
分辨率:屏幕水平和垂直方向的像素点个数
颜色深度:存储一像素颜色所用位数
帧频:每秒钟放映或显示的帧或图像的数量
所以结果为 1600*1200*24*85*2bps=16*12*24*1.7Mbps=4608*1.7Mbps 约为 7834 Mbps
23.下列选项中,操作系统提供给应用程序的接口是______。
A.系统调用 B.中断 C.库函数 D.原语
解答:A
操作系统提供的接口主要有两类:命令接口和系统调用(程序接口)。操作系统向用户提供命令接口,向应用程序提供程序接口。
库函数是对程序接口的再次封装。
原语:由若干机器指令构成的用来完成特定功能的一段具有不可分割性的一段程序。
24.下列操作中,导致创建新进程的操作有_____。
Ⅰ用户登录成功 Ⅱ设备分配 Ⅲ启动程序执行
A.ⅠⅡ BⅡⅢ C.ⅠⅢ D.ⅠⅡⅢ
解答:C
用户登录成功后,系统会创建一个用于用户管理的进程。所有的用户进程会在该进程下创建和管理。
设置分配是在系统中设置相应的数据结构实现的
启动程序执行显然会创建进程。
25.设与某资源关联的信号量初值为 3 ,当前值为 1。若 M 表示该资源的可用个数,N 表示等待该进程的资源数,则 M、N 分别是______。
A.0,1 B.1,0 C.1,2 D.2,0
解答:B
信号量表示当前相关资源的可用数,值为 1 ,表示有 1 个可用,故 M 为 1,N 为 0。
26.下列选项中,降低进程优先级的合理时机是______。
A.进程的时间片用完 B.进程刚完成 I/O,进入就绪序列
C.进程长期处于就绪序列中 D.进程从就绪态转为运行态
解答:A
进程时间片用完,降低优先级,CPU 优先选择在当前轮次中还未运行过的进程
B C 两项应当提高优先级
D 项应当在时间片用完后降低优先级
27.进程 P0 和 P1 的共享变量定义及其初值为:
boolean flag[2];
int turn=0;
flag[0]=false;
flag[1]=false;
若进程 P0 和 P1 访问临界资源的类 C 伪代码实现如下:
void P0(){ //进程 P0
while(true){
flag[0]=true;
turn=1;
while(flag[1] && turn==1);
临界区;
flag[0]=false;
}
}
viod P1(){ //进程 P1
while(true){
flag[1]=true;
turn=0;
while(flag[0] && turn=0);
临界区;
flag[1]=false;
}
}
则并发执行 P0 和 P1 时产生的情形是_____。
A.不能保证进程互斥进入临界区,会出现“饥饿”现象
B.不能保证进程互斥进入临界区,不会出现“饥饿”现象
C.能保证进程互斥进入临界区,会出现“饥饿”现象
D.能保证进程互斥进入临界区,不会出现“饥饿”现象
解答:D
“饥饿”现象:进程的等待时间给进程的推进和响应带来明显影响的现象。当等到时间长到即使完成该进程也没有实际意义时,称为“饿死”。
28.某基于动态分区存储管理的计算机,其主存容量为 55MB(初始为空闲),采用最佳适配(Best Fit)算法,分配和释放的顺序为:分配 15MB,分配 30MB,释放 15MB,分配 8MB,分配 6MB,此时主存中最大空闲分区大小是_____。
A.7MB B.9MB C.10MB D.15MB
解答:B
最佳适配算法:每次找到符合要求的最小分区分配给作业以产生最小的空闲分区。
分配 15MB
15MB占有 | 40MB空闲 |
分配 30MB
15MB 占有 | 30MB 占有 | 10MB空闲 |
释放 15MB
15MB 空闲 | 30MB 占有 | 10MB空闲 |
分配 8MB
15MB 占有 | 30MB 占有 | 8MB 占有 | 2MB 空闲 |
分配 6MB
6MB 占有 | 9MB 空闲 | 30 MB占有 | 8MB 占有 | 2MB 空闲 |
29.某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为 2^10 B,页表项大小为 2B,逻辑地址结构为:
页目录号 | 页号 | 页内偏移量 |
逻辑地址空间大小为 2^16 页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是_______。
A.64 B.128 C.256 D.512
解答:B
分页式存储管理系统:将存储空间分为一个一个的页,逻辑地址为
页号 | 位移量 |
二级页表的分页式存储管理系统,对页表本身增加一层页表管理,逻辑地址如题所示。
页表项:在页表中,一个页号与其对应的物理块号称之为一个页表项。页表项的数目就等于页面数目。
页面大小为 2^10 B,页表项大小为 2B,一页可以存放 2^10/2= 2^9 个页表项。
逻辑地址空间大小为 2^16 页,即二级页面有 2^16 个页表项需要存储。因此二级页面需要 2^16/2^9=2^7=128 个页来存储,即二级页面的页表至少需要 128 个。
30.设文件索引节点中有 7 个地址项,其中 4 个地址项是直接地址索引,2 个地址项是一级间接地址索引,1 个地址项时二级间接地址索引,每个地址项大小为 4 B。若磁盘索引块和磁盘数据块大小均为 256B,则可表示的单个文件最大大小为______。
A.33KB B.519KB C.1057KB D.16513KB
解答:C
直接地址索引:索引直接指向物理块
一级间接地址索引:索引节点指向的地址块用来存放地址项。
二级间接地址索引:索引节点指向的地址块,存放的时一级别间接地址。
索引块大小为 256B,地址项大小为 4B,因此每个索引块可以存放 256B/4B=64 个索引,因为每个数据块大小为 256B,因此单个索引指向文件大小最大为 256B。
4 个直接地址直接指向物理块(256B),所以最大为 256B*4=1024B=1KB;一级索引地址 2 个,每个指向一个索引块,当指向索引块归属于该文件的索引数量为 64 时,文件最大,为 2*64*256B=2*16*1024B=32KB;二级索引 1 个,指向的一级索引块大小为 64 时,文件最大,为 64*64*256B=64*16*1024B=1024KB。
综上所述,该文件最大为 1024+32+1=1057KB
31.设置当前工作目录的主要目的是______。
A.节省外存空间 B.节省内存空间 C.加快文件的检索速度 D.加快文件的读/写速度
解答:C
设置当前目录会额外消耗空间,所以 A,B 不对。
当存在多级目录时,设置当前工作目录可以免去从根目录到当前目录这一环节,加快了文件的检索速度。
现代硬件的传输方式为 DMA (直接内存访问),读取速度取决于内存写入速度、接口带宽,设备本省性能,与 CPU 及当前工作目录无关。
32.本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是_____。
A.命令解释程序 B.中断处理程序 C.系统调用程序服务 D.用户登录程序
解答:B
键盘是通过中断 I/O 的方式工作的外设,当用户输入信息时,计算机响应中断并通过中断处理程序获得信息。
33.下列选项中,不属于网络体系结构所描述的内容是_____。
A.网络的层次 B.每层使用的协议 C.协议的内部实现细节 D.每层必须完成的功能
解答:C
网络体系结构是指计算机网络的各层及其协议的集合。体系结构是抽象的,不包含各层协议具体实现细节,具体实现细节是由具体设备厂家来决定的。
34.在下图所示的采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为 100Mbps,分组大小为 1000B,其中分组头大小为 20B。若主机 H1 向主机 H2 发送一个大小为 980000B 文件,则在不考虑分组拆装时间和传播时延的情况下,从 H1 发送开始到 H2 接收完为止,需要的时间至少是______。
A.80ms B.80.08ms C.80.16ms D.80.24ms
解答:C
B 是 Byte 的缩写,b 是 bit 的缩写,此外,MB 和 Mb 不同。
链路传输速率:主机或路由器向路由器上发送数据的速度,也称为数据率或比特,单位是比特每秒。
分组大小为 1000B,分组头大小为 20B,因此每个分组内文件数据最多为 980B,文件大小为 980000B,则会产生 980000B/980B=1000 个分组,其总大小为 1000*1000B=1MB=8Mb。链路传输速率为 100Mbps,因此主机 H1 将所有数据发送到链路上的耗时为 8Mb/(100M/s) = 8/100 s =8/100*1000ms=80ms。
主机 H1 发送玩第一个分组后,经过两个路由器到达 H2 ,每个路由器都会转发一次,因此需要转发 2 次,单次耗时 1000B/(100M/s)=1000*8b/100000000b*1000ms=8/100ms=0.08ms,两次耗时 0.08*2=0.16ms
综上所述,一共耗时 80ms+0.16ms=80.16ms
35.某自治系统采用 RIP 协议,若该自治系统内的路由器 R1 收到其邻居路由器 R2 的距离矢量
A.R2 可以经过 R1 到达 net1 ,跳数为 17
B.R2 可以到达 net1,跳数为16
C.R1 可以经过 R2 到达 net1,跳数为 17
D.R1 不能经过 R2 到达 net1
解答:D
RIP 协议是一种内部网关协议,是一种动态路由选择协议,用于自治系统内的路由信息传递。是应用层协议。
RIP 一条路由做多只能包含 15 个路由器,距离为 16 表示网络不可达。因此 R2 若使用该信息更新路由表,则距离矢量为
36.若路由器 R 因为拥塞丢弃 IP 分组,则此时 R 可向发出该 IP 分组的源主机发送的 ICMP 报文类型是_____。
A.路由重定向 B.目的不可达 C.源点抑制 D.超时
解答:C
ICMP 是因特网 IP 层协议,允许主机或路由报告差错情况和提供有关异常情况。ICMP 报文种类有两种,ICMP 差错报告报文和 ICMP 询问报文。
路由重定向主要有两种:(1)路由器从某个接口接受到数据并且需要从相同接口转发数据。(2)当路由器从某个接口接受到发送往远方网络的数据时,发现源 IP 地址与下一跳属于同一网段。
目的不可达:有六种情况。(1)网络不可达(2)主机不可达(3)协议不可达(4)端口不可达(5)需要分片但 DF 比特位已置为 1 (6)源路由失败
源点抑制:当路由器或主机由于拥塞而丢失数据报时,就向源站发送源站抑制报文,使源站知道应当降低发送速率。
超时:当路由器收到生存时间为 0 的报文时,除丢弃该数据外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据包片时,丢弃该数报所有片,并向源站发送超时报文。
参数问题:当路由器或目的主机收到的数据报的首部某字段值不正确时,丢弃该数据包,并向源站发送参数问题报文。
综上所述,选 C
37.某网络的 IP 地址空间为 192.168.5.0/24,网络号为前 24 位,后 8 位为子网号+主机号。子网掩码为255.255.255.248,则该网络的最大子网个数,每个子网内最大可分配地址个数是______。
A.32,8 B.32,6 C.8,32 D.8,30
解答:B
248 转化为二进制是 11111000 ,因此前五位是主机号,故最大子网个数是 2^5=32,后三位是主机号,最大个数是 2^3-2=8-2=6 (主机号不能全 为 0 或全为 1)。
38.下列网络设备中,能够抑制广播风暴的是_____。
Ⅰ中继器 Ⅱ集线器 Ⅲ网桥 Ⅳ路由器
A.Ⅰ、Ⅱ B. Ⅲ C.Ⅲ和Ⅳ D.Ⅳ
解答:D
广播风暴:网络长时间被大量的广播数据包所占用,使正常的点对点通信无法正常进行,其外在表现为网络速度奇慢无比,甚至网络瘫痪。
中继器:工作在物理层上的连接设备,主要功能通过对数据信号的重新发送或转发,来扩大网络距离。不能抑制广播风暴。
集线器:工作在物理层上的设备,主要功能是对接受到的信号进行再生整形放大,以扩大网路传输距离,同时把所有节点集中在以它为中心的节点上。不能抑制广播风暴
网桥:工作在数据连路程,主要用来连接不同的网段。在接收到数据帧后,会将该帧从所有的端口发送出去,因此不能抑制广播风暴。
路由器:工作在网络层,是连接两个或多个网络的硬件设备,在网络中起到网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性网络设备。路由器不会将某个接口接到的广播包转发到另一个接口所在网络,因此可以抑制广播风暴。
39.主机甲和主机乙之间已建立了一个 TCP 连接,TCP 最大段长度为 1000B。若主机甲当前拥塞窗口为 4000B,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接受窗口大小为2000B,则主机甲还可以向主机乙发送的最大字节数是_____。
A.1000 B.2000 C.3000 D.4000
解答:C
发送方的发送窗口大小取接收方窗口和拥塞窗口中的较小者,因此发送窗口大小为 2000B。主机甲发送了两个最大段,接收到了对第一个段的确认,因此发送窗口中仍然有一个最大段,此时可发送的最大字节数为 2000B-1000B=1000B
40.如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为______。
A.一条,一条 B.一条,多条 C.多条,一条 D.多条,多条
解答:A
本地域名服务器在无缓存的情况下,会代替主机进行查询。在之后的查询过程中,若采用递归方法时上级服务器无缓存,会代替查询者进行查询;而在在迭代方法中,若上次服务器无缓存,会告诉查询者下一步应该向哪个服务器查询。所以选 A。
41.(10分)将关键字序列(7,8,30,11,18,9,14)散列存储到散列表中。散列表的存储空间是一个下标从 0 开始的一维数组,散列函数 H(Key)=(key*3) mod 7,处理冲突采用线性探测再散列法,要求装填(载)因子为 0.7。
(1)请画出所构造的散列表
(2)分别计算等概率情况下的查找成功和查找不成功的平均查找长度。
知识点:线性探测再散列法也称为杂凑技术,是解决哈希表冲突的一种方法。
线性探测再散列法的计算公式: Hi=(H(Key)+di)%m ,i=1,2,3,4,5,6......(k<=m-1),其中 H(key) 为哈希函数,m 为哈希表长,di 表示增量序列。
装载因子:哈希表中已存入的元素个数 n 与 哈希表大小 m 的比值。其值越小,发生冲突的可能性越小,但对空间的浪费就越大。
平均查找长度是指找到一个元素平均所需的查找次数。
解答:(1)
要求装填因子为 0.7,所以哈希表大小为 7/0.7=10。
关键字 7,(7*3)mod 7=0,无冲突,放入位置 0
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 |
关键字 8, (8*3)mod 7=3,无冲突,放入位置 3
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 8 |
关键字 30,(30*3)mod 7=6,无冲突,放入位置 6
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 8 | 30 |
关键字 11,(11*3)mod 7=5,无冲突,放入位置 5
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 8 | 11 | 30 |
关键字 18,(18*3)mod 7=5,产生冲突,使用线性探测再散列法,(5+1)mod 10=6,产生冲突,再次使用线性探测再散列法,(5+2)mod 10=7 ,无冲突,放入
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 8 | 11 | 30 | 18 |
关键字 9,(9*3)mod 7=6,产生冲突,使用线性探测再散列法,(6+1)mod 10=7,产生冲突,再次计算,(6+2)mod 10=8,无冲突,放入
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 8 | 11 | 30 | 18 | 9 |
关键字 14,(14*3)mod 7=0,产生冲突,使用线性探测再散列法,(0+1)mod 10=1,不产生冲突,放入
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
关键字 | 7 | 14 | 8 | 11 | 30 | 18 | 9 |
(2)查找成功:根据每个元素的查找次数来计算平均长度,除关键字 18 ,9 需查找三次,关键字 14 需查找 2 次外,关键字只需查找一次,故查找成功的平均比较次数为 (3+3+2+1+1+1+1)/ 7=12/7
查找不成功:根据查找失败位置计算查找平均长度,需要向后查找直至某位置为空或已遍历一圈,因此查找不成功时的平均查找长度为 (3+2+1+2+1+5+4)/ 7= 18/7 (H(Key)=0 使得查找失败需要比较 3 次...... H(Key)=6时查找失败需要比较 4 次)
42.(13分)设法将 n(n>1)个整数存放到一维数组 R 中。请设计一个在时间和空间两方面都尽可能高效的算法。将 R 中保存的序列循环左移 p (0
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C,C++ 或 Java 语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
解答:(1)基本设计思想:新建数组保存前 p 个元素,然后将后 n-p 个元素前移 p 个位置,最后将前 p 个元素放置在数组的后 p 个位置。
(2)
class Solution{
public int[] leftMoveP(int p,int[] nums){ //p 为 左移位置,nums为一维数组 R
//保存前面p个字符
int[] firstP=new int[p];
for(int i=0;i
(3)时间复杂度:三次循环的时间复杂度分别为 O(p),O(n-p),O(p),因此时间复杂度是O(n)
空间复杂度:创建了大小为 p 的辅助数组,因此空间复杂度为 O(p)
43.(11分)某计算机字长为 16 位,主存地址空间大小为 128KB,按字编址。采用单字长指令格式,指令各字段定义如下图所示。
15 12 11 6 5 0
OP | Ms | Rs | Md | Rd |
源操作数 目的操作数
转移指令采用相对寻址方式,相对偏移量用补码表示,寻址方式定义见下表格。注意:(X) 表示存储器地址 X 或寄存器 X 的内容。
Ms/Md | 寻址方式 | 助记符 | 含义 |
000B | 寄存器直接 | Rn | 操作数=(Rn) |
001B | 寄存器间接 | (Rn) | 操作数=((Rn)) |
010B |
寄存器间接、自增 | (Rn)+ | 操作数=((Rn)),(Rn)+1->(Rn) |
011B |
相对 | D(Rn) | 转移目标地址=(PC)+(Rn) |
请回答一下问题:
(1)该指令系统最多可以有多少条指令?该计算机最多有多少个通用寄存器?存储器地址寄存器(MAR)和存储数据寄存器(MDR)至少各需多少位?
(2)转移指令的目标地址范围是多少?
(3)若操作码 0010B 表示加法操作(助记符为 add),寄存器 R4 和 R5 的标号分别为 100B 和 101B,R4 的内容为 1234H,R5 的内容为 5678H,地址 1234H 中的内容为 5678H,地址 5678H 中的内容为 1234H,则汇编语言 “add(R4),(R5)+” (逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,那些寄存器和存储单元中的内容会改变?改变后的内容是什么?
解答:(1)指令的 OP 字段长度为 4,因此最多可以有 2^4=16 条指令。
操作数占 6 位,寻址方式(Ms/Md)占 3 位,因此寄存器编号占 3 位,所以最多有 2^3=8 个寄存器。
主存地址空间大小为 128KB,计算机字长为 16 位即 2B,因此至少有 128KB/2B=(2^7 * 2^10)/2 = 2^16 个地址,因此存储器地址寄存器(MAR)至少需要 16 位。字长是 16 位,因此存储数据寄存器(MDR)的长度至少是 16 位。
(2)寄存器字长为 16 位,因此 PC 和 Rn 可表示地址范围是 0~2^16-1。MAR 有 16 位,因此寄存器表示范围内的地址都可以映射,因此转移指令的目标地址范围是 0000H-FFFFH。
(3)机器码为 0010 001 100 010 101B,十六进制表示为 2315H
((R4))=5678H ,((R5))=1234H,将这两个值相加后放入 ((R5)) 中,然后 (R5) 自增一。因此存储单元 5678H 中的内容变为 68ACH,寄存器 R5 中的内容变为 5679H,其余存储单元和寄存器中的内容不变。
44.(12 分)某计算机主存地址空间大小为 256MB,按字节编址。指令 Cache 和数据 Cache 分离,均有 8 个 Cache 行,每个 Cache 行大小为 64B,数据 Cache 采用直接映射方式。现有两个功能相同的程序 A 和程序 B,其伪代码如下:
//程序A
int a[256][256];
...
int sum_array1(){
int i,j,sum=0;
for(i=0;i<256;i++)
for(j=0;j<256;j++)
sum+=a[i][j];
return sum;
}
//程序 b
int a[256][256];
...
int sum_array2()
{
int i,j,sum=0;
for(int j=0;j<256;j++)
for(int i=0;i<256;i++)
sum+=a[i][j];
return sum;
}
假定 int 类型数据用 32 位补码表示,程序编译时 i、j、sum 均分配在寄存器中,数组 a 按行优先方式存放,其首地址为 320(十进制数)。请回答一下问题,要求说明理由或给出计算过程。
(1)若不考虑用于 Cache 一致性和替换算法的控制位,则数据 Cache 的容量为多少?
(2)数组元素 a[0][31] 和 a[1][1] 各自所在主存块对应的 Cache 行号分别是多少(Cache 行号从 0 开始)?
(3)程序 A 和程序 B 的数据访问命中率分别是多少?那个程序的执行时间更短。
知识点:Cache 的直接映射方式:将主存分为 n 个区,每个区有 m 行(即 Cache 总行数),行号为 i 的 Cache 行与主存的块号 j 对应关系为 i= j modm。
Cache 行有标记项和存储的数据组成,标记项如下:
有效位 | 脏位 | 替换控制位 | 标记位 |
该行是否有效 一致性维护位 替换算法的控制位 标记主存快号
Cache 标记位长度=主存地址-Cache地址长度。
采用直接映射方式时,Cache 地址结构:快号+块内地址
解答:(1)不考虑Cache 一致性(脏位)和替换算法的控制位(替换控制位),所以标记项项为 有效位+标记位 。有效位长度为 1。
地址空间大小为 256 MB = 2^8*2^10*2^10B= 2^28B (按字编址),因此地址的总长度有 28 位。每个 Cache 行大小位 64B=2^6B,因此块内地址有 6 位。有 8=2^3 个 Cache 行,因此 Cache 块号有 3 位。 所以标记位的长度为 28(总长度)-3(Cache 快号)- 6(块内地址)=19 位。
综上,标记项长度为 20 位。因此标记项的总大小为 20/8*8B=20B,数据的总大小为 64B*8= 512B,数据 Cache 的容量为 512B+20B=532B。
(2)int 型数据大小为 32 位 即 4B,一个 Cache 行大小为 64B 。
a[0][31] 的地址为 (320+31*4 )=444,其对应 Cache 号为 444/64 向下取整为 6。
a[1][1]=320+256*4+1*4=1348 ,其对应块号为 1348/64%8 向下取整为 5。
(3)数组 a 的大小为 256*256*4B=2^8*2^8*2^2=2^18B,共需 2^18/2^6=2^12 个主存块。程序 a 按行访问且数组按行优先存储,所以每个主存块第一个元素未命中,未命中次数为 2^12 次。共需访问 256*256=2^16 次,因此命中率为 (2^16-2^12)/2^16=93.75%
程序 b 按列访问数组,而每个主存块储存 64B/4B=16 个元素,当有连续 8 行 连续 16 个元素为一组充满内存块时,所访问的下一个元素为下一行元素,不在Cache中,必定无法命中,因此命中率为 0。
程序 a Cache 命中率显然高于程序 b ,因此程序 a 的执行时间更短。
45.(7分)假设计算机系统采用 CSCAN(循环扫描)磁盘调度算法,使用 2KB 的内存空间记录 16384 个磁盘块的空闲状态。
(1)请说明在上述条件下如何进行磁盘空闲状态的管理。
(2)设某单面磁盘旋转速度为 6000rpm,每个磁道有 100 个扇区,相邻磁道间的平均移动时间为 1ms。若在某时刻,磁头位于 100 号磁道处,并沿着磁道号增大的方向移动,(见下图),磁道号请求队列为 50,90,30,120,对请求队列中的每个磁道需读取一个随机分布的扇区,则读完这四个扇区点需要多长时间?要求给出计算过程。
(3)如果将磁盘替换为随机访问的 Flash 半导体存储器(如 U 盘、SSD等),是否有比 CSCAN 更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
知识点:常见磁盘调度算法——FCFS 调度即先来先服务(按请求顺序访问磁道),SSTF 调度即最短寻道优先(优先访问请求序列中距磁头当前位置最近的磁道),SCAN 调度即电梯调度(按照磁头移动方向顺序访问,到达最外侧(或最里侧)磁道后,以当前位置为起点反向扫描),CSCAN 调度即循环扫描(按磁头移动方向顺序访问,到达最外侧(或最里侧)磁道后,移动到最里侧(或最外侧)磁道以相同的运动方向扫描)
rpm=r/min=转每分钟
访问时间=寻道时间+旋转延迟时间+传输时间
旋转延迟时间=1/(旋转速度*2)
传输时间=每次读写字节数/(旋转速度*磁道上的字节数)
解答:(1)内存空间为 2KB=2048B=2048*8b=16384b,以位图的形式表示每个磁盘块的空闲状态(1 个 比特存储一个磁盘块的空闲信息 )。为 1 表示当前磁盘块不空闲,为 0 表示当前磁盘块空闲。
(2)根据 CSCAN 算法,优先访问 120 号磁道,寻道时间为 120-100=20ms,接着分别访问30、50、90 号磁道,寻道时间分别 120-30=90ms,50-30=20ms,90-50=40ms。总的寻道时间为 20ms+90ms+20ms+40ms=170ms。
磁盘旋转速度为6000rpm=100r/s=0.1r/ms,故旋转延迟时间为 1/(0.1*2)ms=5ms,一共需要访问四个磁道,因此总的旋转延迟时间为 5*4=20ms
磁盘转速为 6000rpm=0.1r/ms,故读取一个完整磁道的时间为10ms,而一个磁道有 100 个扇区,故读取一个扇区的时间为 10/100=0.1ms,一共要读取四个扇区,因此传输时间为 0.1*4=0.4ms
综上所述,读完这四个扇区需要 170ms+20ms+0.4ms=190.4ms
(3)采用 FCFS 调度即先来先服务效率更高,因为 Flash 半导体存储器支持随机访问,故访问时间只取决于传输时间,采用 FCFS 调度效率更高。
46.(8分)设某计算机逻辑地址空间和物理地址空间均为 64KB,按字节编址。若某进程最多需要 6页(Page)数据存储空间,页的大小为 1KB,操作系统采用固定分配局部置换策略为此进程分配四个页框(Page Frame)。在时刻 260 前的该进程访问情况见下表(访问位即使用位)。
页号 | 页框号 | 装入时刻 | 访问位 |
0 | 7 | 130 | 1 |
1 | 4 | 230 | 1 |
2 | 2 | 200 | 1 |
3 | 9 | 260 | 1 |
若该进程执行到时刻 260 时,要访问逻辑地址为 17CAH 的数据。请回答一下问题:
(1)该逻辑地址对应的页号是多少?
(2)若采用先进先出(FIFO)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。
(3)若采用时钟(CLOCK)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程(设搜索下一页的指针沿顺时针方向移动,且当前指向 2 号页框,示意图如下所示)
知识点:逻辑地址=页号+页内地址
物理地址=页框号+页内地址
CLOCK 置换算法:如上图所示,假设初始时,访问位为 0,内存为空,指针沿顺时针或逆时针移动,当要放入数据时,若当前内存访问位为 0,数据放入,访问位置为 1,指针移动 ;若当前访问位为 1 ,访问位置位 0 ,但不将数据不放入,移动指针进入下一轮比较直至放入数据。
解答:(1)计算机逻辑地址空间和物理地址空间均为 64KB=2^6*2^10B=2^16B,又因为按字节编址,因此逻辑地址空间和物理地址空间的地址位数均为 16 位。又因为页的大小为 1KB=2^10B,即页内地址有 10 位,所以页号/页框号占据 6 位。
17CA H= 0001 0111 1100 1010B,前六位是页号,因此页号为 000101B 即 5。
(2)根据 FIFO 算法,页号 0 装入时间最早,应被替换,此时,页号 5 对应的页框为 7 ,因此物理空间地址为 0001 1111 1100 1010B即 1FCAH。
(3)当前指向 2 号页,访问位为 1,不放入页但将访问位置为 0。顺时针移动指针后,1 号页, 0 号页,3 号页访问位均为 1,无法替换,将访问位置为 1。指针重新回到 2 号页处,此时访问位为 0,5 号页替换 2 号页,对应页框号为 2。因此物理空间地址为 0000 1011 1100 1010B 即 0BCAH。
47.(9分)某局域网采用 CSMA/CD 协议实现介质访问控制 ,数据传输速率为 10Mbps,主机甲和主机乙之间的距离为 2km,信号传播速度为 200000 km/s。请回答一下问题,要求说明理由或写出计算过程。
(1)若主机甲和主机乙发送数据时发生冲突,则从开始发送数据时刻起,到两台主机均检测到冲突时刻止,最短需要经过多长时间?最长需要经过多长时间?(假设主机甲和主机乙发送数据过程中,其他主机不发送数据)
(2)若网络不存在任何冲突与差错,主机甲总是以标准的最长以太网数据帧(1518B)向主机乙发送数据,主机乙每成功收到一个数据帧后立即向主机甲发送一个 64B 的确认帧,主机甲收到确认帧后方可发送下一个数据帧。此时主机甲的有效数据传输速率是多少?(不考虑以太网的前导码)
知识点:最长的的以太网数据帧(1518B)=6B 的目的地址(DMAC)+ 6B 的源地址(SMAC)+ 2B 的以太类型(EtherType) + 1500B 的数据(Payload)+ 4B 的校验(FCS)
解答:(1)当冲突发生在信道正中间时,耗时最短,此时耗时 1/200000*2 s=0.00001ms=0.01ms
当某个主机发送的数据发送到另一台主机初时产生冲突,耗时最长,此时耗时 2/200000 *2s=0.04ms
(2)主机甲将数据发送到传输线路上的时间为 1518B/10Mb/s=1518*8/10000ms=1.2144 ms,数据在线路上的传播时间为 2km/200000km/s=0.01ms;主机乙将数据发送到传输线路上的时间为 64B/10Mb/s=64*8/10000ms=0.0512ms,数据在线路上的传播时间为2km/200000km/s=0.01ms。因此总消耗时间为 1.2144ms+0.01ms+0.0512ms+0.01ms=1.2856ms。
最长以太网数据帧的数据长度为 1500B,因此主机甲的有效传输速率为 1500B/1.2856ms=(1500*8/1000/1000)Mb/(1.2856/1000)s=(1500*8/1000/1.2856)Mbps≈9.33Mbps