操作系统实验c语言页面置换算法(lru和lfu算法)_2020年研究生全国统考计算机试题——数据结构与操作系统试题解析...

一、单项选择题

1.将一个10×10对称矩阵M的上三角部分的元素mij(1≤i≤j≤10)按列优先存入C语言的一维数组N中,元素m7,2在N中的下标是:

A.15     

B.16

C.22

D.23

答案:C

解析:上三角矩阵列优先存储模式:先存储具有一个元素第一列,再存储具有两个元素的第二列,以此类推。m7,2说明1-6列均已存满,故此元素是第1+2+3+4+5+6+2个被存储单元。注意:C语言数组的下标从0开始,故m7,2在N中的下标为23-1=22,即 N[22]。

2.对空栈S进行Push和pop操作,入栈序列a,b,c,d,e经过Push, Push, Pop, Push, Pop, Push, Push,Pop操作后得到的出栈序列是:

A.b,a,c

B.b,a,e

C.b,c,a

D.b,c,e

答案:D

解析:a入、b入、b出,c入、c出,d入、e入、e出。出栈序列为b,c,e。

3.对与任意一棵高度为5且有10个节点的二叉树,若采用顺序存储结构保存,每个结点占1个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元数量至少是:

A.31

B.16

C.15

D.10

答案:A

解析:以顺序结构存储二叉树时,为了保证任意性,需按其对应的满二叉树方式存放,无对应满二叉树的结点空,有对应满二叉树的结点存储。高度为5的满二叉树需要的存储单元为2^5-1=31。

4、已知森林F及与之对应的二叉树T,若F的先根遍历序列是a,b,c,d,e,f,中根遍历序列是 b,a,d,f,e,c,则T的后遍历序列是:

A.b,a,d,f,e,c

B.b,d,f,e,c,a

C.b,f,e,d,c,a

D.f,e,d,c,b,a

答案:C

解析:由先根遍历序列a,b,c,d,e,f和中根遍历序列b,a,d,f,e,c可知,a为T的根,{b}为a的左子树结点,{dfec}为a的右子树结点。由先根遍历序列c,d,e,f和中根遍历序列d,f,e,c可知a的右子树为c,c的左子树中的结点有{d,e,f},右子树为空。由先根遍历序列d,e,f和中根遍历序列d,f,e可知c的左子树为d,d的左子树为空,右子树的结点有{e,f}。由先根遍历序列e,f和中根遍历序列f,e可知d的右子树为e,e的右子树为空,左子树的结点有{f}。所以,T的后遍历序列为:bfedca.

5.下列给定的关键字输入序列中,不能生成如下二叉排序树的是:

A. 4, 5, 2, 1, 3

B. 4, 5, 1, 2, 3

C. 4, 2, 5, 3, 1

D. 4, 2, 1, 3, 5 

dbd0311cd06f63bfde3ea1d1580f5ed7.png

答案:B

解析:基本概念题。

6.修改递归方式实现的图的深度优先搜索(DFS)算法,将输出(访问)顶点信息的语句移到退出递归前(即执行输出语句后立刻退出递归)。采用修改后的算法遍历有向无环图G,若输出结果中包含G中的全部顶点,则输出的顶点序列是G的:

A.拓扑有序序列

B.逆拓扑有序序列

C.广度优先搜索序列

D.深度优先搜索序列

答案:B

解析:应该是DFS的逆序,排除C,D。再看A和B,假设有向图为a->b->c, 执行修改后的DFS,结果为c,b,a,排除A,则有B可选。

DFS是一个递归算法,在遍历的过程中,先访问的点被压入栈底。拓扑有序是指如果点U到点V有一条弧,则在拓扑序列中U—定在V之前,深度优先算法搜索路径恰恰是一条弧,栈的输出是从最后一个被访问点开始输出,最后一个输出的点是第一个被访问的点,所以是逆拓扑有序序列。关于这个题目的解析不是几句话能说清楚,请查看DFS与拓扑排序相关内容。

