- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第04章节死锁和其对策
第四章 死锁及其对策 第四章 死锁及其对策 4.1 死锁的基本概念 4.2 死锁原理及对策 4.3 鸵鸟算法 4.4 死锁的检测和恢复 4.5 死锁预防 4.6 死锁避免 4.1 死锁的基本概念 在计算机系统中,产生死锁的直接原因是多个进程的并发执行。多个进程的并发执行改善了系统资源的利用率,提高了系统的处理能力,但由于每个系统资源都由多个进程共享,有些资源本身又要求互斥的使用,所以如果处理不当就可能产生死锁。 4.1.1 资源 依资源的性质:可剥夺和非可剥夺资源 可剥夺资源:处理机和内存 非可剥夺资源:磁带和打印机 依资源的使用方式:共享资源和独享资源 共享资源:处理机、内存、磁盘等 独享资源:磁带机、读卡机和打印机等 依资源的使用期限:永久资源和临时资源 永久资源:硬资源和可重入的纯代码过程 临时资源:进程同步和通信过程中出现的消息、信号的数据。 在进行资源分配时,一定要先认清相应资源的特性,以便选择合适的分配策略,在竞争非剥夺资源和临时性资源时都可能产生死锁。在并发进程的活动中,若选择一种合理的推进顺序就可以避免死锁的发生。 4.1.2 死锁的定义 死锁是计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争系统资源而出现的一种互相等待的现象。 此时,每个进程都“占用”一些其他进程正在等待的资源,而用,每个进程都 没有完全得到所有的资源,结果所有这些进程互相等待,谁也无法继续,我们称这些进程是死锁的,相应的计算机系统处于死锁状态。 4.1.3 产生死锁的原因 系统竞争临界资源。当系统所拥有的某种临界资源个数比各个进程要求该资源的总数要少时,则有可能引起多个并发进程对资源的竞争而产生死锁。 进程推进顺序不当,进程运行过程中,由于请示和释放资源的顺序不当,而产生死锁。 1、竞争临界资源引起的死锁 竞争非剥夺性资源引起的死锁 竞争临时性资源引起的死锁 竞争同一类资源引起的死锁 2、进程推进顺序不当引起的死锁 4.2 死锁原理及对策 4.2.1 死锁原理及产生死锁的必要条件 死锁是与时间有关的一种现象,它涉及到多进程的并发,并发进程对一些特殊资源的共享,以及具体进行并发进程资源调度的时机等。综上所述,产生死锁的四个必要条件如下: 互斥条件、不可剥夺条件、部分分配条件、环路等待条件 4.2.2 死锁的描述 1、资源分配图 2、死锁举例 4.2.3 解决死锁的方法 1.预防死锁:为了使系统不发生死锁现象,在系统设计初期即选择一些限制条件,来破坏产生死锁的四个必要条件之一或其中几个。这样,系统中就不会出现死锁现象。 2.避免死锁:一方面预防死锁的方法会降低系统资源利用率;另一方面死锁的必要条件在存在未必就一定会使系统发生死锁。因此为提高系统资源的利用率,避免死锁并不严格限制死锁必要条件的存在,而是在资源的动态分配过程中,使用某种方法去防止系统进入不安全状态,从而避免死锁的最终出现。 3.检测和解除死锁:在一些相对简单的系统中,为节省预防和避免死锁而增加的系统开销,又因为死锁产生的概率总是比较小的,所以系统中允许出现死锁状态。在这种系统中,专门设置了一个检测机构,可以随时检测出死锁的发生,并能确定与死锁有关的进程和资源,然后采用适当的方法解除系统中的死锁状态。常用的方法有: 一是强制性的撤销一些死锁进程,并剥夺它们的资源给其余进程; 一是使用一个有效的挂起和解除挂起机构来挂起一些进程,以便从被挂起的进程中剥夺一些资源用来解除死锁。 4.4 死锁的检测与恢复 检测系统中是否存在死锁产生的必要条件:环路等待 4.4.1 利用资源分配图描述系统状态 1、死锁状态的推断思想 封锁进程:是指某个进程由于请求了超过系统中现有的未分配资源数目的资源,而被系统封锁的进程。 非封锁进程:没有被系统封锁的进程 2、资源分配图的化简 假设某个资源分配图中存在一个进程Pi,此刻 Pi 是非封锁进程,那么可对此资源分配图作以下化简:当 Pi 有请求边时,首先将其请求边变成分配边,即满足Pi 进程的相应资源请求,而一旦Pi 进程的所有资源请求都得到满足, Pi 进程就能在有限时间内运行结束,并释放它所占用的所有资源。所以此时Pi 只有分配边,可以将所有这些分配边删去。 假如一个资源分配图可以被其上的所有进程所化简,则称该图为完全可化简的。 反之,若一个资源分配图不能被其上的任一进程化简,则称其为不可化简的。 若某个资源分配图只能被其上的一些进程所化简,则该图为非完全可化简的。 3、死锁定理:当一个资源分配图是完全可化简时,该资源分配图能被其上所有的进程所化简。也就是此时系统中存在一个进程序列,按此安全序列的顺序运行,可使每个进程都顺利完成,所以此时系
文档评论(0)