OS-05 死锁和饿死.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OS-05 死锁和饿死

/* program diningphilosophers */ semaphore chopstick[5] = {1} ; semaphore room = {4} ; int i; void philosopher(int i) { while(true) { think() ; p (room) ; p (chopstick[i] ) ; p (chopstick[(i+1) mod 5] ) ; eat() ; v (chopstick[(i+1) mod 5] ) ; v (chopstick[i] ) ; v (room) ; } } woid main() { parbegin (philosopher(0), philosopher(1), philosopher(2),philosopher(3) , philosopher(4) ) ; } 哲学家就餐问题 类似资源定序的解决方案: 规定哲学家取筷子的顺序:单号哲学家先取右边的筷子再取左边的筷子;双号哲学家先去左边的筷子再取右边的筷子。 在取第一根筷子时总有哲学家没拿到筷子,因此必定能保证有一个哲学家能取到另一边的筷子,吃完面后,将筷子给其他哲学家用。 § 4.5死锁 ⑤ ④ ② ③ ① 过河问题-自学 水 流 West East 1-2-3-4-6-5 5-6-7-8-2-1 要求: (1)无死锁; (2)无饿死; (3)并行度高。 W?E: P(S); P(s1); 走到1; P(s2); 走到2; V(s1); P(s3); 走到3; V(s2); P(s4); 走到4; E?W: P(S); P(s5); 走到5; P(s6); 走到6; V(s5); P(s7); 走到7; V(s6); P(s8); 走到8; V(s3); P(s5); P(s6); 走到6; V(s4); 走到5; V(s6); 走到E; V(s5); V(S); V(s7); P(s1); P(s2); 走到2; V(s8); 走到1; V(s2); 走到W; V(s1); V(S); Var S, s1,s2,s3,s4,s5,s6,s7,s8:semaphore; (5,1,1,1,1,1,1,1,1) 习 题 例1 假设三个进程共享相同类型的四个资源,每个进程一次只能申请或释放一个资源,每个进程至多需要两个资源,证明该系统不会发生死锁。 证:假定该系统死锁,那么就隐含其中的每一进程已占有一资源并正等待另一资源。由于该系统只有三个进程且有四个资源,因此,必有一进程能获得两个资源,不必等待。于是该进程不再申请资源,而且当它执行完后将归还它占有的资源。故该系统不会发生死锁. 习 题 例2 在一个实际的计算机系统中,资源可以更新和增减,进程可以创建和撤销。如果系统用Banker算法处理死锁,那么,下列改变哪些会使系统进入不安全状态。 (1) 增加Available (增添新资源) ; (2) 减少Available (资源永久性地从系统中删除) ; (3) 增大Max (对一进程而言,它可能希望更多的资源) ; (4) 减少Max (一进程决定不需要那么多资源) ; (5) 增加进程数; (6) 减少进程数。 习 题 判断题 (正确的在括号中记 ?,错误的记×) 1. 死锁就是循环等待。 ( ) 2. 不存在只涉及一个进程的死锁。( ) 3. 在一个SRAG中,若不存在环路,则表明不存在死锁。 ( ) 4. 在一个SRA中,若存在环路,则表明存在死锁。 ( ) 5. 若系统中每一资源类只有一个例示,此时系统存在任何环路,则状态是不安全的。( ) × ? ? × ? 习 题 判断题 (正确的在括号中记 ?,错误的记×) 6. 死锁避免比死锁预防对资源的限制更加严格,通过设置限制条件来破坏产生死锁的必要条件,从而消除产生死锁的任何可能性。( ) 7. 死锁是多个进程为竞争系统资源或彼此间通信而引起的一种临时性的阻塞现象。( ) × × 习 题 某系统有同类资源m个,供n个进程共享。如果每个进程最多申请x个资源 (其中1≤x≤m) 。请证明:当n(x-1)+1≤m时,系统不会发生死锁。 由于每个进程最多申请使用x个资源,在最坏的情况下,每一个进程都得到了 (x-1)个资源,并且现在均需申请最后一个资源。这时系统剩余资源数为:m-n(x-1) 。如果系统还有一个资源可以使用,就可以使这几

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档