银行家算法 实验

本次实验旨在理解和实现银行家算法,以防止操作系统中的死锁。通过使用Visual C++6.0,开发者将创建一个模拟系统,包含A、B、C三种资源,以及四个可运行进程。程序需能输入资源数量、进程最大需求、已分配资源和当前需求,并判断系统安全性,输出安全序列。当进程申请资源时,程序需评估能否分配。
摘要由CSDN通过智能技术生成

《操作系统》实验
实验二 银行家算法

一.实验目的
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值