第4章 进程同步与死锁习题答案

第4章 进程同步与死锁习题答案

ID:6382591

大小:117.00 KB

页数:10页

时间:2018-01-12

第4章  进程同步与死锁习题答案_第1页
第4章  进程同步与死锁习题答案_第2页
第4章  进程同步与死锁习题答案_第3页
第4章  进程同步与死锁习题答案_第4页
第4章  进程同步与死锁习题答案_第5页
资源描述:

《第4章 进程同步与死锁习题答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章进程同步与死锁(1)什么是进程同步?什么是进程互斥?解:同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。互斥是一种特殊的同步方式

2、。(2)进程执行时为什么要设置进入区和退出区?解:为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为“进入区”代码;在退出临界区后,必须执行“退出区”代码,用于恢复未被访问标志。(3)同步机构需要遵循的基本准则是什么?请简要说明。解:同步机制都应遵循下面的4条准则:1.空闲让进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。2.忙则等待。当有一个进程在临界区时,其它欲进入临界

3、区的进程必须等待,以保证进程互斥地访问临界资源。3.有限等待。对要求访问临界资源的进程,应保证进程能在有限时间内进入临界区,以免陷入“饥饿”状态。4.让权等待。当进程不能进入临界区时,应立即放弃占用CPU,以使其它进程有机会得到CPU的使用权,以免陷入“饥饿”状态。(4)整型信号量是否能完全遵循同步机构的四条基本准则?为什么?解:不能。在整型信号量机制中,未遵循“让权等待”的准则。(5)在生产者-消费者问题中,若缺少了V(full)或V(empty),对进程的执行有什么影响?解:如果缺少了V(full),那么表明从第一个生产者进程开始就没有对信号量full值改变,即使缓冲池存放的产品已

4、满了,但full的值还是0,这样消费者进程在执行P(full)时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。如果缺少了V(empty),例如在生产者进程向n个缓冲区放满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品时empty并没有被改变,直到缓冲池中的产品都取走了,empty的值也一直是0,即使目前缓冲池有n个空缓冲区,生产者进程要想再往缓冲池中投放产品会因申请不到空缓冲区而被阻塞。(6)在生产者-消费者问题中,若将P(full)和P(empty)交换位置,或将V(full)或V(empty)交换位置,对进程

5、执行有什么影响?解:对full和empty信号量的P、V操作应分别出现在合作进程中,这样做的目的是能正确表征各进程对临界资源的使用情况,保证正确的进程通信联络。(7)利用信号量写出不会出现死锁的哲学家进餐问题的算法。解:对哲学家按顺序从0到4编号,哲学家i左边的筷子的编号为i,哲学家右边的筷子的编号为(i+1)%5。semaphorechopstick[5]={1};//定义信号量数组chopstick[5],由于侉子是临街资源(互斥),故设置初值均为1。Pi(){//i号哲学家的进程do{if(i<(i+1)%5){wait(chopstick[i]);wait(chopstick[

6、(i+1)%5]);}else{wait(chopstick[(i+1)%5]);wait(chopstick[i]);}eatsignal(chopstick[i]);signal(chopstick[(i+1)%5]);think}while(1);}(8)利用AND型信号量和管程解决生产者-消费者问题。解:利用AND信号量解决生产者-消费者问题的算法描述如下:varmutex,empty,full:semaphore:=1,n,0;buffer:array[0,...,n-1]ofitem;inout:integer:=0,0;beginparbeginproducer:begi

7、nrepeat...produceaniteminnextp;...Swait(empty,mutex);buffer(in):=nextp;in:=(in+1)modn;Ssignal(mutex,full);untilfalse;endconsumer:beginrepeatSwait(full,mutex);nextc:=buffer(out);out:=(out+1)modn;Ssignal(mutex,empty);consumeth

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。