资源描述:
《操作系统精髓与设计原理-第6章 并发性_死锁和饥饿》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第六章习题翻译第一部分 复习题6.1给出可重用资源和可消费资源的例子。答:可重用资源:处理器,I/O通道,主存和辅存,设备以及诸如文件,数据库和信号量之类的数据结构。可消费资源:中断,信号,消息和I/O缓冲区中的信息。6.2可能发生死锁所必须的三个条件是什么?答:互斥,占有且等待,非抢占。6.3产生死锁的第4个条件是什么?答:循环等待。6.4如何防止占有且等待的条件?答:可以要求进程一次性地请求所有需要的资源,并且阻塞这个资源直到所有请求都同时满足。6.5给出防止无抢占条件的两种方法。答:第一种,如果占有某些资源的一个进程
2、进行进一步资源请求被拒绝,则该进程必须释放它最初占用的资源,如果有必要,可再次请求这些资源和另外的资源。第二种,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。6.6如何防止循环等待条件?答:可以通过定义资源类型的线性顺序来预防。如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。6.7死锁避免,检测和预防之间的区别是什么?答:死锁预防是通过间接地限制三种死锁必要条件的至少一个或是直接地限制循环等待的发生来避免死锁的出现。死锁避免允许
3、可能出现的必要条件发生,但是采取措施确保不会出现死锁的情况。而死锁检测允许资源的自由分配,采取周期性的措施来发现并处理可能存在的死锁情况。第二部分 习题6.1写出图6.1(a)中死锁的四个条件。解:互斥:同一时刻只有一辆车可以占有一个十字路口象限。占有且等待:没有车可以倒退;在十字路口的每辆车都要等待直到它前面的象限是空的。非抢占:没有汽车被允许挤开其他车辆。循环等待:每辆汽车都在等待一个此时已经被其他车占领的十字路口象限。6.2按照6.1节中对图6.2中路径的描述,给出对图6.3中6种路径的简单描述。解:1.Q获得B和A
4、,然后释放B和A.当P重新开始执行的时候,它将会能够获得两个资源。2.Q获得B和A,P执行而且阻塞在对A的请求上.Q释放B和A。当P重新开始执行的时候,它将会能够获得两个资源。3.Q获得B,然后P获得和释放A.Q获得A然后释放B和A.当P重新开始行的时候,它将会能够获得B。4.P获得A然后Q获得B.P释放A.Q获得A然后释放B.P获得B然后释放B。5.P获得,然后释放A.P获得B.Q执行而且阻塞在对B的请求上。P释放B。当Q重新开始执行的时候,,它将会能够获得两个资源。6.P获得A而且释放A然后获得并且释放B.当Q重新开始
5、实行,它将会能够获得两个资源。6.3图6.3反映的情况不会发生死锁,请证明。证明:如果Q获得B和A(在P之前请求A),那么Q能使用这些两类资源然后释放他们,允许A进行。如果P在Q之前请求A获得A,然后Q最多能执行到请求A然后被阻塞。然而,一旦P释放A,Q能进行。一旦Q释放B,A能进行。6.4考虑下面的一个系统,当前不存在未满足的请求。可用r1r2r3r42100当前分配最大需求仍然需求r1r2r3r4r1r2r3r4r1r2r3r40012001220002750003466562354435603320652a计算每个进
6、程仍然可能需要的资源,并填入标为“仍然需要”的列中。b系统当前是处于安全状态还是不安全状态,为什么。c系统当前是否死锁?为什么?d哪个进程(如果存在)是死锁的或可能变成死锁的?e如果P3的请求(0,1,0,0)到达,是否可以立即安全地同意该请求?在什么状态(死锁,安全,不安全)下可以立即同意系统剩下的全部请求?如果立即同意全部请求,哪个进程(如果有)是死锁的或可能变成死锁的?解:a.00000750662220020320b.系统当前处于安全状态,因为至少有一个进程执行序列,不会导致死锁,运行顺序是p1,p4,p5,p2,
7、p3.c.系统当前并没有死锁,因为P1进程当前分配与最大需求正好相等,P1进程可以运行直至结束,接下来运行其他进程d.P2,P3,P4,P5可能死锁e.不可以,当进程P1,P4,P5执行完可用资源为(4,6,9,8),P2,P3将死锁,所以不安全,完全不可以立即同意系统剩下的全部请求。6.5请把6.4中的死锁检测算法应用于下面的数据,并给出结果。Available=(2100)20010010Request=1010Allocation=200121000120解:1.W=(2100)2.MarkP3;W=(2100)+(
8、0120)=(2220)3.MarkP2;W=(2220)+(2001)=(4221)4.MarkP1;nodeadlockdetected没有死锁6.6一个假脱机系统包含一个输入进程I,用户进程进程P和一个输出进程O,它们之间用两个缓冲区连接。进程以相等大小的块为单位交换数据,这些块利用输入缓冲区和输