- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机操作系统原理死锁
第四章 死锁 死锁的概念 死锁的预防和避免 死锁的检测和解除 死锁的概念 死锁举例 产生死锁的原因 产生死锁的必要条件 处理死锁的基本方法 死锁举例 例1: 两个小孩在一起玩耍,一个在玩皮球,另一个玩自动步枪,如果这两个小孩都要对方手中的玩具,而又不肯先放掉自己拿着的玩具,这时就发生了僵持局面。 例2: 设系统有一台打印机和一台扫描仪,进程P1、P2并发执行,在某时刻T,进程P1和P2分别占用了打印机和扫描仪。在时刻T1(T1T),P1又要申请扫描仪,但由于扫描仪被P2占用,P1只有等待。在时刻T2(T2T),P2又申请打印机,但由于打印机被P1占用,P2只有等待。如此两进程均不能执行完成。称这种现象为死锁。 例3: 在生产者-消费者问题中将生产者进程的两个P操作颠倒时会发生死锁。 将消费者进程的两个P操作颠倒时也会发生死锁。 死锁的定义 一组进程中,两个或多个进程都无限期地等待永远不会发生的条件,我们称此系统处于死锁状态。 死锁的起因 根本原因:系统能够提供的资源个数比要求该资源的进程所需的资源个数少。 判断 1 参与死锁的所有进程都占有资源 错误:有可能有的进程在等待其他进程释放资源 2 参与死锁的所有进程均正在等待资源 错误:有可能一个占有资源 3 参与死锁的所有进程中至少有两个进程占有资源 错误 4 参与死锁的进程至少有两个 正确 关于死锁的一些结论 参与死锁的进程最少是两个 (两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃 产生死锁的必要条件 四个必要条件(重点) 互斥条件:涉及的资源是非共享的。 不剥夺条件:不能强行剥夺进程拥有的资源。 部分分配条件:进程在等待一新资源时继续占有已分配的资源。 环路条件:存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求。 处理死锁的基本方法 1、预防死锁: 通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁。 较易实现,广泛使用,但由于所施加的限制往往太严格,可能导致系统资源利用率和系统吞吐量的降低。 2、避免死锁: 不事先采取限制去破坏产生死锁的条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。 实现较难,只需要较弱的限制条件,可获得较高的资源利用率和系统吞吐量。 3、检测死锁: 事先并不采取任何限制,也不检查系统是否进入不安全区,允许死锁发生,但可通过检测机构及时检测出死锁的发生,并精确确定与死锁有关的进程和资源,然后采取适当措施,将系统中已发生的死锁清除掉 4、解除死锁: 与检测死锁相配套,用于将进程从死锁状态解脱出来。 常用的方法是撤消或挂起一些进程。以回收一些资源,再将它们分配给处于阻塞状态的进程,使之转为就绪状态。 实现难度大,但可获得较好的资源利用率和系统吞吐量。 死锁的预防和避免 死锁的预防 系统的安全状态 利用银行家算法避免死锁 死锁的预防 在系统设计时确定资源分配算法,保证不发生死锁 具体的做法是破坏产生死锁的四个必要条件之一 破坏部分分配条件 系统要求所有进程要一次性地申请在整个运行过程中所需的全部资源。若系统有足够资源则完全分配。 优点:简单、易于实现且安全。 缺点: 一个用户在作业运行之前可能提不出他的作业将要使用的全部设备。 用户作业必须等待,直到所有资源满足才能运行。实际上某些资源可能要到运行后期才会用到。 一个作业运行期间,对某些设备的使用时间很短,甚至不会用到。如:当用户作业出错时才需要打印机输出错误信息,但采用静态分配法必须把打印机分配给该作业,并长期占用。采用该方法对系统来说是非常浪费的。 破坏不可剥夺条件 一个已拥有资源的进程,若它再提出新资源要求而不能立即得到满足时,它必须释放已经拥有的所有资源。以后需要时再重新申请。 实现复杂、要付出很大的代价。 破坏环路条件 系统中的所有资源都有一个确定的唯一号码,所有分配请求必须以序号上升的次序进行。 例如:系统中有下列设备:输入机(1),打印机(2),穿孔机(3),磁带机(4),磁盘(5)。有一进程要先后使用输入机、磁盘、打印机,则它申请设备时要按输入机、打印机、磁盘的顺序申请。 优点:同前两法相比,其资源利用率和系统吞吐量有较明显的改善。 缺点:进程实际需要资源的顺序不一定与资源的编号一致,因此仍会造成资源浪费。 系统的安全状态 死锁避免定义 在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资
文档评论(0)