死锁
一、什么是死锁
首先死锁是在多道程序系统进程并发运行背景下产生的概念,串行是不存在死锁这个概念。所谓死锁,是指多个进程因竞争资源而造成的一种僵局(互相等待-> P 1 {P_1} P1申请 P 2 {P_2} P2所拥有的资源进入等待态, P 2 {P_2} P2又申请 P 1 {P_1} P1所拥有的资源进入等待态,然后造成了两个进程互相等待对方释放资源),而若无外力作用,这两个进程都无法向前推进。
二、死锁产生的原因
- 互斥条件
- 不剥夺条件
- 请求并保持条件
- 循环等待条件
三、死锁的处理策略
1.死锁预防
- 破坏互斥条件
- 破坏不剥夺条件
- 破坏请求并保持条件
- 破坏循环等待条件
2.死锁避免
在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。
2.1银行家算法
数据结构描述
- 可利用资源向量 A v a i l a b l e {Available} Available
- 最大需求矩阵 M a x {Max}