《操作系统习题第四章答案.doc》由会员分享,可在线阅读,更多相关《操作系统习题第四章答案.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 互斥、同步与通讯答案一、单项选择题1.B2.D3.B4.B5.D6.A7.C8.B9.D10.C11.D12.C13.C14.B15.B16.B17.A18.B19.D20.B21.B22.A23.C24.B25.B26.B27.A28.C二、多项选择题1分析任何一台CPU在每一时刻只能解释执行一条指令,因而,不可能在同一时刻为多个进程服务。进程可同时执行的含义是一个进程的工作没有全部完成之前另一进程就可开始工作。所以,实际上多个进程是轮流占用CPU运行的。到底哪个进程能占用处理器不仅与进程自身有关,且受外界因素的影响;当多个进程竞争CPU时,必须由进程调度来决定当前哪个进程可以占用C
2、PU;故每个进程都是走走停停的,进程执行的速度不能完全由进程自己来控制。并发进程相互之间可能是无关的,即它们是各自独立的,这些进程中每一个进程的执行既不依赖于其它进程也不会影响其它进程的执行。但是,有些并发进程需使用共享资源,为保证进程执行的正确性,对共享资源的使用必须加以限制。同步就是并发进程中的一种制约关系,一个进程能否使用共享资源取决于其它进程的消息,只有指定的消息到达才可使用共享资源。如果无约束地使用共享资源,则可能出现多个进程交替地访问共享资源,于是就可能会出现与时间有关的错误。故本题的答案为C、D、E。题解C、D、E。2分析根据P操作的定义,当调用P操作时, P操作把信号量S减去1
3、,若结果小于0则调用者将等待信号量,否则可继续运行。因而,若调用P(S)后S的值为=0则进程可以继续运行,故应选择A和D。要注意不能选择C,因S0包含了S0和S0,当S0时进程将成为等待状态而不能运行。题解A,D。3题解A,C,E。三、判断题1. 题解是。2分析如果不控制并发进程执行的相对速度,则它们在共享资源时可能会出现两种情况:一种是并发进程交替使用共享资源,这样就可能会发生与时间有关的错误;另一种是并发执行的速度没有致使它们交替使用共享资源,这时就不会出现与时间有关的错误。因而,本题的结论“一定会出现与时间有关的错误”是不对的。题解否。3. 分析如果一个进程单独执行时,那么执行结果只取决
4、于进程本身,不受外界影响。但多个进程并发执行时,无论是进程本身的原因还是外界的因素都会影响到进程的执行速度。如果并发进程有共享变量且其执行速度造成了它们交替访问共享变量,那么进程的执行结果可能不惟一。故本题的阐述不确切。题解否。4题解是。四、填空题1封闭性,可再现性2并发进程3与时间有关的4临界区5P, V6竞争(或互斥),协作(或同步)7P, V8等待信号量,就绪9分析因规定该资源只能互斥使用,因而信号量的初值应定义为1。当n个进程各调用一次P操作时将使信号量的值为最小。题解1,(1-n)或-(n-1)。10分析由于初值为10,因而调用了18次P操作后的值为(l0-18)=-8。再调用15次
5、V操作的话则信号量的值为(815)=7。题解7。11send(或发送),receive(或接收)12.可用资源的数量;等待这类资源的进程个数13. 进程通信五、计算题1(1)两个进程之间的关系是同步关系。 (2)应定义两个信号量S1和S2,分别表示两个不同的消息:“允许拣黑子”和“允许拣白子”。假定让进程A先拣黑子,则S1的初值为1,S2的初值应为0。(3)进程A、进程B能正确并发执行的程序应如下:Cobegin Process A BeginL1: P(S1)拣一粒黑子;V(S2)goto L1end;process B Begin L2:P(S2)拣一粒白子;V(S1)goto L2end
6、;coend2用PV操作管理时应定义三个信号量,分别表示仓库尚可存放多少成品、仓库中是否有成品、搬运设备是否空闲。显然,它们的初值应分别为:8、0、1。begin G,C,M:semaphore;G:=8;C:=0;M:=1;cobegin process producer begin L1:P(G);produce a product;/生产成品/P(M);put a product;/存入成品/V(M);V(C);goto L1end; process consumer begin L2:P(C); P(M); get a product;/取出成品/ V(M); V(G); consum
7、e a product;/消费成品/ goto L2 end;coend;end;3. 每次只允许一辆汽车通过,所以桥是临界资源。对桥的访问必须互斥。在本题中只需设置一个信号量S表示对桥的互斥访问,初值为1。doP(S);过桥;V(S);4独木桥是各进程的共享资源,由于每次只允许一个人过桥,且河两边的人必须交替过桥,因而相互间要互通消息。在本题中应区分“允许河东的人过桥”和“允许河西的人过桥”两个不同的消息。所以,应定义两个信号量SI和SZ分别与两个消息对应。若开始时让河东的一个人先过桥,则信号量S1的初值应为1,而S2的初值应为0。任何一方的人欲过桥前应调用P操作来测试允许过桥的消息是否到达
8、,只有在消息到达后才可过桥,过桥后应调用V操作把允许另一方的一个人过桥的消息发送出去。(1)定义两个信号量S1和S2,S1:=1,S2:=0。(2)假定开始时让河东的一个人先过桥,则用PV操作管理时的程序应如下:process E-W;begin P(S1);过桥;V(S2);end;process W-E;begin P(S2);过桥;V(S1);end;5答:三个进程共用一个缓冲区,他们必须同步工作,可定义三个信号量:S1:表示是否可把读人的记录放到缓冲区,初始值为1。S2:表示是否可对缓冲区中的记录加工,初始值为0。S3:表示记录是否加工好,可以输出,初始值也为0。三个进程可如下设计:b
9、eginS1,S2,S3:semaphore; S1:l;S2:S3:0; cobegin process R begin L1:读记录; P(S1); 记录存入缓冲区; V(S2); goto L1; end; process M begin L2:P(S2); 加工记录; V(S3); goto L2; end; process P begin L3:P(S3); 输出加工后的记录; V(S1); goto L3; end; coend;end6.设置两个信号量S1、S2分别表示老虎和猪的数目,初值为0,对笼子必须互斥访问,设置S表示笼子,初值为1猎人:doP(S);放老虎;V(S1);农民:doP(S);放猪;V(S2);动物园:doP(S1);取老虎;V(S);饭店:doP(S2);取猪;V(S);7.设置两个信号量,用S1表示A、C是否互斥,初值为1;用S2表示B、D是否互斥,初值为1A() B() C() D() P(S1); P(S2); P(S1); P(S2); read F; read F; read F; read F; V(S1); V(S2); V(S1); V(S2);
限制150内