计算机专业(基础综合)模拟试卷100(题后含答案及解析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机专业(基础综合)模拟试卷100(题后含答案及解析)
题型有:1. 单项选择题 2. 综合应用题
单项选择题1-40小题,每小题2分,共80分。

下列每题给出的四个选项中,只有一个选项是最符合题目要求的。

1.在n个结点的线性表的数组表示中,以下算法的时间复杂度是O(1)的操作是( )。

Ⅰ.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)Ⅱ.在最后一个结点后插入一个新的结点Ⅲ.删除第一个结点Ⅳ.在第i 个结点后插入一个结点(1<=i<=n)
A.仅Ⅰ
B.仅Ⅱ、Ⅲ
C.仅Ⅰ、Ⅱ
D.仅Ⅰ、Ⅱ、Ⅲ
正确答案:C
解析:Ⅰ:由于线性表是用数组表示,即顺序存储,可以直接通过结点编号访问,所以Ⅰ的时间复杂度一定是O(1)。

Ⅱ:由于是在最后一个结点处插入一个结点,所以不需要移动元素,故时间复杂度为O(1)。

Ⅲ:删除第一个结点之后,需要将后续所有结点往前移动,所以时间复杂度为O(n)。

Ⅳ:由于i是不固定的,所以后续结点i+1,1+2,…,n—1,都需要向后移动,所以时间复杂度为O(n)。

2.中缀表达式a*(b+c)一d的后缀表达式是( )。

A.abcd*+—
B.abc+*d—
C.abc*+d—
D.—+*abcd
正确答案:B
解析:本题转化过程如图4—5所示。

由图4—5可以写出以下转化过程:第一步:b+c→bc+(假设x=“bc+”)第二步:a*x→ax*(假设y=“ax*”)第三步:y—d→yd—将xy还原后得到:abc+*d—。

补充知识点(1):中缀表达式转换成后缀表达式的另一种方式。

解析:可以通过手工加上、除掉括号来将中缀表达式转换成后缀表达式,其过程如下:先根据中缀表达式的求值次序加上括号,将右括号用相应的运算符替换,再除掉所有的左括号。

例如,中缀表达式“5+2*(1+6) —8/2”转换成后缀表达式的过程如下:手工判断该表达式的计算过程。

首先肯定是先计算2*(1+6),加上括号变为“5+(2*(1+6))—8/2”,再计算除法8/2,加上括号变为“5+(2*(1+6))—(8/2)”,接着进行加法运算,加上括号变为“(5+(2*(1+6)))一(8/2)”,最后再进行减法运算,加上括号变为“((5+(2*(1+6)))一(8/2))”。

