1、计算机专业基础综合(操作系统)模拟试卷 3 及答案与解析一、单项选择题1-40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。1 计算机系统中判别是否有中断事件发生应是在( )。(A)进程切换时(B)执行完一条指令后(C)执行 P 操作后(D)由用户态转入核心态时2 若当前进程因时间片用完而让出处理机时,该进程应转变为( )状态。(A)就绪(B)等待(C)运行(D)完成3 一种既有利于短小作业又兼顾到长作业的作业调度算法是( )。(A)先来先服务(B)轮转(C)最高响应比优先(D)均衡调度4 作业调度程序是从处于( )状态的作业中选取一个作业并把
2、它装入主存。(A)输入(B)收容(C)执行(D)完成5 进程处于下列( ) 等待状态时,它是处于非阻塞状态。(A)等待从键盘输入数据(B)等待协作进程的一个信号(C)等待操作系统分配 CPU 时间(D)等待网络数据进入内存6 若系统中有五个并发进程涉及某个相同的变量 A,则变量 A 的相关临界区是由( )临界区构成。(A)2 个(B) 3 个(C) 4 个(D)5 个7 在多进程的并发系统中,肯定不会因竞争( )而产生死锁。(A)打印机(B)磁带机(C)磁盘(D)CPU8 通常不采用( ) 方法来解除死锁。(A)终止一个死锁进程(B)终止所有死锁进程(C)从死锁进程处抢夺资源(D)从非死锁进程
3、处抢夺资源9 进程所请求的一次打印输出结束后,将使进程状态从( )。(A)运行态变为就绪态(B)运行态变为等待态(C)就绪态变为运行态(D)等待态变为就绪态10 共享变量是指( ) 访问的变量。(A)只能被系统进程(B)只能被多个进程互斥(C)只能被用户进程(D)可被多个进程11 UNIX 系统中,进程调度采用的技术是( ) 。(A)时间片轮转(B)先来先服务(C)静态优先数(D)动态优先数12 死锁现象是由于( ) 造成的。(A)CPU 数量不足(B)内存数量不足(C)多个进程抢夺并独占资源(D)作业批处理13 临界区是指( ) 。(A)一组临界资源的集合(B)可共享的一块内存区(C)访问临
4、界资源的一段代码(D)请求访问临界资源的代码14 在一段时间内,只允许一个进程访问的资源称为( )。(A)共享资源(B)独占资源(C)临界资源(D)共享区15 不需要信号量能实现的功能是( )。(A)进程同步(B)进程互斥(C)执行的前趋关系(D)进程的并发执行16 当中断发生后,进入中断处理的程序属于( )。(A)用户程序(B) OS 程序(C)可能是用户程序,也可能是 OS 程序(D)单独的程序,既不是用户程序,也不是 OS 程序17 某计算机系统中有 8 台打印机,有 K 个进程竞争使用,每个进程最多需要 3 台打印机。该系统可能会发生死锁的 K 的最小值是( )。(A)2(B) 3(C
5、) 4(D)518 进程 P0 和 P1 的共享变量定义及其初值如下:boolean flag2;int turn=0;flag0=false;flag1=false;若进程 P0 和 P1 访问临界资源的伪代码按照下面设计:void P0()f进程 P0 void P1()进程 P lwhile(TRUE) while(TRUE)flag0=TRUE; flag0=TRUE;turn=1; turn=0;while(flag1*consumer item in nextc:until false;end【知识模块】 操作系统23 【正确答案】 (1)定义信号量 s1 控制 P1 与 P2 之
6、间的同步,s2 控制 P1 与 P3 之间的同步,empty 控制生产者与消费者之间的同步, mutex 控制进程间互斥使用缓冲区。(2)程序如下:var s1=0, s2=0,empty=N,mutex=1:parbeginP1:beginX=produce(); *生成一个数*P(empty); *判断缓冲区是否有空单元*P(mutex); *缓冲区是否被占用*Put():If X2=0V(s2); *如果是偶数,向 P3 发出信号*elseV(s1); *如果是奇数,向 P2 发出信号*V(mutex); *使用完缓冲区,释放 *endP2:beginP(s1); *收到 P1 发来的信
7、号,已产生一个奇数*P(mutex); *缓冲区是否被占用*Getodd();Countodd(): =eountodd()+1;V(mutex):*释放缓冲区*V(empty); *向 P1 发信号,多出一个空单元*endP3:beginP(s2) *收到 P1 发来的信号,已产生一个偶数*P(mutex); *缓冲区是否被占用*Geteven();Counteven():=courlteven()+1;V(mutex); *释放缓冲区*v(empty): *向 P1 发信号,多出一个空单元*endparend【知识模块】 操作系统24 【正确答案】 (1)在串行情况下,两个程序运行时间共计
8、 25 h;在并行方式下,处理器利用率为 50,说明处理器的工作时间占总运行时间的 50。根据已知条件,“处理器工作时间分别为 TA=18 min,T B=27 min”,即总运行时间为(18+27)50(min) ,考虑到还有 15 min 系统开销,故并行与串行的效率比为并行处理所需的时间串行处理所需要的时间总和=(18+27)50+152560=70 。 (2)即采用多道处理技术之后,完成程序 PA 和程序 PB 所需的时间为串行处理方法的70。因此可以说效率提高了 30。【知识模块】 操作系统25 【正确答案】 为了清楚地描述作业执行情况,我们对题目假设的情况分析如下:(1)J1 占用
9、 102 传输 30 ms 时,J1 传输完成,抢占 J2 的 CPU,运行 10 ms,再传输 30 ms,运行 10 ms,完成。J1 从开始到完成所用的时间为:30+10+30+10=80(ms)。J2 与其并行地在 101 上传输 20 ms,抢占 J3 的 CPU,J2 运行 10 ms 后,被 J1 抢占 CPU,等待 10 ms 之后, J2 再次得到 CPU,运行 10 ms,J2 启动 102 传输,40 ms 完成。 J2 从开始到完成所用的时间为: 20+10+10+10+40=90(ms)。J3 在 CPU 上执行 20 ms,被 J2 抢占 CPU,等待 30 ms,
10、再运行 10 ms,等待 10 ms,J3 启动 IO1 运行 20 ms 的传输,完成。J3 从开始到完成所用的时间为20+30+10+10+20=90(ms)。(2)三个作业全部完成时,CPU 的利用率为(10+20+30+10) 90=7 9=78。(3)三个作业全部完成时,外设 IO1 的利用率为(20+30+20)90=79=78。【知识模块】 操作系统26 【正确答案】 此题考查学生对并发程序概念的理解。 (1)程序 A 和程序 B 顺序执行时,程序 A 执行完毕程序 B 才开始执行。两个程序共耗时 75 s,其中占用CPU 的时间为 40 s,因此顺序执行时 CPU 的利用率为
11、4075=53。 (2)在多道程序环境下,两个程序并发执行,其执行情况如下表所示。 由表中数据可以看出,两个程序共耗时 40 s,其中 CPU 运行时间为 40 s,故此时 CPU 的利用率为4040=100。【知识模块】 操作系统27 【正确答案】 (1)死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进。(2)产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法。(3)产生死锁的必要条件是互斥条件、请求和保持条件、不可剥夺条件和循环等待条件。(4)解决死锁可归纳为四种方法:预防死锁、避免死锁、检测死锁和解除死锁。(5)解决死锁的四种方法中,预防死锁是
12、最容易实现的,而避免死锁的发生则可以使资源的利用率最高。【知识模块】 操作系统28 【正确答案】 (1)方法一:如果系统当前存在的资源数量能够满足进程的资源需求,便一次性地为进程分配其所需的全部资源;在该进程完成之后再一次性地回收全部资源。这个做法被称为摒弃“请求和保持” 条件,该方法可以预防死锁。(2)方法二:当系统中某些进程在已经占有一定数量资源的情况下,又提出新的资源请求,操作系统不能立即满足该进程的需求时,该进程必须立即释放已经占有和保持的所有资源,待以后需要时再重新申请:这种可以剥夺进程资源的做法可以有效地防止死锁的产生。其被称为摒弃“不可剥夺” 条件。(3)方法三:就是采用一定的方
13、法,将所有可提供的资源按类型排序编号,所有进程对资源的请求也必须严格按序号递增的次序提出,避免产生资源占有和资源需求的回路出现,造成死锁的产生。此方法也被称为摒弃“环路等待” 条件。【知识模块】 操作系统29 【正确答案】 此题主要考查中断概念在操作系统设计过程中的重要作用与临界区的概念。用户进程进入临界区时屏蔽所有中断,包括系统程序的中断。假如屏蔽的是用户进程,确实可以保护临界资源,但如果连系统所发出的中断也被屏蔽的话,就会引起系统错误。虽然系统外中断往往与当前运行的程序无关,但如果是一些重要的硬件中断,如电源故障等,就可能会引起错误,故不可盲目屏蔽所有中断。【知识模块】 操作系统30 【正
14、确答案】 本题考查用 P、V 操作解决进程的同步互斥问题。 (1)进程PA、PB、PC 之间的关系为:PA 与 PB 共用一个单缓冲区,B 又与 PC 共用一个单缓冲区,其合作方式如下图所示。当缓冲区 1 为空时,进程 PA 可将一个记录读入其中;若缓冲区 1 中有数据且缓冲区 2 为空,则进程 PB 可将记录从缓冲区 1 复制到缓冲区 2 中;若缓;中区 2 中有数据,则进程 PC 可以打印记录。在其他条件下,相应进程必须等待。事实上,这是一个生产者一消费者问题。为遵循这一同步规则。应设置 4 个信号量empty1、empty2、full1、 full2,信号量 empty1 和 empty
15、2 分别表示缓冲区 1 及缓冲区 2 是否为空,其初值为 1;信号量 full1 和 full2 分别表示缓区 1 及缓冲区 2 是否有记录可供处理,其初值为 0。 (2)相应的进程描述如下: semaphore emptyl=1 : 缓冲区 1 是否为空 semaphore fulll=0: 缓冲区 1 是否有记录可供处理 semaphore empty2=1; 缓冲区 2 是否为空 semaphore full2=0: 缓冲区 2 是否有记录可供处理 cobegin process PA() while(TRuE) 从磁盘读入一条记录; P(emptyl); 将记录存入缓冲区 1; V(f
16、ulll); process PB() while(TRUE) P(fulll);从缓冲区 1 中取出一条记录; V(empty1) ; P(empty2) ; 将取出的记录存入缓冲区2; V(full2); process PC() while(TRUE) P(full2); 从缓冲区 2 中取出一条记录:V(empty2): 将取出的记录打印出来: coend【知识模块】 操作系统31 【正确答案】 本题考查用 P、V 操作解决进程的同步互斥问题。(1)第 1 队音乐爱好者要竞争“ 待出售的音乐磁带和电池” ,而且在初始状态下系统并无“待出售的音乐磁带和电池” ,故可为该种资源设置一初值为
17、 0 的信号量buy1;同样,需设置初值为 0 的 buy2、buy3 分别对应“待出售的随身听和电池” 、“待出售的随身听和音乐磁带” 。另外,为了同步买者的付费动作和卖者的给货动作,还需设置信号量 payment 和 goods,以保证买者在付费后才能得到所需商品。信号量 music_over 用来同步音乐爱好者听乐曲和酒吧老板的下一次出售行为。(2)具体的算法描述如下:semaphore buy1=buy2=buy3=0?semaphore payment=0;semaphore goods=0:semaphore music_over=0;cobeginprocess boss() 酒
18、吧老板while(TRUE)拿出任意两种物品出售;if(出售的是音乐磁带和电池)V(buy1) ;else if(出售的是随身听和电池)V(buy2) :else if(出售的是随身听和音乐磁带)V(buy3);P(payment); 等待付费V(goods); 给货P(music_over); 等待乐曲结束process fanl() 第 1 队音乐爱好者while(TRUE)P(buy1); 等待有音乐磁带和电池出售V(payment); 付费P(goods); 取货欣赏一曲乐曲:V(music_over); 通知老板乐曲结束process fan2() 第 2 队音乐爱好者while(T
19、RUE)P(buy2); 等待有随身听和电池出售V(payment); 付费P(goods); 取货欣赏一曲乐曲:V(music_over); 通知老板乐曲结束process fan3() 第 3 队音乐爱好者while(TRUE)P(buy3); 等待有随身听和音乐磁带出售V(payment); 付费P(goods); 取货欣赏一曲乐曲:V(music_over);通知老板乐曲结束coend【知识模块】 操作系统32 【正确答案】 本题考查 P、V 操作实现进程的互斥。(1)哥哥存两次钱后,共享变量 amount 的值为 20。哥哥的第三次存钱与弟弟的取钱同时进行,如果两者顺序执行,则最后
20、amount 的值为 20;如果在一个进程的执行过程中进行 CPU 调度,转去执行另一进程,则最后 amount 的值取决于amount=m1 及 amount=m2 的执行先后次序,若前者先执行,则最后 amount 的值为10,若后者先执行,则最后 amount 的值为 30。因此,最后账号 amount 上可能出现的值有 10、20、30。(2)在上述问题中,共享变量 amount 是一个临界资源,为了实现两并发进程对它的互斥访问,可为它设置一初值为 1 的互斥信号量 mutex,并将上述算法修改为:int amount=0;semaphore mutex=1; g 斥访问 amount 变量的信号量cobeginprocess SAVE()int m1;P(mutex):m1=amount:m1=m1+10:amount=m1;V(mutex):process TAKE()int m2;P(mutex);m2=amount:m2=m210;amount=m2;V(mutex);coend【知识模块】 操作系统