一、单项选择题
1.已知程序如下。
int S(int n){
return n<=0?0:s(n-1)+n;
}
void main(){
cout<<S(1);
}
程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息依次是_____。
A.main()->S(1)->S(0) B.S(0)->S(1)->main()
C.main()->S(0)->S(1) D.S(1)->S(0)->main()
解答:A
2.先序序列 a,b,c,d 的不同二叉树的个数是______。
A.13 B.14 C.15 D.16
解答:B
根节点为 A,左右子树个数可能是 0+3,1+2,2+1,3+0 三种情况
当子节点个数为 0 时,有 0 钟情况。
当子节点个数为 1 时,有 0+1,1+0,共 1+1=2 种可能。
当子节点个数为 2 时,有 0+2,1+1,2+0 ,共 2+1+2=5 种可能。
当子节点个数为 3 时,有 0+3,1+2,2+1,3+0,(5+1*2)*2=14 种可能。
3.下列给出的是从根分别到达两个叶节点路径上的权值序列,属于同一棵哈夫曼树的是____。
A.24,10,5 和24,10,7 B.24,10,5 和24,12,7
C.24,10,10 和 24,14,11 D.24,10,5 和24,14,6
解答:D
哈夫曼树中,叶子节点的权值是给定的,非叶子节点的权值是其左右子节点权值之和。
A项,若两个 10 为同一节点,10 子节点为 5 和 7,不满足要求;若不为同一节点,24 子节点 为 10 和 12,不满足要求
B项,24 子节点 为 10 和 12,不满足要求
C项,24 ,10,10,第三层子节点无兄弟,因此不属于哈夫曼树
D项, 符合要求,24 子节点为 10,14;10 子节点为 两个 5;14 子节点为 6 和 8。
4.现有一棵无重复关键字的平衡二叉树(AVL 树),对齐进行中序遍历能够得到一个降序序列。下列关于该平衡二叉树的叙述中,正确的是______。
A.根节点的度一定为 2 B.树中最小节点一定是叶节点
C.最后插入的元素一定是叶节点 D.树中最大元素一定无左子树
解答:
A项,若跟根节点值为 2 且右子树上只有一个节点 3 , 可以满足题意
B项,A 中示例
C项,最后插入的元素可能导致平衡调整,因此不一定是叶节点
D项,若树中最大元素存在左子树,则中序遍历无法得到降序序列,因为平衡二叉树必为二叉搜索树
5.设有向图 G=(V,E),顶点集V={v0,v1,v2,v3},边集 E={<v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点V0 开始对图进行深度优先遍历,则可能得到的不同遍历序列个数为______.
A.2 B.3 C.4 D.5
解答:D
共五种可能,如下所示
v0,v1,v3,v2; v0,v2,v1,v3; v0,v2,v3,v1; v0,v3,v1,v2; v0,v3,v2,v2
6.求下面带权图的最小(代价)生成树时,可能是克鲁斯卡尔(Kruskal) 算法第二次选中但不是普里姆算法(Prim) 第 2 次选中的边是______.
A.(V1,V3) B.(V1,V4) C(V2,V3) D.(V3,V4)
解答:C
克鲁斯卡尔算法是每次选择至少有一个顶点未被选中的权值最小的边加入结果集;而普里姆算法是距离有且一个顶点在结果集中的边加入结果集.
7.下列选项中,不能构成折半查找关键字比较序列的是_______.
A.500,200,450,180 B.500,450,200,180
C.180,500,200,450 D.180,200,500,450
解答:
折半查找区间在不断缩小.(折半查找判定树是一个二叉排序树)
A项, 前 3 个关键字确定区间为 [200,450] 或[450,200],180 不在这两个区间里,因此不能构成折半查找关键字比较序列.
8.已知字符串 S 为"abaabaabacacaabaabcc",模式串 t 为"abaabc".采用 KMP 算法进行匹配,第一次出现"失配"(s[i]!=t[j]),i=j=5,下一次开始匹配时,i 和 j 的值分别是_____.
A.i=1,j=0 B.i=5,j=1 C.i=5,j=2 D.i=6,j=2
解答:C
abaabc 对应next数组值为 0,0,0,1,1,2.(链接 前缀函数与 KMP 算法 - OI Wiki (oi-wiki.org))
t=5 时失配,j 变为 2,i 不变.
9.下列排序算法中,元素的移动次数与关键字的初始排列次序无关的是_____.
A.直接插入排序 B.起泡排序 C.基数排序 D.快速排序
解答:C
ABD 在关键字有序的情况下,移动次数为 0,而 基数排序不为 0 ,故选 C
10.已知小根堆为 8,15,10,21,34,16,12,删除关键字 8 后需要重建堆,再次过程中,关键字的比较次数为______.
A.1 B.2 C.3 D.4
解答:C
小根堆删除最小元素后,用最后一个元素填补取走的堆顶元素,即新堆为12,15,10,21,34,16, 12 与 10 比较一次,12 与 16比较一次.
11.希尔排序组内排序采用的是______
A.直接插入排序 B.折半插入排序 C.快速排序 D.归并排序
解答:A
12.计算机硬件能够执行的是_____
I.机器语言程序 II.汇编语言程序 III.硬件描述语言程序
A.I B.I,II C.I,III D.I,II,III
解答:A
汇编语言经过汇编才能执行.
硬件描述语言程序用于描述数字电路和系统的设计和行为,是高级语言编写的.
13.由 3 个 '1' 和 5 个 '0' 组成的 8 为二进制编码中,能表示的最小整数是_____.
A.-126 B.-125 C.-32 D.-3
解答:B
能表示的最小整数位 10000011 即 01111101 的相反数,-125
14.下列有关浮点数加减运算的叙述中,正确的是_____
I.对阶操作不会引起阶码上溢或下溢
II.右归和尾数舍入都可能引起阶码上溢
III.左归可能引起阶码下溢
IV.尾数溢出时,结果不一定溢出
A.II,III B.I,II,IV C.I,III,IV D.I,II,III,IV
解答:D
I正确;
II 右归,当浮点数运算的结果出现尾数出现溢出(双符号位为 01 或 10 )时,将尾数算数右移一位,阶码+1,可能导致溢出;尾数舍入可能导致阶码+1,上溢
III 左归时,算数左移,阶码 -1,可能溢出.
IV 尾数溢出时,会被截断,可能产生误差,不一定溢出.
15.假定主存地址位 32 位,按字节编址,主存和Cache 之间采用直接映射方式, 主存块大小为 4 个字,每字 32 位,采用回写(write back) 方式,则能存放 4K 字数据的 Cache 的总容量的位数至少是______.
A.146K B.147K C.148K D.158K
解答:C
回写方式:当 CPU 要将数据写回内存时,他只会先更新缓冲区内存上的数据,然后在总线不塞车 的时候,才会把数据写回 DRAM.
直接映射方式的地址结构为 主存字块标记+Cache字块标记+字块内地址.(共 32 位)
主存块大小为 4*32b=16B=2^4B,因此 字块内地址有 4 位.
Cache 大小为 4K字, 主存块大小为 4字,因此 Cache 有 4K/4=1K=2^10 个块, Cache 字块标记有 10 位.
主存字块标记栈 32-4-10=18位.
Cache 总容量=存储容量+标记阵列容量(为标记每一个Cache行而存储的信息位,一般包括有效位,标记位,一致性维护位和替换算法控制位)
存储容量为 4K*32b=128Kb
标记阵列容量中 有效位一定存在 ,1 位;标记位即主存字块标记位长度为 18位; 采用写回方式,因此一致性维护位存在, 1 位;未提及替换控制算法,因此该位视为不存在.因此每个块的标记位长度为 20位,Cache 的标记阵列容量为 2^10*20b=20Kb.
因此总的Cache 容量为 20Kb+128Kb=148Kb
16.假定编译器将赋值语句 "x=x+3;" 转化为指令 "add xaddr,3",其中 xaddr 是 x 对应的存储单元地址.若执行该指令的计算机采用页氏虚拟存储管理方式,并配有相应的 TLB,且 Cache 采用直写(Write Through) 方式,则完成该指令需要访问主存的次数至少是______.
A.0 B.1 C.2 D.3
解答:B
该指令的执行可划分位取值,计算,写回方式.
取值时,若存在于 Cache 中,则不需要访问主存;计算时,不需要访问主存;写回时,采用直写方式,即同时写入 Cache 和主存,访问主存 1 次.因此至少需要访问主存 1 次.
17.下列存储器中,需要定时刷新的是______.
A.SRAM B.SDRAM C.ROM D.FLASH
解答:B
SRAM 静态随机存储器
SDRAM 同步动态随机存储内存.DRAM为易失性存储器,需要定期刷新以保存数据.
ROM 只读存储器
FLASH 是动画设计软件.
18.某计算机使用 4 体交叉编址存储器,假设在主存上出现的主存地址(十进制)序列为 8005,8006,8007,8008,8001,8002,8003,8004,8000,则可能发生的访存冲突的地址队为______。
A.8004 和 8008 B.8002 和 8007 C.8001 和 8008 D.8000 和 8004
解答:D
4 体交叉编址存储器默认为 低位多体交叉,即连续地址存储在不同的体中。文中地址对应存储器序号(对 4 取余)如下:
地址 | 8005 | 8006 | 8007 | 8008 | 8001 | 8002 | 8003 | 8004 | 8000 |
存储器序号 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 0 |
显然 8004 和 8000 可能发生访存冲突。
19.下列有关总线定时的叙述中,错误的是______.
A.异步通信方式中,全互锁协议最慢
B.异步通信方式中,非互锁协议的可靠性最差
C.同步通信方式中,同步时钟信号可由各设备提供
D.半同步通信方式中,握手信号的采样由同步时钟控制
解答:C
C项,同步通信方式中,采用统一的时钟信号。
异步通信方式:发送方和接收方在不同的时间间隔内进行数据的传输和接收。
同步通信方式:通信的发送方和接收方按照一定的时间顺序进行数据传输。
半同步通信方式:发送方和接收方可以约定一个时间点作为数据传输的起始点或者通过特定的同步协议来确定传输的起始点。
全互锁协议:1.发送方发送请求给接收方 2.接收方发送确认应答给发送方 3.发送方发送数据 4.接收方发送应答
非互锁协议:传输数据时没有制约关系
20.若磁盘转速为 7200rpm,平均寻道时间为 8ms,每个磁道包含 1000 个扇区,则访问一个扇区的平均存取时间为______。
A.8.1ms B.12.2ms C.16.3ms D.20.5ms
解答:B
存取时间=寻道时间+延迟时间+传输时间
寻道时间为题中寻道时间 8ms
存取一个扇区的延迟时间为转动半圈的时间。磁盘转速为 7200rpm 即 7200/60 rps=120 rps,一秒转120 圈,转 半 圈需要 1000/240=4.17ms。
每个磁道包含 1000 个扇区,因此传输时间为 1 转时间/1000=8.34ms/1000=0.00832ms
因此平均存取时间为 8ms+4.17ms+0.00832ms,约为 12.2 ms,选B
21.在采用中断 I/O 方式控制打印输出的情况下,CPU 和打印控制接口中的 I/O 端口之间交换的信息不可能有______。
A.打印字符 B.主存地址 C.设备状态 D.控制命令
解答:B
在程序中断 I/O 中,CPU 和打印机直接交换,打印字符之间传输到打印机的 I/O 端口,不会涉及主存地址,而 CPU 和打印机通过 I/O 端口中状态口和控制口实现交互。
22.内部中断(内中断)可分为故障(fault),陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是_____。
A.内部异常的产生与当前执行指令有关
B.内部异常的检测由 CPU 内部逻辑实现
C.内部异常的响应发生在指令执行过程中
D.内部异常处理后返回到发生异常的执行继续执行
解答:D
D项,在特殊情况如除数为 0 和自行中断都会掉过中断指令。
内部中断指的是由 CPU 内部事件引起的中断。
故障是指由于硬件或软件错误而引起的中断。
陷阱是指由软件引起的中断,通常用于实现系统调用和异常处理。与故障的不同之处,故障是因错误而引发,而陷阱是由程序主动发起。
终止:严重的错误,通常是由于硬件故障或系统错误。
23.处理外部中断时,由操作系统保存的是_____。
A.程序寄存器(PC)的内容 B.通用寄存器的内容
C.块表(TLB)中的内容 D.Cache 中的内容
解答:B
中断处理过程中,PC 由中断隐指令保存,而通用寄存器内容由 操作系统保存。
24.假定下列指令已装入指令寄存器,则执行时不能导致 CPU 从用户态变为内核态(系统态)的是______。
A.DIV R0,R1; R0/R1->R0
B.INT n; 产生软中断
C.NOT R0; 对R0内容取非
D.MOV R0,addr; 把地址addr 处的内存数据放入 R0
解答:C
A 除0 时会出现异常导致中断
B 产生软中断
D 可能缺页
25.下列操作中,会导致进程从执行态变为就绪态的是______。
A.执行 P(wait) 操作 B.申请内存失败 C.启动 I/O 设备 D.被高级进程抢占
解答:D
ABC 会变为阻塞态
26.若系统 S1 采用死锁避免方法,S2 采用死锁检测方法。下列叙述中,正确的是_____。
I.S1 会限制用户申请资源的顺序,而S2 不会
II.S1 需要进程运行所需资源总量信息,而 S2 不需要
III.S1 不会给可能导致死锁的进程分配资源,而 S2 会
A.I,II B.II,III C.I,III D.I,II,III
解答:B
死锁预防方法:通过破坏死锁产生的四个必要条件中(互斥条件,请求和保持条件,不剥夺条件,循环等待条件)的一个或多个来避免死锁。
死锁避免方法:若此次分配后,系统处于不安全状态,此次申请作废。如银行家算法
死锁检测方法:允许进入死锁,定期检测是否存在死锁,若存在,采用某种方法消除死锁。
27.系统为进程分配了 4 个页框号,该进程已访问的页号序列为 2,0,2,9,3,4,2,8,2,4,8,4,5.若进程需要访问的下一页的页号为 7,则根据 LRU 算法,应淘汰的页面是_____.
A.2 B.3 C.4 D.8
解答:A
此时 4 个页框号分别是 5,4,8,2. 最近最长时间未被使用的是 页框号 2,故选 A。
LRU- Least Recently Used 最近最久未被使用
28.在系统内设置磁盘缓冲区的主要目的是______.
A.减少磁盘 I/O 次数 B.减少平均寻道时间
C.提高磁盘数据可靠性 D.实现设备无关性
解答:A
磁盘和内存速度存在差异,从高数缓冲区中复制的速度比磁盘 I/O 的机械操作快很多。
29.在文件的索引节点中存放直接索引指针 10 个,一级和二级索引指针各一个。磁盘块大小为1 KB,每个索引指针占 4 字节。若文件的索引节点已在内存中,则把该文件偏移量(按字节编址)为 1234 和 307400 处所处的磁盘块读入内存,需访问的磁盘块个数分别是_______。
A.1,2 B.1,3 C.2,3 D.2,4
解答:C
10 个直接索引节点指向数据块大小为 10*1KB=10KB。
1 个一级指针所指向的数据块大小为 (1KB/4B)*1KB=256KB=
1 个二级索引指针指向数据块的大小为 (1KB/4B)^2 *1KB=256*256KB
文件偏移量为 1234<10KB,可以由直接索引指针得到,因此只需访问一个磁盘块。
文件偏移量为 307500(>256KB+10KB ,<256*256KB),因此通过二级索引指针得到,故需访问3 个磁盘块(访盘2次得到磁盘块地址,访盘 1 次读出内容)
30.在请求分页系统中,页面分配策略和页面置换策略不能组合使用的是_____.
A.可变分配,全局置换 B.可变分配,局部置换
C.固定分配,全局置换 D.固定分配,局部置换
解答:C
可变和固定分配的关键在于系统为每个进程分配的物理块数量是否固定。
全局置换,用一个进程的新页面替换另一个进程的页面。
局部置换,在本进程的页面中选出一个进行替换。
31.文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的 32~127 号块中,每个盘块占 1024 字节,盘块和块内字节均从 0 开始编号。假设 要释放的盘块号为 409612,则位图中要修改的位所在的盘块号和块内字节序号分别是_____。
A.81,1 B.81,2 C.82,1 D.82,2
解答:C
每个盘块占 1024 字节,因此位图法一个盘块可以表示 1024*8 个盘块,因此盘块 409612 在盘块 32+409612/(1024*8)=50+32=82 上,块内字节序号为 (409612/(1024*8))/8=1。选 C
32.某硬盘有 200 个磁道(最外侧磁道号为 0),磁道访问请求序列为 130,42,180,15,199,当前磁头位于第 58 号磁道并从外侧向内侧移动。按照 SCAN 调度方法处理完上述请求后,磁头移动过的磁道数为 ______.
A.208 B.287 C.325 D.382
解答:C
SCAN (Scanning Algorithm)算法,按照一定方向扫描磁盘直到当前方向上的所有请求都被满足,然后反向扫描,一般指电梯调度算法。
58->130->180->199->42->15
(199-58)+(199-15)=141+184= 325
33.通过 POP3 协议接收邮件时,使用的传输层服务类型是______.
A.无连接,不可靠的数据传输服务 B.无连接,可靠的数据传输服务
C.有连接,不可靠的数据传输服务 D.有连接,可靠的数据传输服务
解答:D
POP3 建立在 TCP 协议的基础上,故选 D
34.使用两种编码方案对比特流 01100111 进行编码如下图所示,编码 1 和编码 2 分别是___.
A.NRZ 和曼彻斯特 B.NRZ 和差分曼彻斯特
C.NRZI 和曼彻斯特 D.NRZI 和差分曼彻斯特
解答:A
NRZ (None Return To Zero)编码:高电平表示 1,低电平表示 0。
NRZI (None Return To Zero Invert )编码:信号电平翻转表示0,信号电平不变表示 1。
曼彻斯特编码:前低后高表示 0,前高后低表示 1
差分曼彻斯特编码:对于第一个比特,前高后低表示 0,前低后高表示 1。对于剩余比特,在每个时钟周期的起始处有跳变表示 0 ,否则是 1.
编码 1 0 均为低电平,因此是 NRZ 编码; 编码 2 前高后低均为 1,因此是曼彻斯特编码。
35.主机甲 通过 128kbps 卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播延迟为 250ms,帧长为 1000 字节,不考虑帧确认的开销,为使链路利用率不小于 80%,则帧序号的比特数至少是_______.
A.3 B.4 C.7 D.8
解答:B
一个发送周期消耗的时间=单个帧的发送时间+发送帧传播时延+确认帧的发送时间+确认帧的传播时延。
单个帧的发送时间为 1000B/128kbps=8/128 s=62.5ms。因此一个发送周期消耗的时间为 62.5+250*2=562.5ms,链路利用率不小于 80%,则至少80%的时间在发送帧,可以发送 562.5*0.8/62.5=7.2 个帧,则对于需要的比特数 n,有 2^n-1>=7.2,解得 n 为 4.
36.下列关于CSMA/CD 协议得叙述中,错误的是_____。
A.边发送数据帧,边检测是否发生冲突
B.适用于无线 网络,以实现无线链路连接
C.需要根据网络跨距和数据传输速率限定最小帧长
D.当信道传播时延趋于 0 时,信道利用率趋于 100%
解答:B
CSMA/CD 适用于有线网络,CSMA/CA 适用于无线网络。
37.下列关于交换机得叙述中,正确的是______。
A.以太网交换机本质上是一个多端口网桥
B.通过交换机互联的一组工作站构成一个冲突域
C.交换机每个端口所连网络构成一个独立的广播域
D.以太网交换机可实现采用不同网络层协议的网络互联
解答:A
交换机冲突域指的是连接在同一交换机上的设备构成的网络范围,因此B错误
广播域属于网络层概念,网络层设别如路由器划分广播域。因此 C 错误
以太网交换机工作在数据链路层,因此 D错误
38.某路由器路由表如下所示:
若路由器收到一个目的地址为 169.96.40.5 的 IP 分组,则转发该 IP 分组的接口是_______。
A.S1 B.S2 C.E3 D.E4
解答:C
根据最长前缀匹配原则,选 E3
D项为默认路由,在以上都不能匹配时,选择该项。
39.主机甲和主机乙新建一个 TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙时钟以 MSS=1KB 的大小的段发送数据,并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认,忽略段传输时延。若乙将收到的数据全部传入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时的情况下,经过 4 个 RTT,甲的发送窗口大小为______。
A.1KB B.8KB C.16KB D.32KB
解答:A
正常快启动时,甲的发送窗口变化为1KB->2KB->4KB->8KB->16KB,乙的发送窗口变化为 16KB->15KB->13KB->9KB->1KB,依次二者中的较小值 1KB
40.某浏览器发出的 HTTP 请求报文如下:
下列叙述中,错误的是______
A.该浏览器请求 index.html
B.Intex.html 存放在 www.test.edu.cn 上
C.该浏览器请求使用持续连接
D.该浏览器曾经浏览过 www.test.edu.cn
解答:C
ABCD 分别与 1,2,3,4 行对应。
Connection:Close 表示使用非持续连接。
二、综合应用题
41.(15分)用单链表保存 m 个整数,节点的结构为 [data][link], 且 |data|<=n (n 为正整数)。现要求设计一个时间复杂度尽可能高效的算法,对于链表中 data 绝对值相等的节点,仅保留第一次出现的节点而删除其余绝对值相等的节点。例如,若给定的单链表 Head 如下所示:
则删除后 Head 为:
要求:
(1)给出算法的基本设计思想。
(2)使用 C 或 C++ 语言,给出单链表节点的数据类型定义
(3)根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释
(4)说明你所设计算法的的时间复杂度和空间复杂度。
解答:(1)遍历链表的同时,使用数组实现对已经访问过元素的绝对值的计数。对于链表中的节点,其值的绝对值计数不为 0 ,删除该节点,否则对应值计数加一。
(2)
struct ListNode{
int val;
ListNOde *next;
};
(3)
class solution{
public:
ListNode* func(ListNode* head,int n){ //head 指向链表头节点,空头
int nums[n+1]={0};
ListNode* temp=head;
while(temp->next!=nullptr){
int absVal=abs(head->next->val);
if(nums[absVal]==0){ //当前元素得绝对值未曾出现过
temp=temp->next;
nums[absVal]++;
}else{ //当前元素已出现过
temp->next=temp->next->next;
}
}
return head;
}
}
(4) 只需要顺序遍历链表一次,因此时间复杂度为 O(m);需要开辟 n+1 个空间,因此空间复杂度为 O(n)。
42.(8分)已知含有 5 个顶点的图 G 如下图所示:
请回答一下问题:
(1)写出 图 G 的邻接矩阵
(2)求 A^2,矩阵 A^2 中位于 0 行 3 列元素值的含义是什么?
(3)若已知具有 n(n>=2) 个顶点的图的邻接举证为 B,则 B^m (2<=m<=n) 中非零元素的含义是什么?
解答:(1) 用表格表示如下:
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 0 |
(2)A^2 用表格表示如下:
3 | 1 | 0 | 3 | 1 |
1 | 3 | 2 | 1 | 2 |
0 | 2 | 2 | 0 | 2 |
3 | 1 | 0 | 3 | 2 |
1 | 2 | 2 | 1 | 3 |
A^2 中第 0 行 3 列的元素值得含义是,从顶点 0 到顶点 3 的长度为 2 的路径条数为 3.
(3)假设是第 i 行第 j 列的元素,其含义为 从顶点 i 到顶点 j 的长度为 m 的路径的条数。
43.(13分)某 16 位计算机的主存按字节编码,存取单位为 16 位;采用 16 位定长指令字格式; CPU 采用单总线结构,主要部分如下图所示。图中 R0~R3 为通用寄存器; T 为暂存器;SR 为移位寄存器,可以实现直送 (mov),左移一位(left)和右移一位(right)3 种操作,控制信号为 SRop,SR 的输出由信号 SRout 控制;ALU 可实现直送(mova),A 加 B(add),A 减 B(sub),A 与 B(and),A 或 B(or),非 A(not),和 A 加一(inc)7 种操作,控制信号为 ALUop。
请回答一下问题:
(1)图中哪些寄存器是 程序员可见的?为何要设置暂存器 T?
(2)控制信号 ALUop 和 SRop 的位数至少是多少?
(3)控制信号 SRout 所控制部件的名称或作用是什么?
(4)端点 1~9 中,哪些端点需连接到控制部件的输出端?
(5)为完善单总线数据通路,须在 1~9 中相应的端点之间添加必要的连线。写出连线的起点和终点,以正确表示数据的流通方向。
(6)为什么 2 路选择器 MUX 一个输入端是 2?
知识点:二路选择器 MUX:从两个输入信号中选择一个进行输出。
解答:(1)通用寄存器 R0~R3 和 程序寄存器 PC 程序员可见
CPU 是单总线,一次只能送一个数据,若无T,ALU A、B端口数据总是一致,出现错误。
(2)ALUop 控制ALU,ALU 共有七种操作,因此至少有 3 位。
SRop 控制 SR,SR 有三种操作,因此至少有 2 位。
(3)三态门,主要作用是控制移位器同总线之间的数据通路的连接与断开。
(4)端口 1,2,3,5,8 需连接到控制部件输出端。
(5)6->9,7->4(数据通过 6->9->7->4 传输到 ALU 的 B端)
(6)每条指令长度为 16 位,按字节编址,所以每条指令占 2 个内存单元,顺序执行时,下条指令地址为 (PC)+2。输入端为 2 ,便于执行 (PC)+2 操作。
44.(13分)题 43 中描述的计算机,其部分指令执行过程中的控制信号如题 44 图 a 所示。
该机指令格式如题 44 图 b 所示,支持寄存器直接寻址和寄存器间接寻址两种方式,寻址方式位分别是 0 和 1,通用寄存器 R0~R3 的编号分别为 0,1,2,3.
请回答以下问题:
(1)该机的指令系统最多可以定义多少条指令?
(2)若 inc、shl 和sub 的操作码分别为01H,02H和 03H,则一下指令对应机器码分别是什么?
inc R1; R1+1->R1
shl R2,R1; (R1)<<1->R2
sub R3,(R1),R2; ((R1))-(R2)->R3
(3)假设寄存器 X 的输入和控制信号分别为 Xin 和 Xout,其值为 1 表示有效,为 0 表示无效(如 PCout=1 表示PC内容送总线);存储器控制信号为 MEPop,用于控制存储器的读(read) 和写(write)。写出题 a 中标号 1 ~8 处的控制信号或控制信号的取值
(4)指令 "sub R1,R3,(R2)" 和 "inc R1" 的执行阶段至少需要多少个时钟周期?
解答:(1)该机采用 16 位定长指令字格式,Md,Ms1和 Ms2 各占 1位;Rd,Rs1 和 Rs2 为寄存器,寄存器有 4 个,至少需要 2 位表示,因此 Rd,Rs1 和 Rs2 各占 2 位。因此指令操作码占 16-3-2*3=7。最多可以定义 2^7=128 条指令.
(2)inc R1; 0000001 001 000 000B
shl R2,R1; 0000010 010 001 000B
sub,R3,(R1),R2; 0000011 011 101 010B
(3)1->0,2->mov
3->mova,4->left
5->read,6->sub,7->mov,8->Srout
(4)指令 "sub R1,R3,(R2)" 至少需要四个周期。1行即认为占一个时钟周期(可能的各周期行为:1.取 R3 送ALU 2.计算得到 (R2) 实际地址 3.取(R2) 内容送ALU 并计算 4.结果送R1)
指令 "inc R1" 至少需要 2 个周期。1.取 R1 送 ALU 并计算 2.结果送R1
45.(9分)有 A、B 两人通过信箱进行辩论,每个人都从自己的信箱中取得对方的问题。将答案和对对方提出的新问题组成一个邮件放入对方的邮箱。假设 A 的邮箱中最多放 M 个邮件,B 的邮箱中最多放 N 个邮件。初始时 A 的邮箱中有 x 个邮件(0<x<M),B的邮箱中有 y 个邮件(0<y<N),辩论者每取出一个邮件,邮件数 -1。A 和 B 的操作过程如下:
CoBigin
A{
while(true){
从 A 的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入 B 的邮箱;
}
}
B{
while(true){
从 B 的信箱中取出一个邮件;
回答问题并提出一个新问题;
将新邮件放入 A 的邮箱;
}
}
CoEnd
当信箱不为空时,辩论者才能从信箱中取邮件,否则需要等待;当信箱不满时,辩论者才能将邮件放入信箱,否则需要等待。请添加必要的信号量和 P,V(或 wait,signal )操作,以实现上述过程中的同步。要求写出完整过程,并说明信号量的初值和含义。
解答:
semaphore A=x; //A邮箱中邮件数
semaphore ALeft=M-x; //A 邮箱中最多可投放邮件数
semaphore B=y; //B邮箱中邮件数
semaphore BLeft=N-y; //B 邮箱中最多可投放邮件数
semaphore mutex_A=1; //用于 A 的邮箱互斥
semaphore mutex_B=1; //用于 B 的邮箱互斥
CoBigin
A{
while(true){
P(A); //等待 A 信箱中存在邮件
P(mutex_A);
从 A 的信箱中取出一个邮件;
v(mutex_A);
V(A); //A 邮箱邮件数量减一
回答问题并提出一个新问题;
P(BLeft); //等待 B 邮箱可投放邮件
P(mutex_B); //等待 B 邮箱可用
将新邮件放入 B 的邮箱;
V(mutex_B); //释放
V(BLeft); //B邮箱数量加一
}
}
B{
while(true){
P(B); //等待 B 信箱中存在邮件
P(mutex_B);//等待 B 邮箱可用
从 B 的信箱中取出一个邮件;
V(mutex_B);
V(B); //B 邮箱邮件数量减一
回答问题并提出一个新问题;
P(ALeft); //等待 A 邮箱可投放邮件
P(mutex_A);
将新邮件放入 A 的邮箱;
V(mutex_A);
V(ALeft); //A邮箱数量加一
}
}
CoEnd
46.某计算机系统按字节编址,采用二级页表的分页存储管理方式,虚拟地址格式如下所示:
10 位 10位 12位
页目录号 | 页表索引 | 页内偏移量 |
请回答下列问题:
(1)页和页框大小各为多少字节?进程的虚拟空间地址大小为多少页?
(2)假定页目录项和页表项均占 4 字节,则进程的页目录和页表项共占多少页?要求写出计算过程。
(3)若某指令周期内访问的虚拟地址为 0100 0000H 和 0111 2048H,则进行地址转化时共访问多少个二级页表?要求给出理由
解答:(1)页内偏移量有 12 位,系统按字节编址,因此页的大小为 2^12B=4KB。页框和页的大小相等,均为 4KB
虚拟地址格式为 32 位,因此该计算机系统是 32 位系统,虚拟地址空间大小为 2^32B,页的大小为 2^12B,因此进程的虚拟空间地址大小为 2^32/2^12=2^20 页
(2)页目录号有 10位,因此页目录项共有 2^10*4B=2^12B位,占 2^12B/2^12B=1 页。
虚拟地址空间中共有 2^20 个页,因此页表项个数为 2^20,大小为 2^20*4B=2^22B,占 2^22/2^12=2^10=1024 页
综上所述,进程的页目录和页表项共占 1024+1=1025 页。
(3)题中两个虚拟的值最高位均为 4,因此页目录号相同即访问的是同一个二级页表。因此共访问 1 个二级页表。
47.某网络拓扑如下图所示,其中路由器内网接口、DHCP服务器,WWW 服务器与主机 1 均采用静态 IP 地址配置,相关地址信息见图中标注;主机 2 ~主机 n 通过 DHCP 服务器动态获取 IP 地址等配置信息。
请回答下列问题:
(1)DHCP 服务器可为主机 2~ 主机 N 动态分配 IP 地址的最大范围是什么?主机 2 使用 DHCP 协议获取 IP 地址的过程中发送的封装 DHCP Discover 报文的 IP 分组的源 IP 地址和目的IP 地址分别是什么?
(2)若主机 2 的 ARP 表为空,则该主机访问 Internet 时,发出的第一个以太网帧的目的 MAC 地址是什么?封装主机 2 发送 Internet 的 IP 分组的以太网帧的目的 MAC 地址是什么?
(3)若主机 1 的子网掩码和默认网关配置分别为 255.255.255.0 和111.123.15.2,则该主机是否能访问 WWW 服务器?是否能访问 Internet?请说明理由。
知识点:DHCP协议,全称Dynamic Host Configuration Protocol ,动态 主机配置服务。
解答:(1)最大范围为 111.123.15.4/24 ~ 111.123.14.254/24(主机号全 1 为广播地址)
源 IP 地址为 0.0.0.0,目的IP 地址为 255.255.255.255(DHCP Discover 报文为广播报文)
(2)ff-ff-ff-ff-ff-ff(广播 MAC 地址)
00-al-al-al-al-al
(3)WWW 服务器与其属于同一个以太网且子网掩码配置正确,因此可以访问 WWW 服务器。
网关配置错误且为静态 IP 地址,因此 主机 1 的 IP 分组会被错误地发送往 DHCP 服务器,从而使得目的主机不可达,因此无法访问 Internet。