教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

实验三银行家算法实验报告及程序

来源:网络收集 时间:2026-08-21
导读: 银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。 实验报告三 银行家算法 班级 学号 姓名 一、 实验目的 银行家算法是避免死锁的一种重要方法,通过编写银行家算法

银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。

实验报告三 银行家算法

班级 学号 姓名

一、 实验目的

银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。

二、 实验环境

普通的计算机一台,编译环境Turobc2.0

三、 算法思想 1. 数据结构

(1) 可利用资源向量Available (2) 最大需求矩阵Max (3) 分配矩阵Allocation (4) 需求矩阵Need

2. 功能介绍

实现银行家算法以避免死锁分为两个部分: 第一部分:银行家算法(扫描)

1> 如果Request<=Need,则转向2;否则,出错 2> 如果Request<=Available,则转向3,否则等待 3> 系统试探性分配请求的资源给进程 Available:=Available-Request Allocatation:=Allocation+Request Need:=Need-Request

4> 系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。若安全,才正式

将资源分配给进程Pi,以完成本次分配;否则,将本次的试探性分配作废,恢复原来的资源分配状态,让进程Pi等待! 第二部分:安全性算法

1> 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个

银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。

元素,在执行安全算法开始时,Work=:Available;Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]:=fasle;当有足够资源分配给进程时,再令Finish[i]:=true。

2> 若Finish[i]=False&&Need<=Work,则执行4

3> 进程P获得i类资源,则顺利执行直至完成!并释放资源: Work=Work+Allocation; Finish[i]=true; 转2>

4> 若所有进程Finish[i]=true,则表示系统安全;否则,不安全!

四、 源程序

#include "string.h" #include <stdio.h> #include <stdlib.h> #define FALSE 0 #define TRUE 1 Int

MAX[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};

int AVAILABLE[3]={3,3,2};

int

ALLOCATION[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; int

NEED[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; int

Request[5][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};

char zy_name[3]={'A','B','C'}; void showdata() { int i,j;

printf("Available:\n"); for (j=0;j<3;j++) { printf("%c: ",zy_name[j]);

printf("%d ",AVAILABLE[j]); } printf("\nNeed:\n"); for (i=0;i<5;i++) { printf(" P%d:",i); for (j=0;j<3;j++)

{ printf("%c: ",zy_name[j]);

printf("%d ",NEED[i][j]); } printf("\n"); }

printf("Allocation: \n"); for (i=0;i<5;i++) { printf(" P%d:",i); for (j=0;j<3;j++)

{ printf("%c: ",zy_name[j]); printf("%d ",ALLOCATION[i][j]); }

printf("\n");}}

void changdata(int k) /*gai bian shu ju*/

{ int j;

for (j=0;j<3;j++)

{AVAILABLE[j]=AVAILABLE[j]-Request[k][j]; ALLOCATION[k][j]=ALLOCATION[k][j]+Request[k][j];

NEED[k][j]=NEED[k][j]-Request[k][j]; }}

void rstordata(int k) /*hui fu shu ju*/ { int j;

for (j=0;j<3;j++) { AVAILABLE[j]=AVAILABLE[j]+Request[k][j]; ALLOCATION[k][j]=ALLOCATION[k][j]-Request[k][j];

NEED[k][j]=NEED[k][j]+Request[k][j]; }} int chkerr(int s)

{ int WORK[3],FINISH[5],temp[3]; int i,j,k=0;

银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。

for(i=0;i<5;i++)

FINISH[i]=FALSE; for(j=0;j<3;j++) WORK[j]=AVAILABLE[j]; i=s; while(i<5)

{ if (FINISH[i]==FALSE && NEED[i][0]<=WORK[0] &&

NEED[i][1]<=WORK[1] &&

NEED[i][2]<=WORK[2])

{WORK[0]=WORK[0]+ALLOCATION[i][0]; WORK[1]=WORK[1]+ALLOCATION[i][1]; WORK[2]=WORK[2]+ALLOCATION[i][2]; FINISH[i]=TRUE; temp[k]=i; k++; i=0; }

Else i++; } for(i=0;i<5;i++)

if(FINISH[i]==FALSE) {printf("\nthe system is

not safe!please waitting!!\n"); return 1; }

printf("\n the system is safe,the request scuess:!\n");

printf(" the safe queue are:"); for(i=0;i<5;i++)

printf("P%d ",temp[i]); printf("\n"); return 0; }

void main() {

int i=0,j=0; char flag='Y'; showdata();

五、 运行结果

while(flag=='Y'||flag=='y') {

/* if(chkerr(i)==0) { */ i=-1;

while(i<0||i>=5) { printf("please enter process 0~4:"); scanf("%d",&i); if(i<0||i>=5)

printf("enter wrong !please enter

again!\n"); } printf("please enter P%d request:\n",i); for (j=0;j<3;j++) { printf("%c:",zy_name[j]); scanf("%d",&Request[i][j]);

if(Request[i][j]>NEED[i][j])

{ printf("P%drequest>need,ERROR!\n:",i); flag='N'; break; } if(Request[i][j]>AVAILABLE[j])

{ printf("P%d:request>available!\n",i); flag='N'; break; }} if(flag=='Y'||flag=='y') { changdata(i); if(chkerr(i))

{ rstordata(i);

showdata();} else

showdata(); } else

showdata();

printf("\n");

printf("enter'Y'or'y'continue: "); getchar();

scanf("%c",&flag); } }

银行家算法是避免死锁的一种重要方法,通过编写银行家算法,加深了解有关资源申请、避免死锁的概念,并体会和了解死锁和避免死锁的具体实施方法。

(1)

(2)

(3) (4)

六、 实验总结

通过几天的调试,终于把银行家这个算法跳出来了,首先赋予 …… 此处隐藏:2078字,全部文档内容请下载后查看。喜欢就下载吧 ……

实验三银行家算法实验报告及程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1935463.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)