Linux--死锁产生条件及避免死锁算法
2017-03-31 16:33
761 查看
一.什么是死锁?
所谓死锁是指在多道程序系统中,一组进程中的每一个进程均无限期的等待被该组进程中的另一个进程所占有且永远不会释放的资源,这种现象称系统处于死锁状态。
二.死锁产生的原因?
1.竞争资源,系统产生的资源有限不能满足每个进程的需求。
2.多道程序运行时,进程推进顺序不合理。
三.形成死锁四个必要条件?
1.互斥使用资源
2.请求和保持资源
3.不可抢夺资源
4.循环等待资源
四.解决死锁问题的方法?
解决思索问题一般有三种方法。
1. 死锁预防。
预先确定一些资源分配策略,进程按规定申请资源,系统按预定的策略进行分配,这些分配策略均能使产生思索的四个必要条件中的一个条件不成立,从而使系统不会发生死锁。
2. 死锁避免。
当进程提出资源申请时系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。一个死锁避免常用的算法是银行家算法。
银行家算法:见下
3. 死锁检测和解除。
允许系统中发生死锁现象,及对资源的申请和分配不加任何限制,只要有剩余的资源就把资源分配给申请进程,因此,就可能出现死锁。
银行家算法:
首先需要定义状态和安全状态的概念。系统的状态是当前给进程分配的资源情况。因此,状态包含两个向量Resource(系统中每种资源的总量)和Available(未分配给进程的每种资源的总量)及两个矩阵Claim(表示进程对资源的需求)和Allocation(表示当前分配给进程的资源)。安全状态是指至少有一个资源分配序列不会导致死锁。当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态。如果是,同意这个请求;如果不是,阻塞该进程知道同意该请求后系统状态仍然是安全的。
blog:http://blog.csdn.net/speedme/article/details/17621471
所谓死锁是指在多道程序系统中,一组进程中的每一个进程均无限期的等待被该组进程中的另一个进程所占有且永远不会释放的资源,这种现象称系统处于死锁状态。
二.死锁产生的原因?
1.竞争资源,系统产生的资源有限不能满足每个进程的需求。
2.多道程序运行时,进程推进顺序不合理。
三.形成死锁四个必要条件?
1.互斥使用资源
2.请求和保持资源
3.不可抢夺资源
4.循环等待资源
四.解决死锁问题的方法?
解决思索问题一般有三种方法。
1. 死锁预防。
预先确定一些资源分配策略,进程按规定申请资源,系统按预定的策略进行分配,这些分配策略均能使产生思索的四个必要条件中的一个条件不成立,从而使系统不会发生死锁。
2. 死锁避免。
当进程提出资源申请时系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。一个死锁避免常用的算法是银行家算法。
银行家算法:见下
3. 死锁检测和解除。
允许系统中发生死锁现象,及对资源的申请和分配不加任何限制,只要有剩余的资源就把资源分配给申请进程,因此,就可能出现死锁。
银行家算法:
首先需要定义状态和安全状态的概念。系统的状态是当前给进程分配的资源情况。因此,状态包含两个向量Resource(系统中每种资源的总量)和Available(未分配给进程的每种资源的总量)及两个矩阵Claim(表示进程对资源的需求)和Allocation(表示当前分配给进程的资源)。安全状态是指至少有一个资源分配序列不会导致死锁。当进程请求一组资源时,假设同意该请求,从而改变了系统的状态,然后确定其结果是否还处于安全状态。如果是,同意这个请求;如果不是,阻塞该进程知道同意该请求后系统状态仍然是安全的。
blog:http://blog.csdn.net/speedme/article/details/17621471
相关文章推荐
- 【Linux】关于死锁(基本概念,产生的场景,产生的条件,避免死锁的算法及原理)
- Linux下的死锁及产生条件
- Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
- 死锁产生的原因及条件、如何避免死锁
- 《并发编程》--22.死锁产生的条件和动静态避免死锁
- Linux:死锁的产生的场景&如何避免死锁&死锁产生的必要条件
- 死锁&死锁的产生条件&死锁的避免
- 死锁的理解---产生条件、避免方法、死锁解除
- 死锁产生的原因、条件及死锁的避免和预防
- 死锁产生的条件与避免方法
- 什么是死锁?产生的条件?如何避免?
- Linux之死锁产生条件&解决方法
- 死锁的产生和避免
- linux中避免竞争条件的途径
- (转载)Linux僵死进程的产生与避免
- Linux环境下僵死进程的产生及其避免
- 死锁产生的条件+排除死锁的方法
- 避免linux系统调用fork后产生僵死进程
- 死锁的原因、条件和避免死锁的方法
- Linux僵尸进程产生及如何避免