7.已知无向图G如下所示,使用克鲁斯卡尔(Kruskal)算法求图G的最小生成树,加入到最小生成树中的边依次是:

A.(b,f)(b,d)(a,e)(c,e)(b,e)

B.(b,f)(b,d)(b,e)(a,e)(e,c)

C.(a,e)(b,e)(c,e)(b,d)(b,f)

D.(a,e)(c,e)(b,e)(b,f)(b,d)

1dced871375c4edb596e6a662b028503.png

答案:A

解析:基本算法,送分题8 .若使 AOE 网估算工程进度则下列叙述中正确的是:A .关键路径是从原点到汇点边数最多的一条路径;B .关键路径是从原点到汇点路径长度最长的路径;C .增加任一关键活动的时间不会延长工程的工期;D .缩短任一关键活动的时间将会缩短工程的工期。 答案:B 解析:基本概念,送分题9 .下列关于大根堆(至少含2 个元素)的叙述中正确的是: I .可以将堆看成一颗完全二叉树;II .可采用顺序存储方式保存堆;III .可以将堆看成一棵二叉排序树;IV .堆中的次大值一定在根的下一层。 答案:I 、II 、IV 解析:基础概念题。堆( Heap )具有以下特点: 1 )完全二叉树 2 )存储的值是偏序,大根堆( Max-heap ):父节点的值大于或等于子节点的值,一般用数组(顺序结构)来表示堆10 .依次将关键字5 ,6 ,9 ,13 ,8 ,2 ,12 ,15 插入初始为空的4 阶B 树后,根节点中包含的关键字是:A .8B .6 ,9C .8 ,13D .9 ,12 答案:B 解析: B 树是一种平衡的多路搜索树,结点最大的孩子数目称为 B 树的阶。一个 m 阶 B 树具有如下属性: 1. 定义任意非叶子结点最多只有 M 个儿子;且 M>2 2. 根结点的儿子数为 [ 2 , M ] 3. 除根结点以外的非叶子结点的儿子数为 [ M/2, M ] 4. 每个结点存放至少 M/2-1 (取上整)和至多 M-1 个关键字;(至少 2 个关键字) 5. 非叶子结点的关键字个数 = 指向儿子的指针个数 -1 6. 非叶子结点的关键字: K[ 1 ], K[2 ], … , K[ M-1 ] ;且 K[ i ]< K[ i+1 ] 7. 非叶子结点的指针: P[ 1 ], P[2 ], … , P[ M ] ;其中 P[ 1 ] 指向关键字小于 K[ 1 ] 的子树, P[ M ] 指向关键字大于 K[ M-1 ] 的子树,其它 P[ i ] 指向关键字属于 (K[ i-1 ],K[ i ]) 的子树 8. 所有叶子结点位于同一层11 .对大部分元素已有序的数组进行排序时,直接插入排序比简单选择排序效率更高,其原因是:I .直接插入排序过程中元素之间的比较次数更少;II .直接插入排序过程中所需要的辅助空间更少;III .直接插入排序过程中元素的移动次数更少。A .IB .IIIC .I, IID .I, II, III 答案:A 解析:基础概念题。直接插入排序与简单选择排序相比: 1 )直接插入排序元素比较次数少 2 )简单选择排序移动的元素少 3 )均为就地排序,空间复杂度均为 O(1)18. 下列关于“自陷”(Trap ,也称陷阱)的叙述中错误的是:A .自陷是通过陷阱指令预先设定的一类外部中断事件;B .自陷可用于实现程序调试时的断点设置和单步跟踪;C .自陷发生后 CPU 将转去执行操作系统内核相应程序;D .自陷处理完成后返回到陷阱指令的下一条指令执行。 答案:A 解析:自陷是内中断23. 若多个进程共享同一个文件F ,则下列叙述中正确的是:A .多个进程只能用“读”方式打开文件 F ;B .在系统打开文件表中仅有一个表项包含F 的属性;C .各进程的用户打开文件表中关于F 的表项内容相同;D .进程关闭F 时系统删除F 在系统打开文件表中的表项。 答案:B 解析: A :各进程既可以用读方式打开文件 F ,也可用写方式打开文件 F B :系统打开文件表只有一张,正确 C :打开文件表关于同样一个文件的表项内容不一定相同 D :进程关闭 F 时会使 F 的引用计数 -1 ,引用计数 =0 时才会删除表项24. 下列选项中支持文件长度可变,随机访问的磁盘存储空间分配方式是:A .索引分配B .链接分配C .连续分配D .动态分区分配 答案:A 解析: B :链接分配不支持随机访问 C :连续分配不支持长度可变 D :动态分区分配是内存管理方式25. 下列与中断相关的操作中,由操作系统完成的是:I 、保存被中断程序的中断点;II 、提供中断服务;III 、初始化中断向量表;IV 、保存中断屏蔽字。A .I, IIB .I, II, IVC .III, IVD .II, III, IV 答案:D 解析:中断点的保存需要由软硬件保存寄存器内容、由硬件保存 PC 、由 OS 保存 PSW26. 下列与进程调度有关的因素中在设计多级反馈队列调度算法时需要考虑的是:I .就绪队列的数量;II. 就绪队列的优先级; III. 各就绪队列的调度算法; IV. 进程在就绪队列间的迁移条件A .I,IIB .III,IVC .II,III,IVD .I,II,III,IV 答案: D 解析:多级反馈队列调度算法是时间片轮转调度算法与优先级调度算法的综合与发展,需要综合考虑队列数量,优先级、调度算法及进程在队列间的迁移条件。27. 某系统中有A,B 两类资源各6 个,t 时刻资源分配及需求情况如下表所示。

