---
url: https://sugarat.top/computerBase/os/deadlock.md
---

# 死锁

## 概念

死锁是指两个或两个以上的进程在执行过程中，由于竞争资源而造成阻塞的现象，若无外力作用，它们都将无法继续执行

## 产生原因

* 竞争资源引起进程死锁
* 可剥夺和非剥夺资源
* 竞争非剥夺资源
* 竞争临时性资源
* 进程推进顺序不当

## 产生条件

* 互斥条件：涉及的资源是非共享的
  * 涉及的资源是非共享的,一段时间内某资源只由一个进程占用,如果此时还有其它进程请求资源，则请求者只能等待，直至占有资源的进程用毕释放
* 不剥夺条件：不能强行剥夺进程拥有的资源
  * 进程已获得的资源，在未使用完之前，不能被剥夺，只能在使用完时由自己释放
* 请求和保持条件：进程在等待一新资源时继续占有已分配的资源
  * 指进程已经保持至少一个资源，但又提出了新的资源请求，而该资源已被其它进程占有，此时请求进程阻塞，但又对自己已获得的其它资源保持不放
* 环路等待条件：存在一种进程的循环链，链中的每一个进程已获得的资源同时被链中的下一个进程所请求
  * 在发生死锁时，必然存在一个进程——资源的环形链

## 解决办法

只要打破四个必要条件之一就能有效预防死锁的发生
