文档介绍:洛阳师范学院信息技术学院
软件实验报告
专业:12 计科专升本 课程: 操作系统 指导教师: 赵素萍
学号: 121112016 姓名:洛阳师范学院信息技术学院
软件实验报告
专业:12 计科专升本 课程: 操作系统 指导教师: 赵素萍
学号: 121112016 姓名: 刘佳林 班级:
实验名称
银行家算法
实验类型
设计性
实验时间
2012-12-12
实验环境
实验目的与要求:
1.掌握银行家算法思想
2.观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。
实验内容:
编写和调试一个系统动态分配资源的简单模拟程序,用银行家算法和随机分配算法实现资源分配。随机算法的分配原则是:当进程申请资源时,如果系统中现存资源数能满足进程的当前资源申请量,就把资源分配给该进程,否则就置进程为等待态。用随机算法分配资源可能会产生死锁。
实验步骤:(算法描述、源程序、操作步骤和方法)
int Bank(int a)
{
int i,j;
/*for(i=0;i<a;i++)
for(j =0;j<m;j++)//m为系统所需的资源数
{
if(Request[i][j]>Need[i][j]||Request[i][j]>Available[j])
{printf("\n分配失败\n");return ERROR;}
}*/
for(i=0;i<a;i++)
for(j=0;j < m;j++)//假设可以分配
{
Available[j] -=Request[i][j];
Allocation[i][j] += Request[i][j];
Need[i][j] -=Request[i][j];
}
if(safe(a) == 0)//如果不符合安全性,恢复数据
{
Available[j] +=Request[i][j];
Allocation[i][j] -= Request[i][j];
Need[i][j] +=Request[i][j];
printf("分配失败!");
return 0;
}
printf("\n分配成功\n");
return 1;//分配成功
}
int safe(int a)//a表示输入的进程数
{
int i, j , k;
int work[m];
int finish_num = 0;
int Finish[n];