当前位置: 首页 > article >正文

操作系统之死锁

一、死锁的概念

死锁是指在一个进程集合中的每个进程都在等待只能由该集合中的其它进程才能引起的事件,而无限期陷入僵持的局面。若无外力作用,这些进程都将无法向前推进。

二、产生死锁的原因

资源有限:当系统中多个进程共享资源时,如打印机、磁带机等,其数目不足以满足诸进程的需要,会引起进程对资源的竞争而产生死锁。通常是对不可剥夺资源的竞争才会引发死锁,可剥夺资源的竞争是不会引起死锁的。

并发进程间的推进顺序不当:进程在运行过程中,请求和释放资源的顺序不当,也会产生进程死锁。

三、产生死锁的必要条件

互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程的使用或操作的,进程对它所需要的资源进行排他性控制。

不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放。

部分分配(请求和保持条件):进程每次申请它所需要的一部分资源时,在等待新资源的同时继续占用已分配到的资源。

环路条件:存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程请求。

四、死锁的处理方法

预防死锁:破坏死锁的四个必要条件之一,从而预防死锁的发生。但这种方法可能会降低系统的并发性。

避免死锁:允许进程动态申请资源,但系统在资源分配之前会先计算资源分配的安全性。若分配不会导致系统从安全状态向不安全状态转换,则将资源分配给进程;反之,则不分配资源,进程必须阻塞等待。

检测死锁并恢复:系统定时运行一个“死锁检测”程序,如果检测到系统发生了死锁,再采取措施解除它。死锁检测算法可以提供程序最大的并发性。

鸵鸟策略:像鸵鸟一样对死锁视而不见,即不采取任何措施来预防、避免或检测死锁。这种策略在大多数操作系统中用于终端用户进程,当系统仅用于浏览和其他正常进程时,这种方法是适用的。但如果一个进程必须始终运行,并且发生死锁,则重新启动系统是推荐的最佳解决方案。


http://www.kler.cn/a/459133.html

相关文章:

  • HarmonyOS NEXT 实战之元服务:静态案例效果---我的热门应用服务
  • 人工智能在肿瘤亚型分类、药物筛选以及模型可解释性方面的最新进展|顶刊速递·24-12-30
  • 【RISC-V CPU debug 专栏 4 -- RV CSR寄存器介绍】
  • 基于STM32的智能家庭能源管理系统设计
  • SpringBoot(Ⅱ-2)——,SpringBoot版本控制,自动装配原理补充(源码),自动导包原理补充(源码),run方法
  • Node.js 记账本项目总结
  • PyTorch快速入门教程【小土堆】之全连接层
  • 24个未授权访问漏洞详情
  • 使用C++实现一个高效的线程池
  • 【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现
  • 机械臂的各种标定
  • 各类病例报告
  • 一个响应式的系统 具有黑白俩个主题
  • 红帽RHCA和华为HCIE,到底应该怎么选?
  • 培训机构Day19
  • 气候研究中常用的一些指数ENSO/AO/NAO/DA/AMO
  • 【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor
  • 复合机器人CNC铝块自动化上下料技术替代人工完成作业
  • 电脑开机后进不了系统如何修复?原因及解决步骤介绍
  • 利用Abel_Cain软件实现ARP欺骗