(1)利用银行家算法设计系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
(2)设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。
(3)确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两种资源分配程序,观察运行结果。
#include <iostream>
#include <time.h>
#include <vector>
#include <windows.h>
using namespace std;
int r[3]={3,3,2};//系统拥有的资源
int r0=0,r1=0,r2=0;//记录申请资源
class pcb
{
public:
int id;
bool state;
int max[3];
int alc[3];
int need[3];
pcb()
{
}
void init()
{
state=false;
cout<<"请输入进程的id,各个资源总需求量和已占用资源"<<endl;
cin>>id;
cout<<"a,b,c三种资源的最大使用量"<<endl;
cin>>max[0]>>max[1]>>max[2];
cout<<"a,b,c三种资源的已占有量"<<endl;
cin>>alc[0]>>alc[1]>>alc[2];
}
int rd(int n)
{
return rand()%(n+1);
}
int request()
{
// Sleep(1000);
r0=rd(max[0]-alc[