第三章进程,线程和并行程序-杨全胜.pptVIP

第三章进程,线程和并行程序-杨全胜.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章进程,线程和并行程序-杨全胜

* 死锁、活锁和饿死 2007-09-20 10:28 《并行计算机互连网络》中死锁,活锁与饿死 死锁:一组报文将永远被阻塞,每个报文总在请求其他报文占用的资源,而自己又占用着其他报文所请求的资源。 活锁:在有些情况下,某些报文即使没有被永久阻塞,它们也不能到达相应的目的节点,这时是因为报文到达目的节点的所请求的通道被其他报文占用,报文只能围绕着目的节点却永远不能到达目的节点,这种情况为活锁。只有允许报文沿非最短路径发送时才会出现这种情况。例如一个死锁永久阻塞了一些报文,而这些报文恰好占用了其他报文到达目的节点需要的缓冲器,于是这些报文无法到达目的节点,只能在目的节点周围不断的绕道路由,从而产生活锁。这也说明了死锁、活锁和饿死是相互影响的,一种情况可能会导致另一种情况的发生。 饿死:如果网络流量紧张,某个报文由于所请求的资源总是分配给其他请求同一资源的报文,该报文也会被永久性阻塞。这种情况为饿死。通常是由于仲裁冲突时使用不合理的资源分配策略所致。 操作系统中:死锁定义:一组进程中的每一个进程,均无限期地等待此组进程中某个其他进程占有的,因而永远无法得到的资源,这种现象称为进程死锁。结论:参与死锁的进程至少有二个 每个参与死锁的进程均等待资源 参与死锁的进程中至少有两个进程占有资源; 死锁进程是系统中当前进程集合的一个子集。 * * 现有12个同类资源供3个进程共享,进程P1总管需要9个资源,但第一次先申请2个;进程;P2总管需要10个资源.第一次要求分配5个资源;进程P3总共需要4个资源,第一次请求2个资源.经第一次分配后,系统中还有3个资源未被分配,这时,系统处于安全状态,因为还剩余3个资源,可把其中的2个资源在分配给进程P3,系统还剩余一个资源.进程P3已经得到了所需的全部资源,能执行到结束而且归还所占的4个资源,现在系统有5个可用资源,可分配给进程P2.同样的,进程P2得到了所需的全部资源,执行结束后可归还10个资源,最后进程P1也能阿到尚需的7个资源而执行到结束,然后,归还9个资源.这样,三个进程都能在有限的时间内得到各自所需的全部资源,执行结束后系统可收回所有资源.其安全序列为P3,P2,P1. 若进程P1在P3之前提出再申请一个资源的要求,系统从剩余的资源中分配一个给进程P1后尚剩余2个资源, 虽然剩余的2个资源可满足进程P3的需求,但当进程P3得到全部资源而且执行结束后,系统最多只有4个可用资源,而进程P1和进程P2还分别需要6个资源和5个资源,显然,系统中的资源已不能满足剩下两个进程的需求了,即这两个进程已经不能在有限的时间里得到需要的全部资源,因此找不到安全序列,系统已从安全状态转到了不安全状态. 操作系统按照银行家的规定为进程分配资源,进程首先提出对资源的最大需求量,当进程在执行中每次申请资源时,系统测试该进程已占有的资源与本次申请的资源数之和是否超过了该进程对资源的最大需求量.若超过则拒绝分配资源,若没有超过,则系统在测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配.这样做,能保证在任何时刻至少有一个进程可以得到所需要的全部资源而执行结束.执行结束后归还的资源加入到系统的剩余资源中,这些资源又至少可以满足另一个进程的最大需求…..于是,可以保证系统中所有进程都能在有限的时间内得到需要的全部资源. 银行家算法是通过动态的检测系统中资源分配情况和进程对资源的需求情况来决定如何分配资源的,在能确保系统处于安全状态时才把资源分配给申请者,从而避免系统发生死锁.由于银行家算法是在系统允许期间实施的,要话费相当多的时间,该算法需要m*n*n操作.银行家算法要求每类资源的数量是固定不变的,而且必须事先知道资源的最大需求量,这难以做到,不安全状态并非一定是死锁状态,如果一个进程申请的资源当前是可用的,但该进程必须等待,这样资源利用率会下降. ? * 在一个动态系统中,资源请求与释放是经常性发生的进程行为.对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。 资源分配策略可能是公平的(fair),能保证请求者在有限的时间内获得所需资源;资源分配策略也可能是不公平的(unfair),即不能保证等待时间上界的存在。 在后一种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待.当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿(starvation),当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死(starve to death)。 ??????????? 考虑一台打印机分配的例子,当有多个进程需要打印文件时,系统按照短文件优先的策略排序,该策略具有平均等待时间短

文档评论(0)

cynthia_h + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档