设有五个哲学家共享一张放有五把椅子的桌子每人分得一

上传人:aa****6 文档编号:55344054 上传时间:2018-09-27 格式:PPT 页数:11 大小:41KB
返回 下载 相关 举报
设有五个哲学家共享一张放有五把椅子的桌子每人分得一_第1页
第1页 / 共11页
设有五个哲学家共享一张放有五把椅子的桌子每人分得一_第2页
第2页 / 共11页
设有五个哲学家共享一张放有五把椅子的桌子每人分得一_第3页
第3页 / 共11页
设有五个哲学家共享一张放有五把椅子的桌子每人分得一_第4页
第4页 / 共11页
设有五个哲学家共享一张放有五把椅子的桌子每人分得一_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《设有五个哲学家共享一张放有五把椅子的桌子每人分得一》由会员分享,可在线阅读,更多相关《设有五个哲学家共享一张放有五把椅子的桌子每人分得一(11页珍藏版)》请在金锄头文库上搜索。

1、设有五个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,桌子上总共只有5支筷子,在每人两边分开各放1支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。 条件: 1)只有拿到2支筷子时,哲学家才能吃饭。 2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之后才能拿到筷子。 3)任何哲学家在自己未拿到2支筷子吃饭之前,决不放下自已手中的筷子。 要求: 1)有什么情况下5个哲学家全部吃不上饭? 2)描述一种没有人饿死(永远拿不到筷子)算法。,哲学家餐桌问题。,答案要点: 设信号量c0c4,初始值为1,分别表示i号筷子被拿。send(i) /第i个哲学家要吃饭beginP(ci)

2、;P(ci+1 mod 5);eat;V(ci+1 mod 5);V (ci);end上述过程可以保证两邻座不同时吃饭,但会出现5个哲学家每人一只筷子,谁也吃不上饭的死锁现象。,答案要点: 解决的思路如下:让奇数号的哲学家先取右手边的筷子,让偶数号的哲学家先取左手边的筷子。(为什么?)send(i)beginif i mod 2 =0 then else P(ci); P(ci+1 mod 5); P(ci+1 mod 5); P(ci); eat; eat; V(ci+1 mod 5); V (ci); V (ci); V(ci+1 mod 5); end,2、有相同类型的5个资源被4个进程

3、所共享,且每个进程最多需要2个这样的资源就可以运行完毕。试问该系统是否会由于对这种资源的竞争而产生死锁。,解:该系统不会由于对这种资源的竞争而产生死锁。因为在最坏情况下,每个进程都需要2个这样的资源,且每个进程都已申请到了1个资源,那么系统中还剩下1个可用资源。无论系统为了满足哪个进程的资源申请而将资源分配给该进程,都会因为该进程己获得了它所需要的全部资源而确保它运行完毕,从而可将它占有的2个资源归还给系统,这就保证了其余三个进程能顺利运行。由此可知,该系统不会由于对这种资源的竞争而产生死锁。,3、已知某系统中的所有资源是相同的,系统中的进程严格按照一次一个的方式申请或释放资源。在此系统中,没

4、有进程所需要的资源数量超过系统的资源总拥有数量,试对下面列出的各种情况说明是否会发生死锁。,解: 情况a:因系统中仅存在1个进程,且系统中资源总数为2,由题目所给条件可知,该进程的最大资源需求量不超过2,显然情况a不会出现死锁。 情况b:因系统中存在2个进程,且系统中资源总数为1,由题目所给条件可知,每个进程的最大资源需求量不超过1。不妨设两个进程的最大资源需求量为1,若系统将资源分配给其中的一个进程,则此进程已获得它所需要的所有资源并将运行完毕,从而可将分配给它的资源归还给系统,使另一个进程也能顺利执行完成,故不会发生死锁。 情况c:因系统中存在2个进程,且系统中资源总数为2,由题目所给条件

5、可知,每个进程的最大资源需求量不超过2。假设两个进程的最大资源需求量为2,若系统将资源分配给其中的一个进程,则此进程已获得它所需要的所有资源并将运行完毕,从而可将分配给它的资源归还给系统,使另一个进程也能顺利执行完成,以这种方式分配资源不会发生死锁;若系统将资源分配给每个进程1个,在此情况下,每个进程均获得1个资源且系统中已没有空闲资源,当其中的一个进程再次申请1个资源时,因系统中无空闲资源而使其等待,另一个进程的情况也是如此,因此以这种方式分配资源会发生死锁。,情况d: 因系统中存在2个进程,且系统中资源总数为3,由题目所给条件可知,每个进程的最大资源需求量不超过3。假设两个进程的最大资源需

