:进程管理 -- 死锁的概念死锁饥饿死循环的区别死锁的处理策略(预防 / 避免死锁 / 死锁的检测和解除)SPOOLing技术银行家算法

Posted CodeJiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:进程管理 -- 死锁的概念死锁饥饿死循环的区别死锁的处理策略(预防 / 避免死锁 / 死锁的检测和解除)SPOOLing技术银行家算法相关的知识,希望对你有一定的参考价值。

1. 死锁

本节知识架构图:


1.1 死锁的定义

在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统的处理能力。然而,多个进程的并发执行也带来了新的问题——死锁。所谓死锁,是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。


1.2 死锁、饥饿、死循环的区别


1.3 死锁产生的原因


总之,对不可剥夺资源的不合理分配,可能导致死锁。


1.4 死锁产生的四个必要条件


1.5 死锁的处理策略


1.6 小结


2. 死锁的处理策略


2.1 预防死锁

防止死锁的发生只需破坏死锁产生的4个必要条件之一即可。


2.1.1 破坏互斥条件(ex: SPOOLing技术)


2.1.2 破坏不剥夺条件


2.1.3 破坏请求和保持条件


2.1.4 破坏循环等待条件


2.2 避免死锁

避免死锁同样属于事先预防策略,但并不是事先采取某种限制措施破坏死锁的必要条件,而是在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。这种方法所施加的限制条件较弱,可以获得较好的系统性能。


2.2.1 系统的安全序列(安全状态)

处于安全状态,一定不会发生死锁。但是发生了死锁,一定是处于不安全的状态。


2.2.2 银行家算法:最著名的死锁避免算法


银行家算法步骤:


2.3 死锁的检测和解除

前面介绍的死锁预防和避免算法,都是在为进程分配资源时施加限制条件或进行检测,若系统为进程分配资源时不采取任何措施,则应该提供死锁检测和解除的手段。


2.3.1 资源分配图


2.3.2 死锁的检测、死锁定理



死锁定理:


2.3.3 死锁解除


2.3.4 小结



以上是关于:进程管理 -- 死锁的概念死锁饥饿死循环的区别死锁的处理策略(预防 / 避免死锁 / 死锁的检测和解除)SPOOLing技术银行家算法的主要内容,如果未能解决你的问题,请参考以下文章

Linux同步机制 - 基本概念(死锁,活锁,饿死,优先级反转,护航现象)

死锁,活锁,饿死的区别

Linux内核调试技术——进程上下文R状态死锁监测

王道操作系统OS进程管理

面向校招操作系统 —— 死锁

面向校招操作系统 —— 死锁