实验三 银行家算法

实验三 进程的死锁避免算法

一、实验目的

根据银行家算法的思想,编写程序,解决并发进程死锁问题。

二、背景知识

本实验要求设计并实现银行家算法。银行家算法是死锁避免的经典算法,其核心思想是:进程动态地申请资源,每次申请资源时系统都执行安全状态检查算法判断本次申请是否会造成系统处于不安全状态,如果不安全则阻塞进程;如果安全状态,则完成资源分配。

安全状态检查算法的思想是找到一个安全序列,使所有进程都能执行完毕。如果找到,则处于安全状态,否则为不安全状态。

三、实验内容与步骤

进程的死锁避免算法。编写一段程序,模拟银行家算法,解决进程死锁问题。

利用Clion实现上述程序设计和调试操作,根据提示输入相应的资源请求,对于算法操作的成功与否提供一定的提示框。

通过阅读和分析实验程序,熟悉进程的死锁问题。

四、工具/准备工作

在开始本实验前,回顾教科书相关内容

需要做如下准备:

  • 一台运行Windows 11操作系统的计算机
  • 计算机中安装了Clion

五、实验过程

(一)数据结构

struct state{
   
    int resource[m];
    int available[m];
    int claim[n][m];
    int alloc[n][m];
    int need[n][m];
};
state bank;

(二)初始化状态读入:

本次实验以一下数据作为测试数据;

9 3 6
0 1 1
3 2 2
6 1 3
3 1 4
4 2 2
1 0 0
6 1 2
2 1 1
0 0 2
void init_input(){
   
//    cout << "输入进程资源: ";
    for(int i = 0; i < m; i++){
   
        cin >> bank.resource[i];
    }
//    cout << "输入当前可用资源: ";
    for(int i = 0; i < m; i++){
   
        cin >> bank.available[i];
    }
//    cout << "输入进程所需最大资源数: ";
    for(int i = 0; i < n; i++){
   
        for(int j = 0; j < m; j++){
   
            cin >> bank.claim[i][j];
        }
    }
//    cout << "输入进程已获得最大资源数: ";
    for(int i = 0; i < n; i++){
   
        for(int j = 0; j < m; j++){
   
            cin >> bank.alloc[i][j];
        }
    }
    //计算need
    for(int i = 0; i < n; i++){
   
        for
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiyiqwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值