银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc

《操作系统》课程综合性实验报告

姓名: 学号: 2016 年 11 月 20 日

实验题目进程调度算法程序设计一、实验目的

通过对安全性算法和银行家算法的模拟,进一步理解资源分配的基本概念,加深对资源申请,资源分配(银行家算法)以及系统是否能分配(安全性算法)资源的理解。

二、设备与环境

1. 硬件设备:PC机一台

2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java 等编程语言环境。

三、实验内容

用C语言(或其它语言,如Java)实现对资源的资源申请与分配;

(一)银行家算法(bank()函数):

进程i发出请求资源申请,

(1)如果Request [j]<=need[i,j],转向步骤(2),否则认为出错,因为他所需要的资源数已经超过它所宣布的最大值。

(2)如果:Request i[j]<=available[i,j],转向步骤(3),否则表示尚无足够资源,进程i需等待。

(3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:

Available[i,j]= Available[i,j]- Request [j];

Allocation[i][j]= Allocation[i][j]+ Request [j];

need[i][j]= need[i][j]- Request [j];

(4)试分配后,执行安全性检查,调用check()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程。否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。

(5)用do{…}while 循环语句实现输入字符y/n判断是否继续进行资源申请。

(二)安全性算法(safe()函数):

(1)设置两个向量: 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available。 工作向量Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]=false;当有足够的资源分配给进程时, 再令Finish[i]=true。

(2)在进程中查找符合以下条件的进程: 条件1:Finish[i]=false; 条件2:need[i][j]<=Work[j] 若找到,则执行步骤(3)否则,执行步骤(4)

(3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work[j]= Work[j]+ Allocation[i][j]; Finish[i]=true; goto step (2);

(4)如果所有的Finish[i]=true都满足,则表示系统处于安全状态,否则,处于不安全状态。

四、实验结果及分析

1.实验设计说明

按0由用户输入,按1由系统提供数据

2.实验代码

#include

#include

#include

#define max_process 50 //最大进程数

#define max_resource 100//最大资源数

#define false 0

#define true 1

int available[max_resource]={3,3,2};//可利用资源向量

int max[max_process][max_resource]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//最大需求矩阵

int allocation[max_process][max_resource]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//分配矩阵

int need[max_process][max_resource];//需求矩阵

int request[max_process][max_resource];//进程需要资源数

int finish[max_process];

int m=5,n=3;

void init();

int safe();

void bank();

void init2();

void print();

void print2();

void main()

{

int i;

printf("请输入测试数据,按0由用户输入测试数据,按1由系统提供测试数据:\n");

scanf("%d",&i);

switch(i){

case 0: init();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值