死锁相关知识学习

编程入门 行业动态 更新时间:2024-10-27 06:30:53

<a href=https://www.elefans.com/category/jswz/34/1769948.html style=死锁相关知识学习"/>

死锁相关知识学习

闭环是死锁的必要条件
所有线程都等待
如果图中不包含循环=》没有死锁
如果图中包括循环==》
如果每个资源类只有一个实例,那么死锁。
如果每个资源类有几个实例,那么可能死锁。

如果以下四个条件同时成立,则可能发生死锁:
1.互斥:在一个时间只能有一个进程使用资源
2.持有并等待:进程保持至少一个资源正在等待获取其他进程持有的额外资源
3. 无抢占:一个资源只能被进程资源释放,进程已经完成了它的任务之后
4. 循环等待:存在等待进程集合{P0,P1,…PN},P0正在等待P1所占用的资源,P1正在等待P2占用的资源,…PN-1在等待PN所占用资源,PN正在等待P0所占用的资源。

死锁预防:让死锁不会出现,
死锁避免
限制申请方式
互斥-共享资源不是必须的,必须占用非共享资源。
占用并等待-必须保证当-个进程请求的资源,它不持有任何其他资源。
➢需要进程请求并分配其所有资源,它开始执行之前或允许进程请求资源仅当进程没有资源。
➢资源利用率低;可能发生饥饿。
◆无抢占-
➢如果进程占有某些资源,并请求其它不能被立即分配的资源,则释放当前正占有的资源
➢被抢占资源添加到资源列表中
➢只有当它能够获得旧的资源以及它请求新的资源,进程可以得到执行
◆循环等待-对所有 资源类型进行排序,并要求每个进程按照资源的顺序进行申请。

需要系统具有-些额外的先验信息提供。
◆最简单和最有效的模 式是要求每个进程声明它可能需要的每个类型资源的最大数目。
◆资源的分配状态是 通过限定提供与分配的资源数量,和进程的最大需求。
◆死锁避免算法动态检查的资源分配状态,以确保永远不会有-个环形等待状态。.

如果系统处于安全状态==>无死锁。
◆如果系统处于不安全状态=>可能死锁。
避免死锁:确保系统永远不会进入不安全状态。

银行家算法(Banker’s Algorithm)是-一个死锁避免的著名算法,是由艾茲格●迪杰斯特拉在1965年为T.H.E系统设计的–种避免死锁产生的算法。
它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。
背景
在银行系统中,客户完成项目需要申请贷款的数量是有限的,每个客户在第-次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求并完成项目时,客户应及时归还。
银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。
这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要请资源的进程。

Banker’s Algori thm前提条件
◆多个实例。
◆每个进程都必须能最大限度地利用资源。
◆当一个进程请求一个资源,就不得不等待。
◆当一个进程获得所有的资源就必须在-段有限的时间释放它们。
基于上述前提条件,银行家算法通过尝试寻找允许每个进程获得的最大资源并结束(把资源返还给系统)的进程请求的一一个理想执行时序,来决定-个状态是否是安全的。
不存在这满足要求的执行时序的状态都是不安全的。

终止所有的死锁进程

在一个时间内终止一个进程直到死锁消除
终止进程的顺序应该是
➢进程的优先级
➢进程运行了多久以及需要多少时间才能完成
➢进程占用的资源
➢进程完成需要的资源
➢多少进程需要被终止
➢进程是交互还是批处理

更多推荐

死锁相关知识学习

本文发布于:2024-02-17 17:28:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1694843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:死锁   相关知识

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!