没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
#include <stdio.h>
#include <stdlib.h>
/*----------------------常量定义--------------------*/
#define F 0
#define T 1
#define n 5 //进程数量
#define m 3 //资源种类数量
/*--------------------------------------------------*/
/*--------------------数据结构定义------------------*/
int Available[m]={3,3,2}; //可用资源
int Work[m]; //工作向量
int Finish[n]; //用以判断系统是否有足够资源分给相应进程
void Recycle(); //若进程运行完资源回收
int backDos(); //判断所有进程是否运行完,完后返回操作系统
/*--------------------------------------------------*/
/*-----------------------进程-----------------------*/
struct PCB
{
int flag; //状态标志,是否运行完
int Max[m]; //资源最大需求量
int Allocation[m]; //已分配资源
int Need[m]; //还需要的资源
int Request[m]; //请求资源量
}P[n];
/*-----------------------函数声明--------------------*/
int tryAdminister(int num);//试分配
void safeCheck(int num); //安全性检查
void Print(); //状态输出
#include <stdlib.h>
/*----------------------常量定义--------------------*/
#define F 0
#define T 1
#define n 5 //进程数量
#define m 3 //资源种类数量
/*--------------------------------------------------*/
/*--------------------数据结构定义------------------*/
int Available[m]={3,3,2}; //可用资源
int Work[m]; //工作向量
int Finish[n]; //用以判断系统是否有足够资源分给相应进程
void Recycle(); //若进程运行完资源回收
int backDos(); //判断所有进程是否运行完,完后返回操作系统
/*--------------------------------------------------*/
/*-----------------------进程-----------------------*/
struct PCB
{
int flag; //状态标志,是否运行完
int Max[m]; //资源最大需求量
int Allocation[m]; //已分配资源
int Need[m]; //还需要的资源
int Request[m]; //请求资源量
}P[n];
/*-----------------------函数声明--------------------*/
int tryAdminister(int num);//试分配
void safeCheck(int num); //安全性检查
void Print(); //状态输出
/*主函数(只需改变n、m和下面的初始数组便可形成新的进程量,资源量和状态)*/
int main()
{
int i, j, num;
int total[n][m]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};
int have[n][m]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};
int want[n][m]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};
for (i=0;i<n;i++) //初始化进程资源分配状态
for (j=0;j<m;j++)
{
P[i].flag = 0;
P[i].Max[j]=total[i][j];
P[i].Allocation[j]=have[i][j];
P[i].Need[j]=want[i][j];
}
Print(); //状态输出
while (scanf("%d",&num)!=EOF)
{
printf("输入进程%d对这三类资源的需求向量(用空格隔开):\n",num);
scanf("%d %d %d",&P[num].Request[0],&P[num].Request[1],&P[num].Request[2]);
if (tryAdminister(num)==T)
safeCheck(num);
Recycle(); //资源回收
剩余7页未读,继续阅读
资源评论
TakenTaken
- 粉丝: 5
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功