[operating System] 死锁

1. 死锁的定义

死锁是指多个进程在竞争某一资源而陷入相互等待的僵局,若无外力作用,这些进程将无法推进

2. 死锁产出的原因

1. 对不可剥夺资源的竞争

2. 进程推进的顺序非法(相互等待资源)

3. 死锁产生的必要条件

1. 互斥:进程某一段时间拥有的资源只能由一个进程占有,其他进程请求该资源则需要等待

2. 不可剥夺:进程拥有资源只能由该进程自己释放,其他进程不能抢占资源

3. 请求和等待:当前进程拥有资源的情况下请求下一个资源,在得到下一个资源时不放弃自己已经拥有的资源

4. 循环等待:进程间存在循环等待资源链。每个进程请求的资源正是下一个进程所占有的资源

4. 避免死锁

1. 按照顺序进行加锁

2. 请求锁的同时设置一个计时器,如果计时器超时,则放弃当前请求并释放已经拥有的所有锁

3. 死锁检测:将进程已经获得的锁和正在请求的锁放在一个数据结构中,(进程-锁)。

  3.1 当发生死锁时遍历该数据结构,找到死锁进程对其进行超时重试等方法解决死锁。

  3.2 还可以对进程设置随机优先级,优先级较高者进行锁回退。释放所有锁并满足其他进程的资源需求。

猜你喜欢

转载自www.cnblogs.com/immjc/p/9109708.html