程序化银行家算法

本文介绍了使用C++实现银行家算法的过程,包括代码逻辑和简单的结果展示。由于时间限制,作者未能实现图形界面,因此在命令行界面展示程序运行结果。测试用例来源于《计算机操作系统》第三版。
摘要由CSDN通过智能技术生成

代码实现银行家算法

代码呢,因为我现在一直在写C++代码,而我又觉得这个银行家算法的过程性比较强,所以呢就造就了这个面向过程的程序,C++的底子的程序,因为课设需要,顺便练练手,大约用了两个小时完成这一程序,所以,代码比较粗糙,不过呢,用起来还不错了!


比较粗略的代码逻辑图:
这里写图片描述


代码实现:

#include<iostream>
#include<cstdio>
#include<windows.h>
#include<vector>

using namespace std;


//采用矩阵表示
//方便起见,提前初始化好

//代表有几个进程
const int I = 5;

//代表有几类资源
const int R = 3;

//A,B,C三类资源的总数
int mem[R] = {
  10,5,7};

//一共5个进程,对各类资源最大需求量
int Max[I][R] = {
  {
  7,5,3},{
  3,2,2},{
  9,0,2},{
  2,2,2},{
  4,3,3}};

//每个进程当前已分配各类资源数
int Allocation[I][R] = {
  {
  0,1,0},{
  2,0,0},{
  3,0,2},{
  2,1,1},{
  0,0,2}};

//每个进程当前的需求量
int Need[I][R] = {
  {
  7,4,3},{
  1,2,2},{
  6,0,0},{
  0,1,1},{
  4,3,1}};

//系统当前剩余可分配的各类资源
int Available[R] = {
  3,3,2};


template<typename T,typename K>
void Sub(K* ptr, T* str,int n)
{
    while(n--)
    {
        *ptr = *ptr - *str;
        ptr++;
        str++;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值