操作系统------死锁
发布日期:2021-11-04 22:04:34 浏览次数:8 分类:技术文章

本文共 1040 字,大约阅读时间需要 3 分钟。

定义:
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
产生条件:
死锁发生必须具备一下四个条件:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
怎么避免死锁:
在系统中已经出现死锁后,应该及时检测到死锁的发生,并采取适当的措施来解除死锁。目前处理死锁的方法可归结为以下四种:
(1) 预防死锁。
这是一种较简单和直观的事先预防的方法。方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一种较易实现的方法,已被广泛使用。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。
(2)避免死锁。
该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
(3)检测死锁。
这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,此方法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。
(4)解除死锁。 

这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施,有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。

                                  

转载地址:https://blog.csdn.net/xiaochen87654321/article/details/77645477 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:操作系统-----虚拟内存管理的好处
下一篇:操作系统总结---------进程与线程

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月16日 18时05分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

异常(2)-- UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/项目包名 2019-04-27
Android软键盘(1)---输入法界面管理(打开/关闭/状态获取) 2019-04-27
Android动态设置view的高度宽度 2019-04-27
JQuery(4)---使用mousedown和mouseup简单判断鼠标按下与释放位置是否相同 2019-04-27
css3 属性 text-overflow 实现截取多余文字内容 以省略号来代替多余内容 2019-04-27
vue 事件总线EventBus的概念、使用以及注意点 2019-04-27
JavaScript 用七种方式教你判断一个变量是否为数组类型 2019-04-27
细讲前端设置cookie, 储存用户登录信息 2019-04-27
Web前端安全策略之CSRF的攻击与防御 2019-04-27
斯坦福CS236-深度生成模型2019-全套课程资料分享 2019-04-27
知识图谱(KG)存储、可视化、公开数据集、图计算、图编程工具分享 2019-04-27
伯克利-《神经技术导论2020(带字幕)》 2019-04-27
机器学习经典书籍-《贝叶斯推理与机器学习》 2019-04-27
欧洲计算机视觉国际会议ECCR20最新论文整理分享 2019-04-27
20年6月最新-《深度神经网络的高效处理技术综述》 2019-04-27
BiliBili 100+国际名校免费公开课整理分享 2019-04-27
清华大学计算机学科推荐学术会议和期刊列表 2019-04-27
【组队学习】【24期】Docker教程 2019-04-27
Datawhale组队学习周报(第010周) 2019-04-27
【直播】杨毅远:集成学习答疑直播之六 -- 幸福感预测案例实战 2019-04-27