运算符和右括号的对应关系如图4.6所示,将右括号用对应的运算符替换,变为“((5(2(16+*+(8 2/一”,最后除掉所有左括号得到的后缀表达式为“5216+*+82/
一”。

注:本方法需要人工判断表达式的执行顺序(即加括号),所以无法用程序实现。

一此方法引自李春葆老师的书籍按照以上方式可以很轻松地解题,不妨试着将中缀表达式a*(b+c)—d转换成后缀表达式。

第一步:进行乘法运算,加括号变为:(a*(b+c))一d。

第二步:进行减法运算,加括号变为:((a*(b+c))一d)。

第三步:找出运算符和右括号的对应关系,将右括号用对应的运算符替换,变为((a(bc+*d一。

第四步:最后除掉所有左括号得到的后缀表达式为:abc+*d—。

补充知识点(2):怎么将后缀表达式转换成中缀表达式?解析:当遇到数值的时候入栈,当遇到运算符的时候,连续两次出栈,将两个出栈元素结合运算符进行运算,将结果当成新遇到的数值入栈。

如此往复,直到扫描到终止符“\0”,此时栈底元素值即为表达式的值。

例:将后缀表达式xy+z+转换为中缀表达式。

先将x、y入栈,遇到了‘+’,然后弹出栈顶的2个元素,即x、y,然后对x、y做加法,现在将(x+y)的值入栈,然后Z入栈,遇到了操作符‘+’,所以最后的中缀表达式为:(x+y)+z。

注意:中缀表达式转化成后缀或者是前缀,结果并不一定唯一。

比如ab+c d*+e/同样是(a+b+c*d)/e的后缀式。

后缀式和前缀式都只有唯一的一种运算次序,而中缀式却不一定,后缀式和前缀式是由中缀式按某一种运算次序而生成的,因此对于一个中缀式可能有多种后缀式或者前缀式。

比如a+b+c 可以先算a+b也可以先算b+c,这样就有两种后缀式与其对应,分别是ab+c+和abc++。

例:下列关于后缀表达式的比较中,结果为“假”的是( )。

Ⅰ. xy+z+==xyz++ Ⅱ. xy+z—==xyz--+Ⅲ.xy—z+==xyz+—Ⅳ.xy—z—==xyz--A.Ⅰ
B.Ⅰ、Ⅱ
C.Ⅲ、Ⅳ
D.Ⅱ、ⅣC。

本题考查后缀表达式。

Ⅰ:xy+z+==xyz++转换成中缀表达式为(x+y)+z==x+(y+z),比较结果为“真”。

Ⅱ:xy+z—==xyz—+转换成中缀表达式为(x+y)一z==x+(y—z),比较结果为“真”。

Ⅲ:xy—z+==xyz+—转换成中缀表达式为(x—y)+z==x一(y+z),比较结果为“假’’。

Ⅳ:xy—z—=—xyz--转换成中缀表达式为(X—y)一z==x一(y—z),比较结果为“假”。

综上所述,ⅡⅠ、Ⅳ为假。

3.设线性表有n个元素,以下操作中,( )在顺序表上实现比链表上实现效率更高。

A.输出第i(1≤i≤n)个元素值
B.交换第1个元素与第2个元素的值
C.顺序输出这n个元素的值
D.输出与给定值x相等的元素在线性表中的序号
正确答案:A
解析:顺序表支持随机存储,链表不支持,因此顺序表输出第i个元素的值的时间复杂度为O(1),链表则为O(n),因此A正确。

交换第1个与第2个元素的值,对于顺序表和链表,时间复杂度均为O(1),因此B不对。

输出n个元素的值,两者时间复杂度均为O(n),因此C不对.输出与给定值x相等的元素在线性表中的序号,对于顺序表和链表,count需要搜索整个表,因此时间复杂度为O(n),因此D不对。

【注】有的同学认为B也是正确的,其实严格来说B 确实是对的,因为线性表交换要执行3次操作:temp=a [1] ;a [2]=temD;而链
表要执行5次:p=head—>next;q=head—>next—>next;temp=p—>data;p —>data=q—>data;q—>data=temp;但本题是单选题的时候,考生需要选择更准确的一项,显然与B项相比,A项更准确。

4.设k是中序线索二叉树中一个有左子女的结点,且k不是根结点,则k 在中序序列下的直接前驱结点是( )。

A.k的左线索(指示中序前驱)所指示的结点
B.从k父结点的左子女开始沿右子女链走到底的结点
C.从k的左子女开始沿右子女链走到底的结点
D.从k的左子女开始沿左子女链走到底的结点
正确答案:C
解析:如果k没有左子女,则k的左指针即为指向k的中序前驱的线索;当k有左子女时,k的中序直接前驱结点是k的左子树中中序的最后一个结点,即从k的左子女开始沿右链走到右指针不再是右子女的结点为止,该结点即为k 的中序前驱结点。

说明:上述二叉树的线索化算法其实考试中涉及的不多,本节在考试中涉及最多的是,在选择题中给你一棵二叉树,让你指出其中一个结点的线索按照某种线索化方法所应该指向的结点。

例如:请画出图4—7中按照中序线索化方法线索化后E结点的右线索的接连情况。

解决这类题的方法为,先写出题目所要求的遍历方式下的结点访问序列,根据此序列找出题目要求中结点的前驱和后继,然后连接线索。

图4—7中二叉树的中序遍历序列为D,B,E,A,C。

结点E的前驱为B,后继为A,因此其右线索应该指向A,结果如图4—8所示。

总结:(1)引入二叉线索树的目的:加快查找结点的前驱或后继的速度。

(2)二叉树在线索化后,仍不能解决的问题:后序线索二叉树中求后序后继。

(3)n个结点的线索二叉树上含有的线索树为:n+1。

5.假定一组元素序列为{38,42,55,15,23,44,34,74,45,26},按次序插入每个元素生成一棵平衡二叉树,那么最后得到的平衡二叉树中度为2的结点个数为( )。

A.1
B.3
C.4
D.5
正确答案:C
解析:根据题目所给的元素序列,可以得到以下的平衡二叉树,如图4—9所示。

可以看出度为2的结点有4个。

6.由23、12、45、36构成的二叉排序树有( )个,其中A VL树有( )个。

A.13;4
B.13;5
C.14;5
D.14;4
正确答案:C
解析:该题的结点不多,可以采用枚举法。

但枚举法比较容易造成遗漏,所以在枚举时要按照一定的规律,而且在枚举完之后看是否有重合的树并将其去掉,为避免重复可以采用根结点来枚举,枚举得二叉排序树共有14个,其中5个为A VL树。

7.对图4—1进行拓扑排序,可以得到不同的拓扑序列的个数是( )。

A.4
B.3
C.2
D.1
正确答案:B
解析:寻找拓扑排序的步骤:(1)在有向图中选一个没有前驱的顶点并且输出。

(2)从图中删除该顶点和所有以它为尾的弧。

重复上述两步,直至全部顶点均已输出。

由于没有前驱的顶点可能不唯一,所以拓扑排序的结果也不唯一。

题中所给图有3个不同的拓扑排序序列,分别为:1)a,b,c,e,d。

2)a,b,e,c,d。

3)a,e,b,c,d。

8.无向图G有16条边,有3个度为4的顶点,4个度为3的顶点,其余顶点的度均小于3,则G至少有( )个顶点。

A.10
B.11
C.12
D.13
正确答案:B
解析:度的定义指的是进入一个顶点的边数和从该顶点出去的边数之和。

我们可以根据这个关系来求解此题。

由于题目已经告诉度为4的顶点有3个,度为3的顶点有4个,其余的顶点的度均小于3,而已知有16条边,则总的度数应为16×2=32。

所以要求最小的顶点个数,我们应当尽量增加每个顶点的度数,这里将剩下的结点的度数全部看成2,设结点数为x,则3×4+4×3+(x—3—4)×2≥32,解得x至少为11。

补充:解这题的过程中,我们是从假设剩下的结点的度数为2来考虑的,这样才能最大程度地减小结点的个数。

这其实用到了一种称为贪心的思想,这是一种很重要的思想,每次决策的时候都是按照最有利的情况去考虑。

这种思想在其他几门课程当中也会有体现,读者应自己去发现和总结。

9.以下有关m阶B—树的说法中正确的有( )。

Ⅰ.每个结点至少有两棵非空子树Ⅱ.树中每个结点至多有m—1个关键字Ⅲ.所有叶子在同一层上Ⅳ.当插入一个数据项引起B—树结点分裂后,树长高一层
A.仅Ⅰ、Ⅱ
B.仅Ⅱ、Ⅲ
C.仅Ⅲ、Ⅳ
D.仅Ⅰ、Ⅱ、Ⅳ
正确答案:B
解析:Ⅰ中:m阶B—树根结点至少有两棵子树,并且这两颗子树可以是空树,其余结点至少有[m/2]个分支,即[m/2]个子树,所以Ⅰ错误。

补充:B—树中每个结点至多有m棵子树,m—1个关键字值。

Ⅱ中:每个结点中关键字的个数比分支数少1,m阶B—树的一个结点中至多有m个分支,因此至多有m—l 个关键字,所以Ⅱ正确。

Ⅲ中:B—树是平衡的多路查找树,叶子结点均在同一层上,所以Ⅲ正确。

Ⅳ中:发生结点分裂的时候不一定会使树长高。

比如向图4—10中的B—树插入一个关键字10变成图4—11中的B—树,使得第二层右端的一个结点分裂成两个,但是树并没有长高,所以Ⅳ错误。

综上所述,Ⅱ、Ⅲ正确。

10.对以下关键字序列用快速排序进行排序,速度最慢的是( )。

A.{19,23,3,15,7,21,28}
B.{23,21,28,15,19,3,7}
C.{19,7,15,28,23,21,3}
D.{3,7,15,19,21,23,28}
正确答案:D
解析:这种题目其实就是考查考生的记忆能力,因为在考研紧张的氛围下,很少有考生在做这种选择题的时候能够分析其算法来选择答案。

这里就是变相地考查快速排序算法的最坏情况。

快速排序法的最坏情况为待排序列是有序或接近有序的时候,由于D中元素已经有序,所以选择D。

评注:本题是指定了使用某种排序方法,当题目中没有指定具体的排序方法的时候,我们一定不要急于挨个用每个算法去试,而应该从所给的待排序列出发,观察序列元素的信息,找出某种特殊的性质。

11.某个文件经内部排序得到80个初始归并段。

如果操作系统要求一个程序同时可用的输入/输出文件的总数不超过15个,则按多路归并至少需要( )趟可以完成排序。

A.2
B.3
C.4
D.5
正确答案:A
解析:不妨设采用m路归并,则至少需要m个输入缓冲区和1个输出缓冲区。

因为一个缓冲区对应一个文件,所以m+1=15,解得m=14,所以可做14路归并。

假设需要s趟可以完成排序,则s=[log1480]=2。

12.考虑以下C语言代码:vc short si=—8196;unsingned short usi=si;执行上述程序段后,usi的值为( )。

A.8196
B.34572
C.57339
D.57340
正确答案:D
解析:首先,求得—8196的补码表示为1 101 1 1 1 1 1 1 1 1 1 100,赋值给usi后,由于usi为无符号数,所以将二进制1101 1111 1111 1100转换为十进制为57340。

技巧:FFFFH的二进制应该记住,为65535。

然后减去3个0对应的权值,分别为8192、2、1,即最后的结果为65535—8192—2—1=57340。

13.设浮点数的阶码用移码表示,尾数用补码表示,阶码的底数为2,阶码用3位表示(包含一位符号位),尾数用5位表示(包含1位符号位),则它能表示的最小负数为( )。

A.—8
B.—7.5
C.—128
D.—256
正确答案:A
解析:要求最小负数,按照浮点数的格式来看,我们要尽量使尾数最小,达到补码所能表示的最小的负数,另外还要使阶码最大,达到移码所能表示的最大整数,而由补码的性质可知,无论对于尾数多少位来说,尾数的最小值永远是一1,阶码最大为3。

故最小的负数为—8。

14.硬盘平均寻道时间为12ms,传输速率为10MB/s,磁盘控制器延时为2ms,则一个转速为7200r/min的硬盘写1KB数据的时间为( )。

A.13.11ms
B.14.13ms
C.15.15ms
D.18.27ms
正确答案:D
解析:首先,需要判断1KB数据是否需要存储到多个磁道上。

7200r/min=120r/s;因为传输速率为10MB/s,故每转容量为:,所以1KB的数据只要在一个磁道上就能存储下了,无须换道。

其次,写数据时间=磁盘启动时间+磁盘寻道时间+旋转等待时间+数据传输时间。

旋转等待时间为:旋转半圈的时间,及( 60/7200)×1/2=4.17ms;数据传输时间等于lKB/10MB/s=0.1ms,所以写1KB数据的时间为:2ms+12ms+4.17ms+0.1ms=18.27ms。

可能疑问点:《计算机网络高分笔记》不是说在通信领域K取1000,在计算机领域K取1024吗?此道题目中1KB应该是属于计算机领域,为什么取值1000?解析:《计算机网络高分笔记》给出的是最一般的理解的方式,不是绝对的。

至于K到底取多少,至今没有统一标准。

笔者根据经验总结出两点:(1)如果在考试中遇到,K取多少,就看约分,考研的答案一定是最简化的,肯定可以约分,哪个好约分取哪个。

如果分子和分母都有K那就最好了。

(2)如果实在不放心,可以参考教育部针对真
题的解释,看看他们取值多少,照着取即可。

15.下面关于各种存储器的说法中,正确的有( )。

Ⅰ.静态RAM不是易失性存储器,而动态RAM是易失性存储器Ⅱ. PROM只能写录一次Ⅲ.EPROM 是可改写的,并且也是随机存储器的一种Ⅳ.EEPROM存储器是可写存储器A.仅Ⅰ、Ⅱ
B.仅Ⅱ、Ⅳ
C.仅Ⅰ、Ⅱ、Ⅲ
D.仅Ⅱ、Ⅲ、Ⅳ
正确答案:B
解析:Ⅰ:静态RAM和动态RAM都是易失性存储器,断电后信息都会遗失,所以Ⅰ错误。

Ⅱ: PROM的内部有行列式的熔丝,视需要利用电流将其烧断,写入所需的资料,但仅能写录一次。

PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1),以实现对其“编程”的目的,所以Ⅱ正确。

Ⅲ:EPROM是可改写的,但它不属于随机存储器,所以Ⅲ错误。

Ⅳ:EEPROM (Electrically Erasable Programmable Read—Only Memory),电可擦可编程只读存储器,属于一种掉电后数据不丢失的存储芯片。

EEPROM可以在计算机上或专用设备上擦除已有信息,重新编程,所以Ⅳ正确。

16.—个Cache—主存系统,采用50MHz的时钟,存储器以每一个时钟周期传输一个字的速率,连续传输8个字,以支持块长为8个字的Cache,每个字4个字节。

假设读操作所花的时间是:1个周期接受地址,3个周期延迟,8个传输周期传输8个字;写操作所花的时间是:1个周期接受地址,2个周期延迟,8个周期传输8个字,3个周期恢复和写入纠错码,则当系统以35%为读操作,65%为写操作的访问情况工作,则存储器最大带宽为( )。

A.133.2MB/s
B.114.4MB/s
C.126MB/s
D.120.3MB/s
正确答案:D
解析:题目很长,首先需要弄清题目的意思。

题目告诉了时钟周期、速率以及读和写操作各自花的时钟周期数,所要求的是存储器的最大带宽,也就是单位时间内传输的有效信息量。

计算过程如下:读操作的时间为TF (1+3+8)×20ns=240ns写操作的时间为Tw=(1+2+8+3)×20ns=280ns则综合加权的时间为240ns×0.35+280ns×0.65=266ns带宽为(也就是266ns可以传输8个字,或者说传输32B)Bn=32B/ (266×10—9S)≈120.3MB/s
17.以下是一段指令序列:1 addi R1,20 (R1)←202 1w R2,R0,12 (R2)←M(12+(R0))3 add R3,R1,R2 (R3)←(R1)+(R2)以上指令序列中,假定采用“取指、译码/取数、执行、访存、写回”这种五段流水线方式,那么在采用“转发”技术时,需要在第3条指令之前至少加入( )
条空操作(nop)指令,才能使这段程序不发生数据冒险。

A.0
B.1
C.2
D.3
正确答案:B
解析:通过观察这三条指令发现,第一、二条指令与第三条指令存在写后读的数据冒险,也就是说有可能在第一、二条指令执行结束后还没来得及将最终的结果存入寄存器R1和R2中,第三条指令就开始直接读取寄存器R1和R2中的内容。

于是为了防止出现数据冒险,在执行第三条指令之前至少应加入一条空操作来保证取R1和R2中内容的滞后性。

18.某计算机采用微程序控制,微指令字中操作控制字段共12位,下列说法正确的是( )。

Ⅰ.若采用直接控制,则此时一条微指令最多可同时启动11个微操作Ⅱ.若采用字段直接编码控制,并要求一条微指令需同时启动3个微操作,则微指令字中的操作控制字段应分6段Ⅲ.若采用字段直接编码控制,并要求一条微指令需同时启动3个微操作,每个字段的微命令数相同,这样的微指令格式最多可包含45个微操作命令
A.仅Ⅰ、Ⅱ
B.仅Ⅰ、Ⅲ
C.仅Ⅱ、Ⅲ
D.Ⅰ、Ⅱ和Ⅲ
正确答案:B
解析:对于Ⅰ选项:如果12个微操作都是相容的话,可以最多同时启动12个微操作,故I正确。

对于Ⅱ选项:首先,如果要同时启动3个微操作,那么这3个微操作必须是相容的,所以要将控制字段分为3段,也就是每段占4位,故Ⅱ错误。

对于Ⅲ选项:由Ⅱ的分析可知,由于每段占4位,每个字段可表示15种状态(保留一个状态表示不发微命令),那么一共就可以表示45个状态,故Ⅲ正确。

19.一条双字长直接寻址的子程序调用CALL指令,其第一个字为操作码和寻址特征,第二个字为地址码5000H。

假设PC(程序计数器)当前值为1000H,SP的内容为0100H,栈顶内容为1234H,存储器按字编址,而且进栈操作是先(SP)—1→SP,后存入数据。

则CALL指令执行后,SP及栈顶的内容分别为( )。

A.00FFH,1000H
B.0101H,1000H
C.00FEH,1002H
D.00FFH,1002H
正确答案:D
解析:当子程序调用CALL指令时,首先需要将程序断点(PC的值)保存在堆栈中,然后将CALL指令的地址码送入PC。

因为指令为双字长,所以取出
CALL指令后,PC的值需要加2,即1002H。

当CALL指令执行后,程序断点1002H进栈,此时SP=OOFFH(因为进栈操作需要将SP的值减1,即0100H—0001H=00FFH),栈顶内容为1002H。

20.指令流水线将一条指令的执行过程分为4步,其中第1、2和4步的执行时间为△t,如图4—2所示。

若该流水线顺序执行50条指令共用了203At(无需考虑相关问题),则该流水线的第3步的执行时间是( )。

A.3△t
B.4△t
C.5△t
D.6△t
正确答案:B
解析:根据题意可以看到,在此流水线中顺序执行50条指令用了203△t(正常情况下如果第3步的执行时间为△t,则执行50条指令只需要4+ (50—1)×△t=53△t),所以流水线的瓶颈必定是第3步。

补充:对于包含瓶颈段的指令流水线,不妨设流水线共有k段,且需要执行n条指令,则总的执行时间为∑i=1k△t1+(n—1)max {△t1,△t2,…,△tk}根据上述公式,假定流水线中第3步的执行时间为S,该指令流水线顺序执行50条指令所用的时间为:△t+△t+S+△t+(50—1)max {△t,△t,S,△t}=203△t,解得S=4△t,即第3步的执行时间为4△t。

21.某总线总共有88根信号线,其中数据总线为32bit,地址总线为20bit,控制总线为36根,总线的工作频率为66MHz,则总线宽度为( ),传输速率为( )。

A.32bit 264MB/s
B.20bit 264MB/s
C.32bit 254MB/s
D.20bit 264MB/s
正确答案:A
解析:需要清楚的是,总线的宽度不是地址总线的位数,也不是控制总线的位数,而是数据总线的位数,所以此题总线的宽度应该是32bit。

而总线的传输速率为总线的工作频率乘以总线宽度,即66MHz×32bit=66MHz×4B=264MB/s.
22.指令( )从主存中读出。

A.总是根据程序计数器(PC)
B.有时根据PC,有时根据转移指令
C.根据地址寄存器
D.有时根据PC,有时根据地址寄存器
正确答案:A
解析:指令总是根据程序计数器(PC)从主存中读出(这一点一定要记住)。

可能考生会想到无条件转移指令的情况,认为不一定总是根据PC读出。

实际上,
正确的执行顺序是这样的,当前指令正在执行时,其实PC已经是下一条指令的地址了,如果遇到了无条件转移指令,则只需要简单地把跳转的地址覆盖PC的内容就可以了,最终的结果还是指令需要根据PC从主存读出。

23.在操作系统中,用户在使用I/O设备时,通常采用( )。

A.物理设备名
B.逻辑设备名
C.虚拟设备名
D.设备序号
正确答案:B
解析:设备管理通常将逻辑设备和物理设备分开,逻辑设备是用户使用的。

系统设置了一张逻辑设备表,用于将应用程序中所使用的逻辑设备名映射为物理设备名。

24.考虑下面的基于动态改变优先级的可抢占式优先权调度算法。

大的优先权数代表高优先级。

当一个进程在等待CPU时(在就绪队列中,但未执行),优先权以α速率改变;当它运行时,优先权以p速率改变。

所有的进程在进入就绪队列被给定优先权数为O。

参数a和p可以设定给许多不同的调度算法。

下列( )设定可以实现进程FIFO (First In First Out)。

A.β>α>0
B.α>β>0
C.β<α<0
D.α<β<0
正确答案:A
解析:假设进程M先于进程N进入就绪队列。

PM和PN分别表示M和N 的优先权数。

在β>α>0设定下,在就绪队列中,PM>PN,原因是α>0,则越早进入就绪队列,优先数就越大,所以是FCFS (First Come First Service)。

又因为β>α,所以在M运行时,PM增长速度大于PN的增长速度,则PM>PN,从而保证了M进程先于N进程完成,即FIFO(First In First Out)。

在α>β>0设定下,还是FCFS,原因跟β>α>0 —样。

但由于α>β,所以在M运行时,无法保证PM仍然大于PN,即无法保证FIFO。

在β<α<0设定下,在就绪队列中,PM<PN,原因是α<0,则越早进入就绪队列,优先数就越小,所以是LCFS (Last Come First Service)。

又因为β<α,,所以在N运行时,PN下降速度大于PM的下降速度,有可能出现PM>PN的情况,此时CPU就有可能被M 抢占,无法保证LIFO (Last In First Out)。

在α<β<0设定下,还是LCFS,原因跟β<α<0—样。

但由于α<β,在N运行时,PN的下降速度变慢了,从而保证了PN始终大于PM,导致N进程先于M进程完成,即LIFO。

所以本题的答案选A。

本题通过对α、β的设置实现更多的调度方式,有兴趣的同学可以再思考下,比如α<α<β的情况等。

25.假设系统有5个进程,A、B、C三类资源。

某时刻进程和资源状态如表4—1所示。

下面叙述正确的是( )。

A.系统不安全
B.该时刻,系统安全,安全序列为<P1,P2,P3,P4,P5>
C.该时刻,系统安全,安全序列为<P2,P3,P4,P5,P1>
D.该时刻,系统安全,安全序列为<P4,P5,P1,P2,P3>
正确答案:D
解析:当Available为(2,3,3)时,可以满足P4、P5中任意一个进程的需求;这两个进程结束后释放资源,Available为(7,4,11),此时可以满足P1、P2、P3中任意一个进程的需求,所以该时刻系统处于安全状态,安全序列中只有D 选项满足条件。

26.设有一个发送者进程和接收者进程,其流程图如图4—3所示。

S是用于实现进程同步的信号量,mutex是用于实现进程互斥的信号量。

试问流程图中的A、B、C、D4个框中应填写什么?假定缓冲区有无限多个且初始为空,S和mutex的初值应该是什么?( )
A.P(mutex)、V(mutex)、P(S)、P(mutex) S=缓冲区的个数mutex=1
B.P(S)、V (mutex)、P(S)、P(mutex) S=0 mutex=1
C.P(mutex)、V(mutex)、P(S)、P(mutex) S=0 mutex=1
D.P(S)、V(mutex)、P(S)、P(mutcx) S=缓冲区的个数mutex=0
正确答案:C
解析:流程图中的A、B、C、D4个框中分别应该填写:P(mutex)、V(mutex)、P(S)、P(mutex)或者P(mutex)、V(mutex)、P(mutex)、P(S)。

首先应该明确这里的缓冲区是临界资源,所以“把缓冲区放到信息链尾”和“从缓冲区中取出消息”是互斥的。

在操作前都要,P(mutex),成功的P操作后,进入临界区,退出时V(mutex),又mutex作为互斥信号量,初值应为l。

S作为同步信号量,发送者进程发送完信息后进行V(S),表示信号链中信息的个数增加1,作为接收者进程必须有相应的表示取走信息的P(S)操作。

S是资源信号量,是用来表示信号链中信息的个数,其初值要根据进程的初始状态确定,这里初始为空,所以其初值应设置为0。

知识点回顾:解决进程同步和互斥问题的求解步骤:1)先要确定哪些操作是并发的,确定哪些操作是互斥的。

并发操作可以用多个进程实现,同步和互斥就发生在这多个进程之间。

多个进程操作同一临界资源就是进程间的互斥问题。

多个进程要按一定的顺序操作就是进程间的同步问题。

2)每道题都指定了互斥和同步的规则,从中提炼出正确的操作条件,从而确定互斥和同步的操作流程。

3)根据互斥和同步规则以及操作流程确定信号量的个数和每个信号量表示的含义,只有确切地知道信号量所代表的含义,设置这个信号量才有意义。

4)同步信号量的初值要根据进程的初始状态确定,具体问题具体分析,没有统一的方法。

互斥信号量的初值通常是1。

5)根据同步、互斥规则和每个进程的操作流程可以确定P、V操作的位置。

需要说明的是,无论是互斥问题还是同步问题,只要是需要进程进入阻塞状态,就必须想到在什么时候将进程唤醒。

提示:同步进程之间具有某种合作关系,如在执行时间上必须按一定的顺序协调运行,或者共享某种资源。

互斥进程彼此在逻辑上完全无关,它们的运行不具有次序的特征。

27.考虑在一个虚拟页式存储管理的系统中,在地址变换过程中,进程状。

相关文档
最新文档