【操作系统】基于c语言的银行家算法模拟实现

该博客介绍了如何使用C语言实现银行家算法的模拟,系统资源设为3,最大并发进程数为10。用户可以指定进程申请资源,程序会进行安全性检查,若成功则输出安全序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于c语言的银行家算法模拟实现

设置系统资源数目为3,并发进程最大数量为10;程序开始即表示并发进程同时运行,用户可指定相应的进程申请一定数量的资源,直到所有进程完成或用户主动退出。并发进程的数量以及资源最大需求,已分配资源数量均需用户自己定义,且每次申请之后会将结果返回,成功则将安全性检查表与安全序列一并输出。
源码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define source_num 3   // 每个进程所需的资源的种类数量
#define Thread_max 10      //可容纳的最多的进程数量

int Max_Need[Thread_max][source_num];    //所有进程所需要的资源的最大数目
int Allocation[Thread_max][source_num];      //所有进程已经分配到的资源的数目
int tmp_Available[source_num];//剩余资源数目备份
int current_Allocation[Thread_max][source_num];// 已分配的资源数量备份
int Need[Thread_max][source_num];        //所有进程还需要的设备的数目
int current_Need[Thread_max][source_num];//需要资源数量备份
int current_Available[Thread_max][source_num];    //记录分配完之后,此时系统的可用资源数目
int Work[Thread_max][source_num];          //记录运行完成之后,系统中各个资源的数目
int Available[source_num];           //系统中剩余的资源数量
int finish[Thread_max];                   //存放所有进程的状态。
int que[Thread_max];                     //用于存放安全队列。 
int Thread_num;           
int RQ[source_num];

//初始化函数,对Max,Need,Available,Allocation进行初始化。
void init() {
   
   
    printf("请输入系统中各类资源的数目总和:\n");
    for (int i = 0; i < source_num; i++)
        scanf("%d", &Available[i]);
    printf("\n");
    do {
   
   
        printf("请输入进程的数量:\n");
        scanf("%d", &Thread_num);
    } while (Thread_num > 10);
    printf("\n");
    printf("请输入各个进程运行对各个程序的最大需求:\n");
    for (int i = 0; i < Thread_num; i++) {
   
   
        for (int j = 0; j < source_num; j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值