银行家算法简析
银行家算法简析
最具有代表性的避免死锁算法
所需数据结构
- 可利用资源向量 available
- 最大需求向量 max
- 已分配矩阵向量 allocation
- 需求矩阵向量 need
- 工作向量 work(可提供的资源数目)
- 完成标志 finish
算法解析
request 是进程Pi的请求向量,表示某进程请求资源数目
- if request < need ; continue ; else 不分配资源
- if request <available ; continue ; else 不分配资源
- available = available – request ;
- need = need -request
- if 安全 ; 分配资源 ;else 不分配资源;
安全算法
假设将资源分配给进程,运算出 allocation + work (new available)即为当前进程结束后空闲出的资源,再找出新的进程满足need < new available 将其finish = true , new available + = allocation 重复执行 , 如果finish 全为1,则安全。
例题
process | allocation | need | available | 序号 | new available |
---|---|---|---|---|---|
P0 | 0 0 3 2 | 0 0 1 2 | 1 6 2 2 | 1 | 1,6,5,4 |
P1 | 1 0 0 0 | 1 7 5 0 | 4 | 2,9,9,10 | |
P2 | 1 3 5 4 | 2 3 5 6 | . | 5 | 3,12 ,14,14 |
P3 | 0 3 3 2 | 0 6 5 2 | 2 | 1,9,8,6 | |
P4 | 0 0 1 4 | 0 6 5 6 | 3 | 1,9,9,10 |
1.该状态是否安全
2.若进程P2 提出请求 (1,2,2,2) 后 是否分配资源?
答
1.如表黄色部分 有 安全序列,则安全
2.当P2 提出 12 2 2 时,request < available , request < need ;
available = 0 4 0 0 ;
process | allocation | need | available |
---|---|---|---|
P2 | 2 5 7 6 | 1 1 3 4 | 0,4,0,0. |
P0 | 0 0 3 2 | 0 0 1 2 | |
P1 | 1 0 0 0 | 1 7 5 0 | |
P3 | 0 3 3 2 | 0 6 5 2 | |
P4 | 0 0 1 4 | 0 6 5 6 |
available 无法满足进程其他资源,不分配资源。
参考资料
1.《计算机操作系统第四版》,汤小丹 ,梁红兵 ,等。