2017年全国硕士研究生入学统一考试
计算机科学与技术学科联考计算机学科专业基础综合试题
一、单项选择题:第1~40小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项最符合试题要求。
1.下列函数的时间复杂度是 。
int func(int n){ int i=0, sum=0;
while(sum < n) sum += ++i; return i; }
A.O(logn) B.O(n1/2) C.O(n) D.O(nlogn) 2.下列关于栈的叙述中,错误的是 。 Ⅰ.采用非递归方式重写递归程序时必须使用栈 Ⅱ.函数调用时,系统要用栈保存必要的信息 Ⅲ.只要确定了入桟次序,即可确定出栈次序
Ⅳ.栈是一种受限的线性表,允许在其两端进行操作 A.仅 I B.仅I、Ⅱ、Ⅲ C.仅I、Ⅲ、Ⅳ D.仅Ⅱ、Ⅲ、Ⅳ 3.适用于压缩存储稀疏矩阵的两种存储结构是 。
B.三元组表和邻接矩阵 A.三元组表和十字链表
C.十字链表和二叉链表 D.邻接矩阵和十字链表
4.要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是 。 A.只有左子树 B.只有右子树 C.结点的度均为1 D.结点的度均为2
5.已知一棵二叉树的树形如下图所示,其后序序列为e,a,c,b,d,g,f,树中与结点a同层的结点是 。
A.c B.d C.f D.g
6.已知字符集{a,b,c,d,e,f,g,h},若各字符的哈夫曼编码依次是0100,10, 0000, 0101,001, 011,11,0001,则编码序列0100011001001011110101的译码结果是 。
A. a c g a b f h B.a d b a g b b C.a f b e a g d D.a f e e f g d
7.已知无向图G含有16条边,其中度为4的顶点个数为3,度为3的顶点个数为4,其他顶点的度均小于3。图G所含的顶点个数至少是 。
A.10 B.11 C.13 D.15
8.下列二叉树中,可能成为折半查找判定树(不含外部结点)的是 。
9.下列应用中,适合使用B+树的是 。 A.编译器中的词法分析 B.关系数据库系统中的索引 C.网络中的路由表快速查找 D.操作系统的磁盘空闲块管理
10.在内部排序时,若选择了归并排序而没有选择插人排序,则可能的理由是 。 Ⅰ.归并排序的程序代码更短 Ⅱ.归并排序的占用空间更少 Ⅲ.归并排序的运行效率更高 A.仅Ⅱ B.仅Ⅲ C.仅Ⅰ、Ⅱ D.仅Ⅰ、Ⅲ
11.下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是 。 Ⅰ.插人排序 Ⅱ.选择排序 Ⅲ.起泡排序 Ⅳ.希尔排序 Ⅴ.堆排序 A.仅Ⅰ、Ⅱ B.仅Ⅱ、Ⅲ C.仅Ⅲ、Ⅳ D.仅Ⅳ、Ⅴ
12.假定计算机M1和M2具有相同的指令集体系结构(I SA),主频分别为1.5GHz和1.2 GHz。在M1和M2上运行某基准程序P,平均CPI分别为2和1,则程序P在M1和M2上运行时间的比值是 。
A.0.4 B.0.625 C.1.6 D.2.5
13.某计算机主存按字节编址,由4个64M×8位的DRAM芯片采用交叉编址方式构成,并与宽度为32位的存储器总线相连,主存每次最多读写32位数据。若double型变量x的主存地址为804 001AH,则读取x需要的存储周期数是 。
A.1 B.2 C.3 D.4 14.某C语言程序段如下:
for(i=0;i<=9;i++){
temp = 1;
for(j=0;j<=i;j++) temp *= a[j]; sum += temp;}
下列关于数组a的访问局部性的描述中,正确的是 。
A.时间局部性和空间局部性皆有 B.无时间局部性,有空间局部性 C.有时间局部性,无空间局部性 D.时间局部性和空间局部性皆无
。 15.下列寻址方式中,最适合按下标顺序访问一维数组元素的是 A.相对寻址 B.寄存器寻址 C.直接寻址 D.变址寻址
16.某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条,二地址指令107条,每个地址字段为6位,则指令字长至少应该是 。
A.24位 B.26位 C.28位 D.32位 17.下列关于超标量流水线特性的叙述中,正确的是 。 Ⅰ.能缩短流水线功能段的处理时间
Ⅱ.能在一个时钟周期内同时发射多条指令 Ⅲ.能结合动态调度技术提高指令执行并行性 A.仅Ⅱ B.仅Ⅰ、Ⅲ C.仅Ⅱ、Ⅲ D.Ⅰ、Ⅱ和Ⅲ
18.下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是 。
A.MM在CPU外,CS在CPU内 B.MM按地址访问,CS按内容访问 C.MM存储指令和数据,CS存储微指令
D.MM用RAM和ROM实现,CS用ROM实现
19.下列关于指令流水线数据通路的叙述中,错误的是 。 A.包含生成控制信号的控制部件 B.包含算术逻辑运算部件(ALU) C.包含通用寄存器组和取指部件
D.由组合逻辑电路和时序逻辑电路组合而成
20.下列关于多总线结构的叙述中,错误的是 。 A.靠近CPU的总线速度较快
B.存储器总线可支持突发传送方式 C.总线之间须通过桥接器相连
D.PC I-Express×l6采用并行传输方式 21.I/O指令实现的数据传送通常发生在 。 A.I/O设备和I/O端口之间 B.通用寄存器和I/O设备之间 C.I/O端口和I/O端口之间 D.通用寄存器和I/O端口之间 22.下列关于多重中断系统的叙述中,错误的是 。 A.在一条指令执仃结束时响应中断 B.中断处理期间CPU处于关中断状态 C.中断请求的产生与当前指令的执行无关 D.CPU通过采样中断请求信号检测中断请求
23.假设4个作业到达系统的时刻和运行时间如下表所示。 作业 J1 J2 J3 到达时刻t 0 1 1 运行时间 3 3 2 J4 3 1 系统在t=2时开始作业调度。若分別采用先来先服务和短作业优先调度算法,则选中的作业分别是 。 A.J2、J3 B.J1、J4 C.J2、J4 D.J1、J3 24.执行系统调用的过程包括如下主要操作: ①返回用户态 ②执行陷人(trap)指令 ③传递系统调用参数 ④执行相应的服务程序 正确的执行顺序是 。 A.②->③->①->④ B.②->④->③->① C.③->②->④>① D.③->④->②->①
25.某计算机按字节编址,其动态分区内存管理采用最佳适应算法,每次分配和回收内存后都对空闲分区链重新排序。当前空闲分区信息如下表所示。 分区起始地址 分区大小 20 K 500 K 1000 K 200 K 40 KB 80 KB 100 KB 200 KB 回收起始地址为60 K、大小为140 KB的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是 。
A.3、20 K、380 KB B.3、500 K、80 KB C.4、20 K、180 KB D.4、500 K、80 KB
26.某文件系统的簇和磁盘扇区大小分别为1 KB和512 B。若一个文件的大小为1 026B,则系统分配给该文件的磁盘空间大小是 。
A.1026 B B.1536 B C.1538 B D.2048 B 27.下列有关基于时间片的进程调度的叙述中,错误的是 。 A.时间片越短,进程切换的次数越多,系统也越大
B.当前进程的时间片用完后,该进程状态由执行态变为阻塞态 C.时钟中断发生后,系统会修改当前进程在时间片内的剩余时间 D.影响时间片大小的主要因素包括响应时间、系统开销和进程数量等 28.与单道程序系统相比,多道程序系统的优点是 。 Ⅰ.CPU利用率高 Ⅱ.系统开销小
Ⅳ.I/O设备利用率高 Ⅲ.系统吞吐量大
A.仅Ⅰ、Ⅲ B.仅Ⅰ、Ⅳ C.仅Ⅱ、Ⅲ D.仅Ⅰ、Ⅲ、Ⅳ 29.下列选项中,磁盘逻辑格式化程序所做的工作是 。 Ⅰ.对磁盘进行分区
Ⅱ.建立文件系统的根目录
Ⅲ.确定磁盘扇区校验码所占位数
Ⅳ.对保存空闲磁盘块信息的数据结构进行初始化 A.仅Ⅱ B.仅Ⅱ、Ⅳ C.仅Ⅲ、Ⅳ D.仅Ⅰ、Ⅱ、Ⅳ
30.某文件系统中,针对每个文件,用户类别分为4类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为5种:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为 。
A.5 B. 9 C. 12 D. 20
31.若文件f1的硬链接为f2,两个进程分别打开f1和f2,获得对应的文件描述符为fd1和fd2,则下列叙述中,正确的是 。
Ⅰ.f1和f2的读写指针位置保持相同 Ⅱ.f1和f2共享同一个内存索引结点
Ⅲ.fd1和fd2分别指向各自的用户打开文件表中的一项 A.仅Ⅰ B.仅Ⅱ、Ⅲ C.仅Ⅰ、Ⅱ D.Ⅰ、Ⅱ和Ⅲ 32.系统将数据从磁盘读到内存的过程包括以下操作: ①DMA控制器发出中断请求
②初始化DMA控制器并启动磁盘 ③从磁盘传输一块数据到内存缓冲区 ④执行“DMA结束”中断服务程序 正确的执行顺序是 。 B.②->③->①->④ D.①->②->④->③
33.假设OSI参考模型的应用层欲发送400 B的数据(无拆分),除物理层和应用层之外,其他各层在封装PDU时均引人20 B的额外开销,则应用层数据传输效率约为 。
A.80% B.83% C.87% D.91% 34.若信道在无噪声情况下的极限数据传输速率不小于信噪比为30dB条件下的极限数据传输速率,则信号状态数至少是 。
A.4 B.8 C.16 D.32
35.在下图所示的网络中,若主机H发送一个封装访问Internet的IP分组的IEEE 802.11数据帧F,则帧F的地址1、地址2和地址3分别是 。
A.③->①->②->④ C.②->①->③->④
A.00-12-34-56-78-9a,00-12-34-56-78-9b,00-12-34-56-78-9c B.00-12-34-56-78-9b,00-12-34-56-78-9a,00-12-34-56-78-9c C.00-12-34-56-78-9b,00-12-34-56-78-9c,00-12-34-56-78-9a D.00-12-34-56-78-9a,00-12-34-56-78-9c,00-12-34-56-78-9b
36.下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是 。
B.127.0.0.1 A.0.0.0.0
C.200.10.10.3 D.255.255.255.255 37.直接封装RIP、OSPF、BGP报文的协议分别是 。 A.TCP、UDP、IP B.TCP、IP、UDP
D.UDP、IP、TCP C.UDP、TCP、IP
38.若将网络21.3.0.0/16划分为128个规模相同的子网,则每个子网可分配的最大IP地址个数是 。 A.254 B.256 C.510 D.512
39.若甲向乙发起一个TCP连接,最大段长MSS=1 KB,RTT = 5 ms,乙开辟的接收缓存为64 KB,则甲从连接建立成功至发送窗口达到32 KB,需经过的时间至少是 。
A.25 ms B.30 ms C.160 ms D.165 ms 40.下列关于FTP协议的叙述中,错误的是 。 A.数据连接在每次数据传输完毕后就关闭 B.控制连接在整个会话期间保持打开状态
C.服务器与客户端的TCP 20端口建立数据连接 D.客户端与服务器的TCP 21端口建立控制连接
二、综合应用题:第41~47小题,共70分。
41.(15分)请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法的输人时:
输出的等价中缀表达式分别为(a+b)*(c*(-d))和(a*b)+(-(c-d))。 二叉树结点定义如下:
typedef struct node{ char data[10]; //存储操作数或操作符struct node *left, *right; }BTree;
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
42.(8分)使用Prim(普里姆)算法求带权连通图的最小(代价)生成树(MST)。请回答下列问题。(1)对下列图G,从顶点A开始求G的MST,依次给出按算法选出的边。(2)图G的MST是唯一的吗?
(3)对任意的带权连通图,满足什么条件时,其MST是唯一的?
43.(13分)已知
int f1(unsigned n){
int sum=1, power=1;
for(unsigned i=0;i<=n-1;i++){ power *= 2; sum += power; }
return sum; }
,计算f(n)的C语言函数f1如下:
将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE 754单精度标准。请回答下列问题。
(1)当n=0时,f1会出现死循环,为什么?若将f1中的变量i和n都定义为int型,则f1是否还会出现死循环?为什么?
(2)f1(23)和f2(23)的返回值是否相等?机器数各是什么(用十六进制表示)? (3)f1(24)和f2(24)的返回值分别为33 554 431和33 554 432.0,为什么不相等?
(4)f(31)=232-1,而f1(31)的返回值却为-1,为什么?若使f1(n)的返回值与f(n)相等,则最大的n是多少?
(5)f2(127)的机器数为7F80 0000H,对应的值是什么?若使f2(n)的结果不溢出,则最大的n是多少?若使f2(n)的结果精确(无舍人),则最大的n是多少?
44.(10分)在按字节编址的计算机M上,题43中f1的部分源程序(阴影部分)与对应的机器级代码(包括指令的虚拟地址)如下:
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令。请回答下列问题。 (1)计算机M是RISC还是CISC?为什么?
(2)f1的机器指令代码共占多少字节?要求给出计算过程。
(3)第20条指令cmp通过i减n-1实现对i和n-1的比较。执行f1(0)过程中当i=0时,cmp指令执行后,进/借位标志CF的内容是什么?要求给出计算过程。
(4)第23条指令shl通过左移操作实现了power *2运算,在f2中能否也用shl指令实现power *2?为什么? 45.(7分)假定题44给出的计算机M采用二级分页虚拟存储管理方式,虚拟地址格式如下:页目录号(10位) 页表索引(10位) 页内偏移量(12位) 请针对题43的函数f1和题44中的机器指令代码,回答下列问题。 (1)函数f1的机器指令代码占多少页?
(2)取第1条指令(push ebp)时,若在进行地址变换的过程中需要访问内存中的页目录和页表,则会分别访问它们各自的第几个表项(编号从0开始)?
(3)M的I/O采用中断控制方式。若进程P在调用f1之前通过scanf()获取n的值,则在执行scanf()的过程中,进程P的状态会如何变化? CPU是否会进入内核态?
46.(8分)某进程中有3个并发执行的线程thread1、thread2和thread3,其伪代码如下所示。
请添加必要的信号量和P、V(或wait()、signal())操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。 47.(9分)甲乙双方均采用后退N帧协议(GBN)进行持续的双向数据传输,且双方始终采用捎带确认,帧长均为1000 B。Sx,y和Rx,y分别表示甲方和乙方发送的数据帧,其中:x是发送序号;y是确认序号(表示希望接收对方的下一帧序号);数据帧的发送序号和确认序号字段均为3比特。信道传输速率为100Mbps,RTT=0.96ms。下图给出了甲方发送数据帧和接收数据帧的两种场景,其中t0为初始时刻,此时甲方的发送和确认序号均为0,t1时刻甲方有足够多的数据待发送。
请回答下列问题。 (1)对于图(a),t0时刻到t1时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪儿个帧(请用Sx,y形式给出)?
(2)对于图(a),从t1时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少个数据帧?其中第一个帧和最后一个帧分别是哪个(请用Sx,y形式给出)?
(3)对于图(b),从t1时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少个数据帧?重发的第一个帧是哪个(请用Sx,y形式给出)?
(4)甲方可以达到的最大信道利用率是多少?
2016年计算机学科专业基础综合试题参考答案
一、单项选择题
1.9. 17. 25. 33.
BBCB
A
2.
10. 18. 26. 34.
CBBD
D
3.
11. 19. 27. 35.
ADAB
B
4.
12. 20. 28. 36.
BCDD
A
5.
13. 21. 29. 37.
BCDB
D
6.
14. 22. 30. 38.
DABD
C
7.
15. 23. 31. 39.
BDDB
A
8.
16. 24. 32. 40.
AACB
C
二、综合应用题
41.解析:
(1)算法的基本设计思想
表达式树的中序序列加上必要的括号即为等价的中缀表达式。可以基于二叉树的中序遍历策略得到所需的表达式。(3分)
表达式树中分支结点所对应的子表达式的计算次序,由该分支结点所处的位置决定。为得到正确的中缀表达式,需要在生成遍历序列的同时,在适当位置增加必要的括号。显然,表达式的最外层(对应根结点)及操作数(对应叶结点)不需要添加括号。(2分)
(2)算法实现(10分)
将二叉树的中序遍历递归算法稍加改造即可得本题答案。除根结点和叶结点外,遍历到其他结点时在遍历其左子树之前加上左括号,在遍历完右子树后加上右括号。
void BtreeToE(BTree *root){
BtreeToExp(root, 1);
//根的高度为 1
}
void BtreeToExp( BTree *root, int deep) {
if(root == NULL) return; //空结点返回
else if(root->left==NULL&&root->right==NULL) //若为叶结点
printf(“%s”, root->data); //输出操作数,不加括号else{
if(deep>l) printf(“(”); //若有子表达式则加1层括号BtreeToExp(root->left, deep+1);
printf(“%s”, root->data); //输出操作符BtreeToExp(root->right, deep+1); if(deep>l) printf(“)”); //若有子表达式则加1层括号} }
【评分说明】①若考生设计的算法满足题目的功能要求,则(1)、(2)根据所实现算法的策略及输出结果给分,细则见下表。
分数 15 14 11 9 ≤7 备注 采用中序遍历算法且正确,括号嵌套正确,层数适当。 采用中序遍历算法且正确,括号嵌套正确,但括号嵌套层数 过多。例如,表达式最外层加上括号,或操作数加括号如 (a)。 采用中序遍历算法,但括号嵌套层数不完全正确。例如,左 右括号数量不匹配。 采用中序遍历算法,但没有考虑括号。 其他 ②若考生采用其他方法得到正确结果,可参照①的评分标准给分。 ③如果程序中使用了求结点深度等辅助函数,但没有给出相应的实现过程,只要考生进行了必要的说明,可不扣分。
④若在算法的基本设计思想描述中因文字表达没有清晰反映出算法思路,但在算法实现中能够表达出算法思想且正确的,可参照①的标准给分。
⑤若算法的基本设计思想描述或算法实现中部分正确,可参照①中各种情况的相应给分标准酌情给分。 ⑥参考答案中只给出了使用C语言的版本,使用C++语言的答案参照以上评分标准。
42.解析:
(1)Prim算法属于贪心策略。算法从一个任意的顶点开始,一直长大到覆盖图中所有顶点为止。算法每一步在连接树集合S中顶点和其他顶点的边中,选择一条使得树的总权重增加最小的边加入集合S。当算法终止时,S就是最小生成树。
①S中顶点为A,候选边为(A,D)、(A,B)、(A,E),选择(A,D)加入S。
②S中顶点为A、D,候选边为(A,B)、(A,E)、(D,E)、(C,D),选择(D,E),加入S。 ③S中顶点为A、D、E,候选边为(A,B)、(C,D)、(C,E),选择(C,E)加入S。 ④S中顶点为A、D、E、C,候选边为(A,B)、(B,C),选择(B,C)加入S。 ⑤S就是最小生成树。
依次选出的边为:
(A,D),(D,E),(C,E),(B,C) (4分)
【评分说明】每正确选对一条边且次序正确,给1分。若考生选择的边正确,但次序不完全正确,酌情给分。 (2)图G的MST是唯一的。(2分)第一小题的最小生成树包括了图中权值最小的四条边,其他边都比这四条边大,所以此图的MST唯一。
(3)当带权连通图的任意一个环中所包含的边的权值均不相同时,其MST是唯一的。(2分)此题不要求回答充分必要条件,所以回答一个限制边权值的充分条件即可。
【评分说明】①若考生答案中给出的是其他充分条件,例如“带权连通图的所有边的权值均不相同”,同样给分。
②若考生给出的充分条件对图的顶点数和边数做了某些限制,例如,限制了图中顶点的个数(顶点个数少于3个)、限制了图的形状(图中没有环)等,则最高给1分。
③答案部分正确,酌情给分。
43.解析:
(1)由于i和n是unsigned型,故“i<=n-l”是无符号数比较,n=0时,n-1的机器数为全1,值是2-1,为unsigned型可表示的最大数,条件“i<=n-1”永真,因此出现死循环。(2分)
若i和n改为int类型,则不会出现死循环。(1分) 因为“i<=n-1”是带符号整数比较,n=0时,n-1的值是-1,当i=0时条件“i<=n-1”不成立,此时退出for循环。(1分)
23+124
(2)f1(23)与f2(23)的返回值相等。(1分)f(23)=2-1=2-1,它的二进制形式是24个1。int占32位,没有溢出。float有1个符号位,8个指数位,23个底数位,23个底数位可以表示24位的底数。所以两者返回值相等。
f1(23)的机器数是 00FF FFFFH,(1分) f2(23)的机器数是 4B7F FFFFH。(1分) 显而易见前者是24个1,即0000 0000 1111 1111 1111 1111 1111 1111,后者符号位是0,指数位为23+127(10)=1001 (2)
0110(2),底数位是111 1111 1111 1111 1111 1111(2)。
(3)当n=24时,f(24)=1 1111 1111 1111 1111 1111 1111 B,而float型数只有24位有效位,舍入后数值增大,所以f2(24)比f1(24)大 1。(1分)
【评分说明】只要说明f2(24)需舍人处理即可给分。
(4)显然f(31)已超出了int型数据的表示范围,用f1(31)实现时得到的机器数为32个1,作为int型数解释时其值为-1,即f1(31)的返回值为-1。(1分)
因为int型最大可表示数是0后面加31个1,故使f1(n)的返回值与f(n)相等的最大n值是30。(1分) 【评分说明】对于第二问,只要给出n=30即可给分。 (5)IEEE 754标准用“阶码全1、尾数全0”表示无穷大。f2返回值为float型,机器数7F80 0000H对应的值是+∞。(1分)
127126
当n=126时,f(126)=2-1=1.1…1×2,对应阶码为127+126=253,尾数部分舍人后阶码加1,最终阶码为254,是IEEE 754单精度格式表示的最大阶码。故使f2结果不溢出的最大n值为126。(1分)
当n=23时,f(23)为24位1,float型数有24位有效位,所以不需舍人,结果精确。故使f2获得精确结果的最大n值为23。(1分)
【评分说明】对于第二问,只要给出n=23,即可给分。对于第三问,只要给出n=126,即可给分。
44.解析:
(1)M为CISC。(1分)
M的指令长短不一,不符合RISC指令系统特点。(1分) (2)f1的机器代码占96B。(1分) 因为f1的第一条指令“push ebp”所在的虚拟地址为0040 1020H,最后一条指令“ret”所在的虚拟地址为0040 107FH,所以,f1的机器指令代码长度为0040 107FH - 0040 1020H + 1 = 60H = 96个字节。(1分)
(3)CF=1。(1分)
cmp指令实现i与n-1的比较功能,进行的是减法运算。在执行f1(0)过程中,n=0,当i=0时,i=0000 0000H,并且n-1=FFFF FFFFH。因此,当执行第20条指令时,在补码加/减运算器中执行“0减FFFF FFFFH”的操作,即0000 0000H + 0000 0000H+1 = 0000 0001H,此时,进位输出C = 0,减法运算时的借位标志CF = C ㊉ 1 = 1。(2分)
(4)f2中不能用shl指令实现power*2。(1分)
因为shl指令用来将一个整数的所有有效数位作为一个整体左移;而f2中的变量power是float型,其机器数中不包含最高有效数位,但包含了阶码部分,将其作为一个整体左移时并不能实现“乘2”的功能,因而f2中不能用shl指令实现power*2。(2分)浮点数运算比整型运算要复杂,耗时也较长。
45.解析:
32
(1)函数f1的代码段中所有指令的虚拟地址的高20位相同,因此f1的机器指令代码在同一页中,仅占用1页。(1分)页目录号用于寻找页目录的表项,该表项包含页表的位置。页表索引用于寻找页表的表项,该表项包含页的位置。
(2)push ebp指令的虚拟地址的最高10位(页目录号)为00 0000 0001,中间10位(页表索引)为00 0000 0001,所以,取该指令时访问了页目录的第1个表项,(1分)在对应的页表中访问了第1个表项。(1分)
(3)在执行scanf()的过程中,进程P因等待输人而从执行态变为阻塞态。(1分)输人结束时,P被中断处理程序唤醒,变为就绪态。(1分)P被调度程序调度,变为运行态。(1分)CPU状态会从用户态变为内核态。(1分)
46.解析:
先找出线程对在各个变量上的互斥、并发关系。如果是一读一写或两个都是写,那么这就是互斥关系。每一个互斥关系都需要一个信号量进行调节。
semaphore mutex_y1=1; //mutex_y1用于thread1与thread3对变量y的互斥访问。semaphore mutex_y2=1; //mutex_y2用于thread2与thread3对变量y的互斥访问。semaphore mutex_z=1; //mutex_z用于变量z的互斥访问。
互斥代码如下:(5分)
【评分说明】
①各线程与变量之间的互斥、并发情况及相应评分见下表。
②若考生仅使用一个互斥信号量,互斥代码部分的得分最多给2分。 ③答案部分正确,酌情给分。 47.解析:
(1)t0时刻到t1时刻期间,甲方可以断定乙方已正确接收了 3个数据帧,(1 分)分别是 S0,0、S1,0、S2,0。(1分)R3,3说明乙发送的数据帧确认号是3,即希望甲发送序号3的数据帧,说明乙已经接收了序号为0-2的数据帧。
(2)从t1时刻起,甲方最多还可以发送5个数据帧,(1分)其中第一个帧是S5,2,(1分)最后一个数据帧是S1,2。(1分)发送序号3位,有8个序号。在GBN协议中,序号个数>=发送窗口+1,所以这里发送窗口最大为7。此时已发送了S3,0和S4,1,所以最多还可以发送5个帧。
(3)甲方需要重发3个数据帧,(1分)重发的第一个帧是S2,3。(1分)在GBN协议中,接收方发送了N帧后,检测出错,则需要发送出错帧及其之后的帧。S2,0超时,所以重发的第一帧是S2。已收到乙的R2帧,所以确认号应为3。
(4)甲方可以达到的最大信道利用率是:
U = 发送数据的时间 / 从开始发送第一帧到收到第一个确认帧的时间 = N * Td /(Td + RTT + Ta)
U是信道利用率,N是发送窗口的最大值,Td是发送一数据帧的时间,RTT是往返时间,Ta是发送一确认帧的时间。这里采用捎带确认,Td=Ta。
【评分说明】答案部分正确,酌情给分。
因篇幅问题不能全部显示,请点此查看更多更全内容