没有合适的资源?快使用搜索试试~ 我知道了~
操作系统实验二(银行家算法)实验报告.doc
资源推荐
资源详情
资源评论
操作系统实验二(银行家算法)实验报告
实验二实验报告
实验源码:
#include "stdio.h"
#include <iostream.h>
#include <string.h>
#define False 0 // 定义 False
#define True 1 // 定义 True
int Max[100][100] = {0}; // 各进程所需各类资源的最大需求
int Avaliable[100] = {0}; // 系统可用资源
char name[100] = {0}; // 资源的名称
int Allocation[100][100] = {0}; // 系统已分配资源
int Need[100][100] = {0}; // 还需要资源
int Request[100] = {0}; // 请求资源向量
int temp[100] = {0}; // 存放安全序列
int Work[100] = {0}; // 存放系统可提供资源
int M = 100; // 作业的最大数为 100
int N = 100; // 资源的最大数为 100
// 显示资源矩阵
void showdata()
{
int i,j;
printf(" 此时刻的资源分配情况为:");
// 显示表头
printf(" Max Allocation Need Avaliable");
printf("PCB ");
// 显示作业名称
for(j = 0;j < 4;j++){
for(i = 0;i < N;i++)
printf("%c ",name[i]);
printf(" ");
}
printf("");
// 显示当前作业资源分配情况
for(i = 0;i < M;i++){
printf(" %d ",i);
for(j = 0;j < N;j++)
printf("%d ",Max[i][j]);
printf(" ");
操作系统实验二(银行家算法)实验报告
for(j = 0;j < N;j++)
printf("%d ",Allocation[i][j]);
printf(" ");
for(j = 0;j < N;j++)
printf("%d ",Need[i][j]);
if(i == 0){
printf(" ");
for (j = 0;j < N;j++)
printf("%d ",Avaliable[j]);
}
printf("\n");
}
}
// 进行资源分配
int changdata(int i)
{
int j;
for (j = 0;j < M;j++) {
Avaliable[j] = Avaliable[j] - Request[j];
Allocation[i][j] = Allocation[i][j] + Request[j];
Need[i][j] = Need[i][j] - Request[j];
}
return 1;
}
// 安全性算法
int safe()
{
int i,d,k = 0,m,h,s,apply,Finish[100] = {0};
int j;
int flag = 0;
for(i = 0;i < N;i++)
Work[i] = Avaliable[i];
printf(" 安全性检查 \n");
printf(" Work Need Allocation Work+Allocation
Finish\n");
printf("PCB ");
// 显示作业名称
for(j = 0;j < 4;j++){
for(i = 0;i < N;i++)
printf("%c ",name[i]);
printf(" ");
操作系统实验二(银行家算法)实验报告
}
printf("\n");
// 显示当前作业资源分配情况
for(i = 0;i < M;i++){
apply = 0;
for(j = 0;j < N;j++){
if (Finish[i] == False && Need[i][j] <= Work[j])
{
apply++;
if(apply == N)
{
printf(" %d ",i);
for(d = 0;d < N;d++)
printf("%d ",Work[d]);
printf(" ");
for(d = 0;d < N;d++)
printf("%d ",Need[i][d]);
printf(" ");
for(d = 0;d < N;d++)
printf("%d ",Allocation[i][d]);
printf(" ");
for(m = 0;m < N;m++)
{
Work[m] = Work[m] + Allocation[i][m];
printf("%d ",Work[m]);
}// 变分配数
Finish[i] = True;
temp[k] = i;
printf(" ");
printf("true ");
printf("\n");
i = -1;
k++;
flag++;
}
}
}
}
for(i = 0;i < M;i++){
if(Finish[i] == False){
for(j = 0;j < N;j++){
剩余10页未读,继续阅读
资源评论
是空空呀
- 粉丝: 171
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功