- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章进程管理7
复习 什么是进程通信? 进程间通信根据内容可以划分为哪两种? 在单机系统中,进程间通信可分为几种形式? 什么是进程? 程序与进程的区别? 进程的3个状态是什么?转换关系如何? 第三章 进程管理 死锁问题 死锁 死锁(deadlock):各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成所有进程都想得到资源而又都得不到资源,多并发进程不能继续向前推进的状态 一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁 死锁 例1:设一座小桥每次只允许一辆车通过,若桥两边同时至少有两辆车相向而行,则出现“死锁” 死锁 例2: 死锁 起因:并发进程的资源竞争 根本原因:系统提供的资源个数少于并发进程所要求的该类资源数 产生死锁的必要条件 互斥条件:任一时刻只允许一个进程使用资源,即并发进程所获得的资源不能同时被两个以上的进程使用或操作 非剥夺条件:进程已经占用的资源,在未使用完毕之前,不会被其他进程强制剥夺,而只能由自己释放 部分分配:进程申请它所需要的一部分资源,在等待时继续占用已分配到的资源 环路条件:存在一种进程循环链,链中的每一个进程已获得的资源同时被下一个进程所请求 产生死锁的必要条件 注意:以上四个条件是必要条件而不是充分条件。 例:死锁发生则必有循环等待,但有循环等待未必产生死锁 死锁的排除方法 预防:采用某种策略限制并发进程对资源的请求 避免:在分配资源的过程中小心地避免死锁的最终发生 检测和恢复:系统设专门机构能够检测到死锁发生的位置和原因,并通过外力破坏条件 死锁的排除方法——预防 只要时4个必要条件中的某一个 不满足,则死锁就可以排除 若A=B,则B=A,其中A代表死锁,B代表必要条件 死锁的排除方法——预防 1)打破互斥条件:允许资源都能共享使用。 缺点:有些资源不允许同时访问,例如打印机 死锁的排除方法——预防 2)打破不剥夺条件:当某进程申请资源时,有则分配,无则将该进程占有的资源全部释放 缺点:剥夺资源无法保证进程正确执行 死锁的排除方法——预防 3)打破部分分配条件:预先分配进程所需的全部资源 缺点:通常一个进程执行之前不可能提出它所需要的全部资源;只有在所有资源都得到满足之后才开始执行;生存期间一直占用不经常用的资源;降低并发性 死锁的排除方法——预防 4)打破环路条件:采用资源顺序分配法,将资源编排序。申请资源时,先申请级别低的,再申请级别高的;释放资源时,先释放级别高的,再释放级别低的 缺点:限制了进程对资源的请求;对资源分类编序耗去一定系统开销 死锁的排除方法——预防 总结 采用静态预防的方式来解决死锁问题牺 牲了资源的利用率,而资源利用率的降低 直接导致并发度的降低。 死锁的排除方法——避免 最著名的死锁避免算法时 Dijkstra提出的银行家算法 银行家总是希望: 使用最多的项目同时开工,以获取最大的回报。 保证至少有一个项目能完成,避免所有项目都在进行之中而手中却无钱周转(即进入死锁)。 死锁的排除方法——避免 银行家算法: 假定顾客分成若干次进行借款,并再第一次借款时能说明他的最大借款额 银行家对当前顾客的借款操作进行判断,以确定其安全性(能否支持顾客借款,直到全部归还) 注意:不安全状态不一定导致死锁 死锁的排除方法——避免 银行家算法:对进程发出的每一个申请命令加以动态检查,若发现分配资源后系统进入不安全状态则不予分配;若发现分配资源后系统仍处于安全状态则分配 优点:提高资源利用率 缺点:增加系统开销 死锁的排除方法——避免 例3:一个系统具有150个存储单元,在T时刻按下表分配给3个进程 进程 最大需求 目前分配 P1 70 25 P2 60 40 P3 60 45 对下列请求应用银行家算法分别分析判断是否安全? 1)P4到达,最大需求60,当前请求分配25 2)P4到达,最大需求50,当前请求分配35 如果安全,请给出一个可能的安全序列,否则说明原因 死锁的排除方法——避免 解:算出系统剩余资源数为150-25-40-45=40 算出各个进程的剩余需求 进程 最大需求 目前分配 剩余需求 P1 70 25 45 P2 60 40 20 P3 60
文档评论(0)