7b43866c8714bba32553579aba1a760f.png

t 时刻安全检测结果是:A .存在安全序列 P1,P2,P3B .存在安全序列 P2,P1,P3C .存在安全序列 P2,P3,P1D .不存在安全序列 答案: B 解析: t 时 A 和 B 各有 1 和 0 个资源空闲,但此时, P1,P2,P3 各需要 A,B 资源数为( 2 , 1 ),( 1 , 0 ),( 2 , 2 ),可将剩余资源可满足 P2 ,如分配给 P2 ,当 P2 运行结束后释放资源, A 和 B 各有( 3,1 ) , 可满足 P1 , P1 运行结束后 P3 可运行。28 .下列因素影响请求分页系统有效(平均)访存时间的是:I 、缺页率;II 、磁盘读写时间;III 、内存访问时间;IV 、执行缺页处理程序的 CPU 时间;A .II,IIIB .I,IVC .I,III,IVD .I,II,III,IV 答案: D 解析: I 、缺页率影响缺页中断发生的频率。 II 、磁盘读写时间影响慢表和以及页面置换时间。 III 、访存时间影响缺页中断的处理时间。 IV 、影响缺页中断的处理时间29 、下列关于父进程与子进程的叙述中错误的是:A .父进程与子进程可以并发执行B .父进程与子进程共享虚拟地址空间C .父进程与子进程有不同的进程控制块D .父进程与子进程不能同时使用同一临界资源 答案: B 解析:父进程不与子进程共享虚拟地址空间30 .对于具备设备独立性的系统下列叙述中错误的是:A .可以使用文件名访问物理设备B .用户程序使用逻辑设备与物理设备之间的映射关系C.   ......D .更换物理设备后必须修改访问该设备的应用程序 答案: D 解析:访问设备的驱动程序与具体设备无关31 .某文件系统的目录由文件名和索引节点号构成。若每个目录项长度为64 字节,其中4 个字节存放索引节点号,60 个字节存放文件名。文件名由小写英文字母构成,则该文件系统能创建的文件数量的上限为: A .2 26B .2 32C .2 60D .2 64 答案: B 解析:创建的文件数量上限 = 索引节点数量上限,索引节点为 4 个字节 32 位,故最多 232 个索引节点,即最多创建 232 个文件。32 .下列准则中实现临界区互斥机制必须遵循的是:I 、两个进程不能同时进入临界区; II 、允许进程访问空闲的临界资源;III 、进程等待进入临界区的时间是有限的;IV 、不能进入临界区的执行态进程立即放弃CPU 。A .I,IVB .II,IIIC .I,II,IIID .I,III,IV 答案: C  ? 解析:临界区资源的互斥准则: ① 空闲让进 → II ② 忙则等待 → I ③ 有限等待 → III ④ 让权等待 二、综合应用题41. 定义三元组(a, b, c)(a, b, c 均为正数)的距离D=|a-b|+|b-c|+|c-a| 。给定3 个非空整数集合S1, S2, S3, 按升序分别存储在3 个数组中。请设计一个尽可能高效的算法,计算并输出所有可能的三元组(a, b, c)(a ∈S1, b ∈S2, c ∈S3) 中的最小距离。例如S1={-1, 0, 9}, S2={-25, -10, 10, 11} ,S3={2, 9, 17, 30, 41} 。则最小距离为2 ,相应的三元组为(9, 10, 9) ,要求:(1) 给出算法的基本设计思想;(2) 根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释;(3) 说明你所设计算法的时间复杂度和空间复杂度。 分析:假设a≤b≤c,则这三点间的距离=2(c-a),若a=b=c,则3点间距离最短。这是一个动态组合优化问题。解决办法:每次变化c,寻找一个a,使得c-a最小,即可找到三点间最短距离。 解:(1)算法设计思想: I.设d为距离,初值为最大正整数,从三个集合中分别取一个数, 假设这三个数是a,b,c; II.若a=b=c,这就是最小距离,返回, III.若a≤b≤c,且!(a=b=c),则计算距离d',如果d'比d小,改变d为d'。 IV. 如果3个集合中的一个已无数据则找到最小距离d,结束。否则,在a所属集合中取下一个a,再与b和c形成新的a,b,c,转II。

