软考-系统架构设计师:进程管理-银行家算法
软考 系统架构设计师 操作系统基本原理 大约 1257 字形成死锁的必要条件(缺一不可)
- 互斥:同一时刻只有一个进程获得了必要资源
- 保持和等待:各个进程会保持自己的资源并且等待其他进程释放更多资源
- 不剥夺:系统不会把已经分配给某个进程的资源剥夺掉分配给其他的进程
- 环路等待:A等待B释放资源,B等待C释放资源,C等待A释放资源
解决死锁的方案
- 死锁的预防
- 打破四大条件
- 死锁的避免
- 有序资源分配法
- 银行家算法
银行家算法
分配资源的原则。
- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
- 进程可以分期请求资源,但请求的总数不能超过最大需求量
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
银行家算法例子
假设系统中有三类互斥资源R1、R2、R3,可用资源数分别是9、8、5。在T0时刻系统中有P1、P2、P3、P4、和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按____序列执行,那么系统状态是安全的。
进程 | 资源最大需求量 R1 R2 R3 |
已分配资源数 R1 R2 R3 |
---|---|---|
P1 | 6 5 2 | 1 2 1 |
P2 | 2 2 1 | 2 1 1 |
P3 | 8 1 1 | 2 1 0 |
P4 | 1 2 1 | 1 2 0 |
P5 | 3 4 4 | 1 1 3 |
A:P1->P2->P4->P5->P3
B:P2->P4->P5->P1->P3
C:P2->P1->P4->P5->P3
D:P4->P2->P4->P1->P3
解题
还剩余资源数:
R1 = 9-(1+2+2+1+1)=2
R2 = 8-(2+1+1+2+1)=1
R3 = 5-(1+1+0+0+3)=0
各进程还需要资源数:
进程 | 资源最大需求量 R1 R2 R3 |
已分配资源数 R1 R2 R3 |
还需要资源数 R1 R2 R3 |
---|---|---|---|
P1 | 6 5 2 | 1 2 1 | 5 3 1 |
P2 | 2 2 1 | 2 1 1 | 0 1 0 |
P3 | 8 1 1 | 2 1 0 | 6 0 1 |
P4 | 1 2 1 | 1 2 0 | 0 0 1 |
P5 | 3 4 4 | 1 1 3 | 2 3 1 |
阅读 485 · 发布于 2019-08-31
————        END        ————
扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Golang命令之go run阅读 536
-
MySQL合并字符串函数:CONCAT、CONCAT_WS、GROUP_CONCAT阅读 1573
-
软考-系统架构设计师:NoSQL阅读 563
-
算法:字典序排序阅读 80
-
MongoDB过期索引(TTL索引)阅读 550
-
Spring Boot请求转发和重定向阅读 3029
-
软考-系统架构设计师:主存-分类阅读 605
-
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction阅读 787
-
MongoDB备份、还原与导出、导入阅读 1573
-
Android双击退出应用程序阅读 1008