软考系统分析师·每日学习卡 | [日期:2025-07-31] | [今日主题:进程管理(二)]
一、今日学了啥?
-
死锁概述:死锁指进程因等待不可能获得的资源而停滞,需满足资源互斥、占有等待、不可剥夺、环路四个条件;系统死锁时需通过预防、避免、检测或解除措施处理
-
资源计算:最大死锁资源为n×(R-1),最小安全资源为n×(R-1)+1,确保资源分配不引发环路。
-
银行家算法:通过预判资源分配安全性(如借贷需对方可偿还)避免死锁,要求进程需求不超过系统总资源且分阶段申请。
二、重点/要记住的!
-
死锁:一个进程在等待一件不可能发生的事,进程死锁;一个或多个进程产生死锁,则会造成系统死锁。
-
🔺 死锁产生的必要条件:资源互斥、每个进程占有资源并等待其它资源、系统不能剥夺进程资源、进程资源是一个环路
-
🔺 死锁的解决措施:打破四大条件
-
死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件,使系统任何时候都不满足死锁条件
-
死锁避免:使用银行家算法避免
-
死锁检测:允许死锁产生,但系统定时运行检测死锁程序,若检测到系统中发生死锁,则设法加以解除
-
死锁解锁:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等
-
-
🔺 死锁资源计算:系统内有n个进程,每个进程需要R个资源,那么发生死锁的最大资源数为nX(R-1),其不发生死锁的最小资源数为nX(R-1)+1
-
-
银行家算法:分配资源的原则,提前计算出一条不会死锁的资源分配方法才进行资源分配,相当于借贷,考虑对方还得起钱才借钱
-
🔺 当一个进程对资源的最大需求量不超过系统中的资源数时可接纳该进程
-
🔺 进程可以分期请求资源,但请求的总数不能超过最大需求量
-
🔺 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
-
三、今天的小收获/卡住的地方
死锁就像“三个人抢一个厕所**”:
- 每个人都占着一个厕所(资源互斥),但需要另一个厕所才能使用(占有等待)。
- 他们互相等待对方释放资源(不可剥夺),形成一个“环路”(比如A等B的厕所,B等C的,C等A的)。
- 结果:所有人都卡住,无法完成任务(死锁)。 四个必要条件:
- 资源互斥:厕所只能一个人用(不能共享)。
- 占有并等待:占着一个厕所,同时等另一个。
- 不可剥夺:别人不能强行把你赶出去。
- 环路等待:A→B→C→A,形成闭环。
银行家算法就像银行贷款:
- 前提:你申请贷款前,银行会先评估你“能不能还钱”(是否会导致死锁)。
- 规则:
- 最大需求不超过系统总资源:比如你最多需要10万,银行总共有100万,才敢借。
- 分阶段申请:不能一次要完,比如先借3万,用完再借。
- 推迟分配:如果当前资源不够,就等一等,但最终能拿到(保证进度)。
核心逻辑:“先算好风险,再分配资源”,避免系统陷入死锁。
- 最大死锁资源数:
n×(R-1)
(n个进程,每个最多占R-1个资源)- 例子:3个进程,每个最多要2个资源 → 3×(2-1)=3个资源时可能死锁。
- 安全资源数:
n×(R-1)+1
(多一个资源就能避免死锁)- 同上例子:3×(2-1)+1=4个资源 → 系统安全。
四、明天学啥?
明天开始进入存储管理的学习
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!