操作系统之死锁

一、死锁的概念

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

二、产生死锁的原因

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

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

三、产生死锁的必要条件

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

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

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

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

四、死锁的处理方法

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

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

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

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

相关推荐
望获linux2 天前
工业软件自主化突围:RTOS 如何打破 “协议栈 - 控制器” 生态垄断
linux·人工智能·操作系统·开源软件·嵌入式软件·工业软件
LUCIAZZZ3 天前
ElasticSearch基本概念
java·大数据·elasticsearch·搜索引擎·中间件·操作系统
望获linux3 天前
实时操作系统:航空电子系统的安全基石还是创新枷锁?
人工智能·安全·机器人·操作系统·开源软件·rtos·飞行器
LUCIAZZZ3 天前
简单介绍分布式定时任务XXL-JOB
java·spring boot·分布式·spring·操作系统·定时任务
LUCIAZZZ4 天前
Caffeine快速入门
java·后端·spring·缓存·操作系统·springboot
ssslar4 天前
MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?
操作系统·xv6·risic-v
ssslar5 天前
MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong
操作系统·risc-v·xv6
羑悻的小杀马特6 天前
【Linux篇章】Linux 进程信号1:解锁系统高效运作的 “隐藏指令”,开启性能飞跃新征程(精讲信号产生和保存)
linux·运维·服务器·学习·操作系统·进程信号
望获linux8 天前
北京亦庄机器人马拉松:人机共跑背后的技术突破与产业启示
linux·人工智能·机器人·操作系统·开源软件·rtos·具身智能
獭.獭.8 天前
Linux -- 操作系统
linux·操作系统·冯诺依曼体系