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

2.4.1死锁的概念

死锁、饥饿、死循环区别

死锁和饥饿是操作系统需要考虑的,死循环一般是程序员写的代码逻辑有问题,需要被管理者程序员考虑,三者都是一种无法向前推进的现象

死锁是因为进程之间互相得不到对方的资源而导致的,进程最少有2个,即发生死锁的进程一定处于阻塞态,饥饿可能是只有一个进程发生饥饿现象,发生饥饿的进程可能处于就绪态或阻塞态,死循环可能一直上处理机运行,即可能是运行态

死锁产生的必要条件

1.资源是互斥的:这个资源必须同一时刻只能被一个进程使用

2.不剥夺:别的进程已经拿上的资源,你不能直接抢

3.请求和保持:自己已经拿上的不放,然后又去请求别的资源,别人也不能用已经拿上的

4.循环等待:我等你你等它又等我的环路(发生死锁一定有循环等待,但是有循环等待不代表一定发生死锁,比如下图中的白爷爷,1、2、3、4、5号和白爷爷之间有循环等待,而3号等的4号的资源和白爷爷拿的资源是一个可替代同类资源,则如果现在白爷爷释放了手中的资源,3号拿到了,那循环等待将被打破,故当是循环等待时+资源无可替代资源即唯一时,必定会发生死锁)

 

什么时候会发生死锁

当不可剥夺的资源发生不合理分配时,可能会导致死锁

1.对不可资源资源的竞争可能引起死锁

2.进程请求和释放资源的顺序不当可能导致死锁

3.信号量的使用不当可能也会造成死锁

 

死锁的处理策略

 

知识汇总

 

相关文章:

  • 计算机网络通信技术与协议(七)———关于ACL的详细解释
  • 迪菲-赫尔曼密钥交换算法深度解析
  • 重构研发效能:项目管理引领软件工厂迈向智能化
  • 第二届帕鲁杯screenshot
  • 【Linux】第二十一章 管理存储堆栈
  • 三视图dxf 生成brep 3d图重建 pythonocc solid
  • 适合初学者的机器学习路线图
  • SpringBootDay1|面试题
  • NC65联查单据问题总结
  • 电子电路:什么是射极电阻?
  • 汉语词汇的神奇拼图:关联性的魅力
  • C++数据结构——红黑树
  • 25-CAN总线
  • Python60日基础学习打卡D31
  • 集星獭 | 重塑集成体验:新版编排重构仿真电商订单数据入库
  • 火车车号识别软件如何提升列车调度效率?
  • Redis--Redis命令详解
  • 自建主机NAS
  • 腾讯一面+二面总结
  • beanstalk一直被重新保留(reserved 状态)消息删除
  • 阳朔兴坪镇:在建乾元桥“垮塌”是谣言,系降雨导致工程挡土墙倾斜
  • 海南省检察院专委李思阳被带走,去年曾遭人举报违规插手案件
  • 北美票房|华纳又赢了,《死神来了6》开画远超预期
  • 浙江推动人工智能终端消费:家居机器人纳入以旧换新补贴范围
  • 媒体评教师拎起学生威胁要扔下三楼:师风师德不能“悬空”
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了