# 进程/线程相关

## 死锁Dead-lock

### 定义

多个进程占有彼此想要获取的资源，导致进程无法继续执行下去，一直等待彼此释放资源的状态。

### 死锁的条件

必要条件 1. **互斥**（资源的互斥性，一次只有一个进程可以使用一个资源） 2. **占有且等待**（字面意思） 3. **不可抢占**（不能破坏条件2）

满足前3个必要条件再加上**循环等待**一起构成了充分必要条件。

### 死锁的预防

采用某种策略消除条件1\~4中的某个条件的出现。 1. 互斥：不能被禁止。 2. 占有且等待：要求一次性请求所有需要的资源，并阻塞该进程直到所有请求都同时满足。 3. 不可抢占：占有某些资源的进程进一步申请资源被拒绝时，则释放到其最初占有的资源；其次是允许抢占。 4. 循环等待：通过定义资源类型的线性顺序来预防。若一个进程已经分配了R类型的资源，则其接下来请求的资源只能是那些排在R类型之后的资源。
