1 / 17
文档名称:

银行家算法(00002).docx

格式:docx   大小:417KB   页数:17页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

银行家算法(00002).docx

上传人:taotao0a 2021/3/10 文件大小:417 KB

下载得到文件列表

银行家算法(00002).docx

相关文档

文档介绍

文档介绍:银行家算法
———————————————————————————————— 作者:
———————————————————————————————— 日期:

实验二 银行家算法
一、实验目的
利用银行家算法,可以来检测CPU为进程分配资源的情况,决定CPU是否响应某进程的的请求并为其分配资源,从而很好避免了死锁的产生。
使用高级编程语言编写程序,来模拟银行家算法的实现过程
二、实验内容
(1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。
(2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。
(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:
Available=Available-Request[i];
Allocation=Allocation+Request;
Need=Need-Request;
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。
三、程序流程图
1、系统主要过程流程图
2、银行家算法流程图
3、安全性算法流程图
注:程序流程图是根据自己程序的整个流程用photoshop制成,再插入进来。
四、源程序清单
package bank;
import ;
public class Test
{
int no1, no2;
static int Max[][]; //最大需求
static int Allocation[][]; //已分配资源数
static int Need[][]; //仍需资源数
static int Available[]; //可利用资源数
static String name1[];
static String name2[];
static boolean[] Finish;
static int[] temp = { 0 }; //存放安全序列
static int work[];
static int[] Request;
Scanner input = new Scanner();

public static void main(String[] args) {
Test t = new Test();
();
//();
();
();
}
/* 输入初始化数据*/

public void printFrame()
{
("*****************************************************");
("* *");
("* 银行家算法设计与实现 *");
("* *");

("*****************************************************");
("请输入系统中进程的个数:");
no1 = ();
("请输入资源的种类数:");
no2 = ();
Max = new int[no1][no2];
Allocation = new i