银行家算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

安全和不安全状态

相关文档
最新文档