注:a,b,c是动态变化的,它们所属集合是变化的。比如;第一次时,a=-25∈S2,b=-1∈S1,c=2∈S3,在a所属集合中取下一个值为-10,此时a=-10∈S2,b=-1∈S1,c=2∈S3,再在a所属集合中取下一个值为10,此时a=-1∈S1,b=2∈S3,c=10∈S2。

(2)C/C++语言描述。
int short_dis(int S1[],int len_s1, int S2[],int len_s2,int S3[],int len_s3) {  int min_d = 0x7fffffff;  int index_s1 = 0;  int index_s2 = 0;  int index_s3 = 0;  while ((index_s1    int temp_s1 = S1[index_s1];    int temp_s2 = S1[index_s2];    int temp_s3 = S1[index_s3];    int d = abs(temp_s1-temps2)+ abs(temp_s2-temps3)+abs(temp_s1-temps3)    if (d      min_d = d;      if (min_d == 0) break;    }    if (temp_s1 <= temp_s2 && temp_s1 <= temp_s3 ) index_a++;    else if (temp_s2 <= temp_s1 && temp_s2 <= temp_s3 ) index_b++;    else if (temp_s3 <= temp_s1 && temp_s2 <= temp_s2 ) index_c++;    break;  }  return mid_d;}
(3) 假设3个集合的长度分别为L1,L2和L3,则算法的时间复杂度为O(L1+L2+L3)=O(max(L1,L2,L3),空间复杂度为O(1)。42. 若任一个字符的编码都不是其他字符编码的前缀,则称这种编码具有前缀特性。 现有某字符集(字符个数≥2 )的不等长编码,每个字符的编码均为二进制的0 ,1 序列,最长为L 位,且具有前缀特性。请回答下列问题:

(1)哪种数据结构适宜保存上述具有前缀特性的不等长编码?

(2)基于你所设计的数据结构,简述从 0/1 串到字符串的译码过程;

(3)简述判定某字符集的不等长编码是否具有前缀特性的过程。

解答:(1) 送分题,哈夫曼树。

(2)译码过程:译码过程与编码一样需要使用哈夫曼树。译码过程为:自左向右逐一扫描码文,并从哈夫曼树的根开始,将扫描得到的二进制串中的码位与哈夫曼树分支上标的 0、 1 相匹配,以确定一条从根到叶子的路径,一旦达到叶子,则译出了一个字符;再回到树根,从二进位串的下一位开始继续译码 ,直到扫描码文结束。

(3)只需判定存储有字符信息的节点是否全部为叶子结点即可。若存储有某个字符信息的节点非叶子结点,即有子节点,那么它的0/1编码一定是它孩子节点0/1编码的前缀,违反了前缀特性。

45. 现有5 个操作A 、B 、C 、D 和E ,操作C 必须在A 和B 完成后执行,操作E 必须在C 和D 完成后执行,请使用信号量的wait(), signal() 操作(P 、V 操作)描述上述操作之间的同步关系,并说明所用信号量及其初值。 解答:本题送分题。

     --D--\

--A--\     >E

    >--C---/

--B--/

A、B与C同步,C、D与E同步,设4个信号量a,b,c,d,其中a和b用于A、B与C同步,c和d用于C、D与E同步,它们的初值均为0。A、B、C、D和E的同步算法描述如下: A(){    A操作;    V(a); } B(){    B操作;    V(b); } C(){    p(a);    p(b);     C操作;    V(c); } D(){      D操作;    V(d); } E(){    p(c);    p(d);     E操作; }46. 某32 位系统采用基于二级页表的请求分页存储管理方式,按字节编址,页目录项和页表项长度均为4 字节,虚拟地址结构如下: 

616640302e38be96ecb31fc52d398eb8.png

某 C 程序中数组 a[1024][1024] 的起始虚拟地址为 1080 000H ( 可能记错),数组元素占 4 字节,该程序运行时,其进程的页目录起始物理地址为 0020 1000H ,请回答下列问题:(1) 数组元素a[1][2] 的虚拟地址是什么?对应的页目录号和页号分别是什么?对应的页目录项的物理地址是什么?若该目录项中存放的页框号为00301H ,则a[1][2] 所在页对应的页表项的物理地址是什么?(2) 数组a 在虚拟地址空间中所占区域是否必须连续?在物理地址空间中所占区域是否必须连续?(3) 已知数组a 按行优先方式存放,若对数组a 分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好? 解:说明:题目是根据考生回忆补写的,可能有差错。 (1)本题没有说明数组是按行序存储还是列序存储,就默认为行序存储。 若a[0][0]为第0个元素,a[0][1]为第1个元素,...,则a[1][2]为第1026个元素,数组元素占4字节,数组a的起始虚拟地址为1080 000H,则a[1][2]的虚拟地址=1080000H + 1026×4 = 1080000H +402H×4 = 1080000H + 1008H = 1081008H 1081008==>(页目录号,页号,页内偏移) = (4,81H,8) 页目录起始物理地址为0020 1000H,页目录项长度为4字节,a[1][2]对应当页目录号为4,对应的页目录项的物理地址是 00201000H + 4×4 = 0020 1010H 若该目录项中存放的页框号为00301H,则说明对应的页表的物理地址为:00301 000H, a[1][2]所在页对应的页表项的物理地址是:00301 000H + 081H×4 = 00301 204H (2)数组a在虚拟地址空间中所占区域必须连续,在物理地址空间中所占区域可以不连续。 (3)已知数组a按行优先方式存放,那么每一行占用的字节数为1024×4B=4KB,正好一页。 若对数组 a 分别按行遍历其局部性好于按列遍历,因为按行遍历时,一行正好存储在一页中,按列进行遍历时,每个元素都存放在不同的页中。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值