银行家算法分析与实现.docVIP

  • 4
  • 0
  • 约4.76千字
  • 约 12页
  • 2022-10-17 发布于浙江
  • 举报
银行家算法分析与实现 银行家算法 一、初始化 由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED 赋值。 二、银行家算法伪代码 银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。 设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。 (1)如果REQUEST [cusneed] [i]= NEED[cusneed][i],则转(2);否则,出错。 (2)如果REQUEST [cusneed] [i]= AVAILABLE[cusneed][i],则转(3);否则,出错。 (3)系统试探分配资源,修改相关数据: AVAILABLE[i]-=REQUEST[cusneed][i]; ALLOCATION[cusneed][i]+=REQUEST[cusneed][i]; NEED[cusneed][i]-=REQUEST[cusneed][i]; (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待 三、安全性检查算法伪代码 (1)设置两个工作向量Work=AVAILABLE;FINISH (2)从进程集合中找到一个满足下述条件的进程, FINISH==false; NEED=Work; 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work+=ALLOCATION; Finish=true; GOTO 2 (4)如所有的进程Finish= true,则表示安全;否则系统不安全。 四、各算法的流程图 初始化函数 Init()开始 输入进程的数目m 输入资源的种类n 输入每个进程最大所需的 各资源数 输出提示:输入有输入每个进程已分配的各资源数误,重新输入 true 输入各个资源现有的数目 初始化函数 Init()结束 4.1初始化算法流程图 银行家算法 开始 初始化Init() 提出请求REQUEST[I] false REQUEST[i]=NEED[i]Error true falseREQUEST[i]=AVAILABLE[i]ErrorAVAILABLE[i] -=REQUEST[i]ALLOCATION[i]+=REQUEST[i]NEED[i]-=REQUEST[i] false 输出提示:你的Safe()请求被拒 true AVAILABLE[i] -=REQUEST[i]输出提示:同意分配ALLOCATION[i]+=REQUEST[i]请求NEED[i]-=REQUEST[i] true 是否再次请求分配 false 结束 4.2银行家算法流程图 安全性算法 safe()开始 Work =AVAILABLE; FINISH = false; false NEED[i]=Work FINISH[i]==false true Work =ALLOCATION[i]; FINISH[i] = true; false输出提示:系 所有进程的FINISH= true;统不安全 true 安全的输出序列 RETURN true 安全性算法 safe()结束 4.3 安全性算法流程图 五、源代码 #include iostream using namespace std; #define MAXPROCESS 50 /*最大进程数*/ #define MAXRESOURCE 100 /*最大资源数*/ int AVAILABLE[MAXRESOURCE]; /* 可用资源数组 */ int MAX[MAXPROCESS][MAXRESOURCE]; /* 最大需求矩阵 */ int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /* 分配矩阵 */ int NEED[MAXPROCESS][MAXRESOURCE]; /* 需求矩阵 */ int REQUEST[MAXPROCESS][MAXRESOURCE]; /* 进程需要资源数 */ bool FINISH[MAXPROCESS]; /* 系统是否有足够的资源分配 */ int p[MAXPROCESS]; /* 记录序列 */ int m,n; /* m个进程,n个资源 */ void Init(); bool Safe(); void Bank(); int main() { Init(); Safe(); Bank(); getchar(); } // 给出系统拥有的每种资源数,已经分配给每个进程的资源数

文档评论(0)

1亿VIP精品文档

相关文档