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