《操作系统》实验
实验二 银行家算法
一.实验目的
1、理解死锁的定义、原因和必要条件。
2、掌握银行家算法和安全性算法的基本思想。
3、能够编程模拟利用银行家算法和安全性算法避免死锁的实现过程。
二.使用的设备和仪器
计算机+Windows XP +Visual C++6.0
三.实验内容及要求
编写一程序,能够模拟银行家算法和安全算法来避免死锁。假设系统资源有A、B、C三种,可以运行4个进程。该程序具备的基本功能为:
1、程序可以输入3种资源的数目,4个进程对3种资源的最大需求量、已分配量和需求量。
2、能够判断某一时刻系统是否处于安全状态,如果处于安全状态能够给出安全序列。
3、当某进程提出资源申请时,能够判断是否能把资源分配给申请进程。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define index_max 5
//线程
typedef struct PCB{
int id;
int Max[3];
int allocation[3];
int Need[3];
}PCB;
PCB MY_PCB[index_max]={0};//定义max个线程初始化为0
//初始化资源数量
int Availabl[3]={2,3,3};
//分配
void distribution(){
for(int i=0;i<index_max;i++){
MY_PCB[i].id=i+1;
printf("请输入第%d个进程的MAX(A B C)用空格隔开
",i+1);
scanf("%d %d %d",&MY_PCB[i].Max[0],&MY_PCB[i].Max[1],&M