银行家算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
银行家算法
资源
对于银行家算法的实现,需要知道三件事:
•每个进程所能获取的每种资源数量是多少[MAX]
•每个进程当前所分配到的每种资源的数量是多少[ALLOCATED]
•系统当前可分配的每种的资源数量是多少[AVAILABLE]
只有当资源满足以下条件,资源才会被分配:
1.request <= max, 也可设置错误条件,当进程所请求的资源超过最大的要求
2.request <= available, 或者进程一直等直到资源可分配
一些资源在实际的系统被跟踪,如:内存,信号量以及接口。
基本数据结构用于维护运行银行家算法:
用n表示系统资源数量,m表示系统资源类型。则我们需要以下的数据结构:
•Available: 长度为m的向量用来表示每种资源可分配的数量。
如果available[j]=k, 资源类型为Rj可分配数量为k。
•Max: n * m矩阵,定义,每个进程最大的资源需求。
如果Max[i,j]=k. 表明Pi对类型为Rj资源的请求为k.
•Allocation: n * m矩阵定义每个进程已分配到的每种资源的数量。
如果Allocation[i,j] = k,进程Pi已分配到类型为Rj的资源数量为k。•Need: n * m 矩阵表明每个进程所需的资源数量。
如果Need[i,j] = k,进程Pi需要至少得到k数量的资源Rj,才能完成任务。公式:Need[i,j] = Max[i,j] - Allocation[i,j]
系统资源总数:
A B C D
6 5
7 6
系统可分配资源数:A B C D
3 1 1 2
进程 (当前
分配到的资
源数):
A B C D
P1 1 2 2 1
P2 1 0 3 3
P3 1 2 1 0
进程 (最大
资源需求
数):
A B C D
P1 3 3 2 2
P2 1 2 3 4
P3 1 3 5 0
Need= Max -
Allocation
进程 (需要
的资源数):
A B C D
P1 2 1 0 1
P2 0 2 0 1
P3 0 1 4 0
安全和不安全状态