毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

银行家算法C++源程序及流程图

更新时间:2010-1-27:  来源:毕业论文

银行家算法C++源程序及流程图
1  设计目的
1)了解多道程序系统中,多个进程并发执行的资源分配。
2)掌握银行家算法,了解资源在进程并发执行中的资源分配情况。
3)掌握预防死锁的方法,系统安全状态的基本概念。
2  设计内容
设计一个n个并发进程共享m个系统资源的程序以实现银行家算法。要求:
1) 简单的选择界面;
2) 能显示当前系统资源的占用和剩余情况。
3) 为进程分配资源,如果进程要求的资源大于系统剩余的资源,不与分配并且提示分配不成功;
4) 撤销作业,释放资源。
编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。
银行家算法分配资源的原则是:系统掌握每个进程对资源的最大需求量,当进程要求申请资源时,系统就测试该进程尚需资源的最大量,如果系统中现存的资源数大于或等于该进程尚需求资源最大量时,就满足进程的当前申请。这样就可以保证至少有一个进程可能得到全部资源而执行到结束,然后归还它所占有的全部资源供其它进程使用。
银行家算法中的数据结构
(1)可利用资源向量Available(一维数组)
     是一个含有m个元素,其中的每一个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。如果Available[j]=k, 表示系统中现有Rj类资源k个。
(2)最大需求矩阵Max(二维数组)
m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)=k, 表示进程i需要Rj类资源的最大数目为k。
(3)分配矩阵Allocation(二维数组)
m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation(i,j)=k, 表示进程i当前已分得Rj类资源k个。
(4)需求矩阵Need (二维数组)
     是一个含有n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need(i,j)=k, 表示进程i还需要Rj类资源k个,方能完成其任务。
Need(i,j)= Max(i,j)-Allocation(i,j)
3.1程序流程图 
初始化算法流程图 银行家算法流程图 
安全性算法流程图3.2源程序 
#include <iostream>
using namespace std;
#define I 50         /*最大进程数*/
#define J 100       /*最大资源数*/
#define False 0
#define True 1
int Available[J];   /*可利用资源数*/
int MAX[I][J];     /*最大需求矩阵*/
int Allocation[I][J];  /*分配矩阵*/
int Need[I][J];       /*需求矩阵*/
int Request[I][J];/*进程需要资源数*/
int Finish[I];                   
/*系统是否有足够的资源分配*/
int p[I];            /*记录序列*/
int M,N;        /*M个进程,N类资源*/
void initial();
bool Safe();
void request();
void initial()       /*初始化算法*/
{
    int i,j;
    cout<<"输入进程数:";
    cin>>M;
    cout<<"输入资源的种类数:";
    cin>>N;
    cout<<"输入每个进程最多所需的各资源:"<<endl;
    for(i=0;i<M;i++)
    for(j=0;j<N;j++)
    cin>>MAX[i][j];
    cout<<"输入每个进程已分配的各资源数:"<<endl;
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            cin>>Allocation[i][j];
            Need[i][j]=MAX[i][j]-Allocation[i][j];
            if(Need[i][j]<0)
            {
                cout<<"您输入的第"<<i+1<<"个进程所拥有的第"<<j+1<<"个资源数错误,请重新输入:"<<endl;
                j--;
                continue;            }        }685

[1] [2] [3] [4] 下一页

银行家算法C++源程序及流程图下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。