6、求量为3,若系统将资源分配给其中的一个进程,则此进程已获得它所需要的所有资源并将运行完毕,从而可将分配给它的资源归还给系统,使另一个进程也能顺利执行完成,以这种方式分配资源不会发生死锁;若系统将资源分配给其中一个进程1个,另一个进程2个,在此情况下,每个进程均获得部分资源且系统中已没有空闲资源,当其中的一个进程再次申请资源时,因系统中无空闲资源而使其等待,另一个进程的情况也是如此,因此以这种方式分配资源会发生死锁。,4、考虑下列资源分配策略;对资源的申请和释放可以在任何时候进行。如果一个进程提出资源请求时得不到满足,若此时无由于等待资源而被阻塞的进程,则自己就被阻塞;若此时已有等待资源而被阻塞

7、的进程,则检查所有由于等待资源而被阻塞的进程。如果它们有申请进程所占用的资源,则将这些资源取出分配给申请进程。例如,考虑一个有3类资源的系统,系统所有可用资源为(4,2,2),进程A申请(2,2,1),可满足;进程B申请(1,0,1),可满足;若A再申请(0,0,1),则被阻塞。此时,若C请求(2,0,0),它可以分到剩余资源(1,0,0),并从A已分到的资源中获得一个资源,于是进程A的分配向量变成(1,2,1),而需求向量变成(1,0,1)。 这种分配策略会导致死锁吗?如果会,请举一个例子;如果不会,请说明产生死锁的哪一个必要条件不成立? 这种分配方式会导致某些进程的无限等待吗?为什么?,分

8、析及相关知识所谓死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。死锁是计算机系统和进程所处的一种状态。发生死锁的必要条件有以下四个:互斥条件;不剥夺条件;部分分配条件;环路条件。 解:本题所给的资源分配策略不会产生死锁。因为本题给出的分配策略规定若一进程的资源得不到满足,则检查所有由于等待资源而被阻塞的进程,如果它们有申请进程所需要的资源,则将这些资源取出分配给申请进程。从而破坏了产生死锁必要条件中的不剥夺条件,这样系统就不会产生死锁。 这种方法会导致某些进程无限期的等待。因为被阻塞进程的资源可以被剥夺,所以被阻塞进程所拥有的资源数量在其被唤醒之前只可能减少

9、。若系统中不断出现其他进程申请资源,这些进程申请的资源与被阻塞进程申请或拥有的资源类型相同且不被阻塞,则系统无法保证被阻塞进程一定能获得所需要的全部资源。例如,本题中的进程A申请(2,2,1)后再申请(0,0,1)被阻塞。此后,进程C又剥夺了进程A的一个资源,使得进程A拥有的资源变为(1,2,1),其需求向量为(1,0,1)。之后,若再创建的进程总是只申请第1和第3类资源,总是占有系统所剩下的第1和第3类资源的全部且不阻塞,那么进程A将会无限期地等待。,5、一台计算机有8台磁带机。它们由N个进程竞争使用,每个进程可能需要3台磁带机。请问N为多少时,系统没有死锁危险,并说明原因。,解:当N为1,

10、2,3时,系统没有产生死锁的危险。因为,当系统中只有1个进程时,它最多需要3台磁带机,而系统有8台磁带机,其资源数目已足够系统内的1个进程使用,因此绝不可能发生死锁;当系统中有2个进程时,最多需要6台磁带机,而系统有8台磁带机,其资源数目也足够系统内的2个进程使用,因此也不可能发生死锁:当系统中有3个进程时,在最坏情况下,每个进程都需要3个这样的资源,且假定每个进程都已申请到了2个资源,那么系统中还剩下2个可用资源,无论系统为了满足哪个进程的资源申请而将资源分配给该进程,都会因为该进程已获得了它所需要的全部资源而确保它运行完毕,从而可将它占有的3个资源归还给系统,这就保证了其余进程能顺利运行完毕。由此可知,当N为1,2,3时,该系统不会由于对这种资源的竞争而产生死锁。,6、一个操作系统有N个进程,竞争使用M个同类资源,申请方式是逐个进行的,一旦某进程获得它所需要的全部资源,则立即执行并归还所有资源。每个进程最多使用k个资源。若仅考虑这类资源,该系统无可能产生死锁的条件是什么?,解: 当满足 M=(k-1)N+1,系统无可能产生死锁。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号