一、死锁的定义:
两个或多个进程在无限期的等待永远不会发生的条件系统处于停滞状态,这种现象称为进程死锁。
二、产生死锁的必要条件:
1:互斥使用(资源独占):一个资源每次只能给一个进程使用;
2:不可强占(不可剥夺):资源申请者不能强行的从占有者手中读取资源,资源只能有占有者资源释放;
3:请求和保持:一个进程在申请资源的同时保持对原有资源的占有
4:循环等待:存在一个等待队列{p1,p2,p3,......pn},其中p1等待p2占有的资源,p2等待p3占有的资源,.......pn等待p1的资源,形成一个进程等待的环路。
三、解决死锁的三种途径:
(1):死锁的预防——解决死锁的静态方法:
1。破坏“不可剥夺条件”
2。破坏”不可剥夺条件“
3。破坏”循环等待条件“
(2):死锁的避免——解决死锁的动态方法:
死锁的避免关键是区分安全状态与不安全状态。(如果存在一个由系统中所有进程构成的安全序列p1,p2,p3,......pn,则系统处于安全状态。)安全状态下一定是没有死锁发生的。相反,不安全状态就意味着不存在一个安全序列,但是不安全状态不一定导致死锁。
避免死锁的典型算法:银行家算法(又被称为“资源分配拒绝”法)。
算法的基本思路:
银行家有一笔周转资金为保证资金的安全,银行家规定:
原文地址:http://www.cnblogs.com/BasilLee/p/3773763.html