死锁问题
2026/9/12大约 4 分钟
死锁问题
1. 考点:基础概况
所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。
1.1 死锁产生的四大条件(必须同时具备)
- 互斥:资源独占排他,同一时间只能由一个进程使用。
- 保持和等待:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,同时对自己手上的资源保持不放。
- 不剥夺:进程已获得的资源在未使用完之前,不能被其他进程强行剥夺,只能自己主动释放。
- 环路等待:存在一种进程资源循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。
1.2 死锁的处理策略与方法
1.2.1 死锁的预防(破坏四大条件之一)
- 有序资源分配法:对资源进行编号排序,规定进程只能按编号递增的顺序请求资源,从而破坏“环路等待”条件。
- 静态资源分配法:进程在运行前一次性申请完它所需要的全部资源,若不能满足则暂不投入运行,从而破坏“保持和等待”条件。
1.2.2 死锁的避免
- 银行家算法:在资源分配过程中,通过预先计算系统的安全状态(安全性检查),确保系统始终处于安全状态,从而避免进入死锁。
1.2.3 死锁的检测与解除
- 允许死锁发生,但通过系统定时运行检测机构来识别死锁的发生,并采取措施(如终止进程、剥夺资源)将其解除。
1.2.4 鸵鸟策略
- 不予理睬:发生死锁的概率极低时,直接忽略死锁,像鸵鸟一样把头埋进沙子里,以此减少系统实现的复杂度和性能开销。
2. 考点:死锁相关计算
- 进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。
- 死锁定义:如果进程在等待一件不可能发生的事,则进程就死锁了。而如果多个进程产生死锁,就会造成系统死锁。
2.1 核心公式
系统不可能发生死锁的最小资源数:
- :所需资源数
- :进程数
- :系统总资源数
2.2 核心考点
- 考点 1:可能发生死锁的最大资源数。
- 考点 2:不可能发生死锁的最小资源数。
3. 经典例题
3.1 题目一
题目描述:系统有 5 个进程:A、B、C、D、E。这 5 个进程都需要 4 个系统资源。如果系统至少有多少个资源,则不可能发生死锁?
求解应用:
- 已知进程数 ,所需资源数 。
- 代入公式:。
结论:系统至少要有 16 个资源,才不可能发生死锁。
3.2 题目二
题目描述: 某计算机系统中互斥资源 的可用数为 8,系统中有 3 个进程 、 和 竞争 ,且每个进程都需要 个 ,该系统可能会发生死锁的最小 值为空( D )。
- A. 1
- B. 2
- C. 3
- D. 4
「解析」
已知条件
- 系统资源总数:
- 进程数:()
- 每个进程所需资源数:
解题思路与公式应用
- 核心公式:
系统不可能发生死锁的最小资源数公式为:
- 核心公式:
(注:在此题中,需求资源数 即为 )
- 代入数据计算:
临界点分析:
- 当 时,代入得 。因为 ,此时资源充足,不可能发生死锁。
- 当 时,代入得 。由于系统资源总数 8 小于 10,无法满足安全分配,可能会发生死锁。
正确选项:D。
