Computer-Operate System[实验 银行家算法]

 

实验四:进程死锁避免

实验目的:

1.加深了解有关资源申请、避免死锁等概念。

    2.加深对银行家算法的步骤和相关数据结构用法的更好理解。

 

实验内容:

系统中有m个同类资源被n个进程共享,每个进程对资源的最大需求数分别为S1,S2,…Sn,      且Max(Si)<=m(i=1,2,…n).进程可以动态地申请和释放资源。编写一个程序,实现银行家算法,当系统将资源分配给某一进程而不会死锁时,就分配,否则推迟分配并显示适当信息。

要求:

    要画出银行家算法的程序框图,说明数据结构。当进程要分配资源时以及释放资源后,打印输出资源分配或释放后的分配情况表,如果可能产生死锁,则显示适当信息;如果不产生死锁,更新系统的资源分配情况表。

实验步骤 :

1、理解本实验中关于两种调度算法的说明。 

2、根据调度算法的说明,画出相应的程序流程图。 

3、按照程序流程图,用C语言编程并实现。

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std; 
#define False 0 
#define True 1 
int Max[100][100]={0};//各进程所需各类资源的最大需求
 int Avaliable[100]={0};//系统可用资源 
char name[100]={0};//资源的名称 
int Allocation[100][100]={0};//系统已分配资源
 int Need[100][100]={0};//还需要资源 
int Request[100]={0};//请求资源向量 
int temp[100]={0};//存放安全序列 
int Work[100]={0};//存放系统可提供资源
 int M=100;//作业的最大数为100
 int N=100;//资源的最大数为100 
void showdata()//显示资源矩阵 
{ 
   int i,j; 
    cout<<"系统目前可用的资源[Avaliable]:"<<endl;
    for(i=0;i<N;i++)     
  cout<<name[i]<<" ";    
    cout<<endl; 
    for (j=0;j<N;j++) 
      cout<<Avaliable[j]<<" ";//输出分配资源
      cout<<endl; 
      cout<<"             Max      Allocation     Need"<<endl;
      cout<<"进程名      ";
    for(j=0;j<3;j++){
     for(i=0;i<N;i++)
       cout<<name[i]<<" ";
       cout<<"      ";    
    } 
   cout<<endl; 
   for(i=0;i<M;i++){ 
     cout<<" "<<i<<"         "; 
     for(j=0;j<N;j++) 
      cout<<Max[i][j]<<" ";
     cout<<"      
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值