Linux--死锁产生条件及避免死锁算法
来源:互联网 发布:打印机本地端口已存在 编辑:程序博客网 时间:2024/05/07 01:07
一.什么是死锁?
所谓死锁是指在多道程序系统中,一组进程中的每一个进程均无限期的等待被该组进程中的另一个进程所占有且永远不会释放的资源,这种现象称系统处于死锁状态。
二.死锁产生的原因?
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下的死锁及产生条件
- 死锁&死锁的产生条件&死锁的避免
- 死锁及死锁产生原因条件
- 死锁的产生及避免
- linux--死锁(产生死锁的原因、条件和避免方法)
- 死锁及避免死锁的银行家算法
- 死锁产生的原因以及避免死锁的算法
- 死锁的产生原理及必要条件,如何避免死锁
- 死锁产生的原因及避免
- 多线程死锁的产生原因及避免
- 死锁的定义及产生死锁的四个条件
- 死锁以及死锁产生的原因及条件
- 什么是死锁及死锁产生条件和解决办法
- 死锁的产生条件及解决方法
- Linux:死锁的产生的场景&如何避免死锁&死锁产生的必要条件
- TDD 单元测试遇到问题整理
- JS 排序算法
- JAVA思想:继承的方法覆盖的作用
- Hbase的安装步骤
- Scripts to manage files
- Linux--死锁产生条件及避免死锁算法
- 隐马尔可夫模型(HMM)的MATLAB实现——前向后向算法
- JVM堆栈入门
- Invalidate和postInvalidate的区别
- linux汇编之程序结构
- SSH框架搭建资源
- matlab在科学计算中的应用1
- 修改sql工作(to_char和to_date和existss和not exists和!=)
- 深入理解linux互斥锁(mutex)