本文讲解操作系统的死锁,主要分为以下几个部分:
- 资源分配图
- 死锁特征
- 死锁处理
- 死锁预防
- 死锁避免
- 死锁检测
- 死锁恢复
- 银行家算法实现
资源分配图
资源分配图就是用圆圈和方块分别表示进程和资源,资源中的小圆点的个数表示资源数目,如下图
其中从一个进程指向一个资源的边称为等待边,也叫申请边,就是申请一个资源; 而从一个资源指向进程的边称为占有边,也叫分配边,表示这个资源分配给了某个进程,如图中: P1−>R1,R1−>P2 P 1 − > R 1 , R 1 − > P 2 分别是等待边和占有边。
可以发现有环是发生死锁的必要条件,i.e. 发生死锁一定存在一个环,但存在环并不一定发生死锁,如右图
死锁特征
也叫死锁的必要条件:
- 互斥: 至少一个资源处于非共享状态
- 占有并等待: 存在一个进程占有至少一个非共享资源同时等待另外一个被其他进程占有的资源
- 非抢占: 即资源不能被抢占,即资源只能在进程完成任务后自动释放
- 循环等待: 即有一组循环等待进程 <P1,…,Pn>