银行家算法

原创 2007年10月13日 04:34:00

就是我的作业啦,拿给大家看看有没有什么要改的地方.

关于银行家算法的,本来我问了老师我可不可以不写,结果被训了一顿.
我字本来就不好,非要我手写下来,哎,光交代码还不成.

bank.h
[code]
#include "windows.h"
#include "time.h"

#define Z 7        //某个墒值
#define M 3        //资源数
#define N 4        //进程数

class CProcess        //进程类
{
public:
    CProcess();
    void Set();        //设置已分配资源

    DWORD max[M], used[M];        //最大需求资源,已分配资源
    int ok;        //需求状态标识
};

class CResource        //资源类
{
public:
    CResource();
    void AddResource(CProcess &p);        //增加资源函数

    DWORD r[M];        //可利用资源
};

int Test(CProcess p[N]);        //测试是否全部分配结束
int Check(CProcess p[N], CResource r, int n);        //检查是否可分配资源

CProcess::CProcess()
{
    srand((unsigned)time (NULL));
    Sleep(1000);
    for(int i = 0; i < M; i++)
    {
        max[i] = (rand() % Z) + 1;
        used[i] = Z;
        cout<<max[i];
    }
    ok = 0;
    cout<<endl;
}

void CProcess::Set()
{
    srand((unsigned)time (NULL));
    Sleep(1000);
    for(int i = 0; i < M; i++)
    {
        while (used[i] >= max[i])
        {
            used[i] = rand() % Z;
        }
        cout<<used[i];
    }
    cout<<endl;
}
   
CResource::CResource()
{
    srand((unsigned)time (NULL));
    cout<<endl;
    for(int i = 0; i < M; i++)
    {
        r[i] = rand() % Z;
        cout<<r[i];
    }
    cout<<endl<<endl;
}

void CResource::AddResource(CProcess &p)
{
    for(int i = 0; i < M; i++)
    {
        r[i] += p.used[i];
        p.used[i] = 0;
    }
    p.ok = 1;
}

int Test(CProcess p[N])
{
    int result = 1;
    for(int i = 0; i < N; i++)
    {
        result *= p[i].ok;
    }

    return result;
}

int Check(CProcess p[N], CResource r, int n)
{
    int result = 1;
    for(int i = 0; i < M; i++)
    {
        if (r.r[i] < (p[n].max[i] - p[n].used[i]))
        {
            return 0;
        }
    }

    return result;
}[/code]
bank.cpp
[code]
#include "iostream.h"
#include "bank.h"

int main(void)
{
    CProcess process[N];
    CResource resource;
    DWORD n = 0, j = 0;

    for(int i = 0; i < N; i++)
    {
        process[i].Set();
    }
//    cout<<Test(process);
    while (0 == Test(process))
    {
//    cout<<"A"<<n;
        if (0 == process[n].ok)
        {
            if (Check(process, resource, n))
            {
                resource.AddResource(process[n]);
                cout<<(n + 1);
                j = 0;

            }
        }
            n++;
            j++;
            if (j > N)
            {
                cout<<"no!";
                return 1;
            }
            n %= N;
    }

    return 0;
}
[/code] 

银行家算法简述解析

背景简介: 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时...
  • only06
  • only06
  • 2016年11月28日 17:38
  • 18063

多线程模拟银行家算法

#include #include #include #include #define NUMBER_OF_CUSTOMERS 5 #define NUMBER_OF_RESOURCES 3 ...
  • u012427462
  • u012427462
  • 2015年10月22日 13:00
  • 1071

银行家算法(Java实现)

银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。我们可以把操作系统看作是银行家,操作系统管理...
  • u014634576
  • u014634576
  • 2016年09月20日 21:52
  • 5366

操作系统面试—死锁(二)——银行家算法

本文是对操作系统概念(第七版)第七章——死锁的学习总结,不足之处欢迎批评指正。 上文中我们提到了资源分配图算法,只适合每种资源只有一个实例的情况。当每种资源不止一个实例时,资源分配图算法将不再适合,因...
  • qq_27225851
  • qq_27225851
  • 2016年06月24日 15:11
  • 981

什么是银行家算法

为了软考!!!
  • pk3995519
  • pk3995519
  • 2014年10月09日 22:39
  • 1627

银行家算法vc++模拟实现

操作系统在对资源进行分配的时候会出现一种资源的争抢,为了避免在资源争抢的时候出现死锁现象引入了银行家算法。...
  • CSD1993
  • CSD1993
  • 2014年12月15日 16:43
  • 1641

银行家算法(Java语言实现)

package cn.hncu.mytext; import java.util.Scanner; public class BankerOfAlgorithm {//BankerOfAlgori...
  • hncu1306602liuqiang
  • hncu1306602liuqiang
  • 2015年06月06日 18:14
  • 1292

操作系统之——银行家算法C语言实现

// 银行家算法.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "string.h" #include "stdlib.h" #defi...
  • qq_26888929
  • qq_26888929
  • 2016年12月05日 21:41
  • 7677

银行家算法的java代码实现,Swing写的界面

java代码实现了银行家算法,界面写的个人认为还是较为细致的,完整的实现了找安全序列等算法功能,可作为参考学习银行家算法。 直接上代码:①界面展示方法:public void ShowFrame()...
  • lly_itboy
  • lly_itboy
  • 2015年04月08日 18:35
  • 1574

c++实现银行家算法

大三上学期的时候自己写的银行家算法的代码,复制粘贴到编译器即可运行,希望帮助到其他人!/* Financier algorithm.(银行家算法) */ //================...
  • s5660gt
  • s5660gt
  • 2016年07月08日 21:01
  • 1904
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:银行家算法
举报原因:
原因补充:

(最多只允许输入30个字)