当前位置: 首页 > news >正文

【操作系统原理实验】银行家算法模拟实现

选择一种高级语言如C/C++等,编写一个银行家算法的模拟实现程序。1) 设计相关数据结构;2) 实现系统资源状态查看、资源请求的输入等模块;3) 实现资源的预分配及确认或回滚程序;4) 实现系统状态安全检查程序;5) 组装各模块成一个完整的模拟系统。

(1)设计思想:
在这里插入图片描述

1、数据结构,设置最大需求矩阵、系统已分配矩阵、还需要资源矩阵、可用资源矩阵。
2、初始化数据,已经分配矩阵初始化为零,输入系统可用资源数,此时系统可分配量等于系统可用量。输入进程数量和各进程最大需求矩阵的值,如果资源最大需求量大于系统资源最大量,则重新输入。输入各个进程已经分配的资源需求量,当分配的资源大于最大量则重新输入,此时还需要资源数量矩阵等于进程最大需求量减已经分配的资源矩阵,统计已经分配给进程的资源数,使得可分配资源量矩阵等于它减去已经分配的资源数量。
3、显示资源分配矩阵,输出系统目前可用的资源,输出系统当前的资源分配情况包括进程名、最大需求矩阵、已分配矩阵、还需资源量矩阵。
4、判断是否处于安全状态。设置矩阵存放系统可提供的资源量,初始化等于可分配资源量矩阵,设置Finish标记系统是否有足够的资源分配给各个进程,当需要资源矩阵小于等于可分配矩阵时,表示进程可以分配,将可分配矩阵加上该进程已经分配的资源,并将进程列入安全序列中。遍历Finish数组,当数组等于False时,表示系统不安全,否则表示系统是安全的,输出进程运行数组(安全序列)。
5、当进程是安全状态时,利用银行家算法对申请的资源尝试分配,输入进程要申请的资源个数。判断申请是否大于需求量,当要申请的资源大于它需要的资源时,表示分配不合理,否则,当要申请的资源不大于它需要的资源并且申请的资源不大于当前可分配的资源数时,分配资源,寻找安全序列,根据进程需求量尝试分配资源,可分配资源等于可分配资源减去申请资源,已经分配资源等于已经分配资源加上申请资源,需求资源等于需求资源减去申请的资源,显示分配后的资源量。如果找不到安全序列,则尝试分配资源作废,将矩阵资源数量恢复。
(2)功能函数设计:
void init() 数据初始化
void showdata()//显示资源分配矩阵
int test(int i)//试探讲资源分配给第i个进程
int Retest(int i)//试探性分配资源作废
int safe()//安全性算法
void bank()//利用银行家算法对申请资源进行式分
(3)结果演示:
算法举例:假设系统中有五个进程{P0,P1,P2,P3,P4}和三种类型的资源{A,B,C},每一种资源的数量分别是10、5、7,在T0时刻的资源分配情况如表1所示。请问:T0时刻的状态是否安全?如果进程P1发出请求Request1(1,0,2),系统能否将资源分配给他?如果进程P4发出请求Request4(3,3,0),系统能否将资源分配给他?
1、数据初始化
在这里插入图片描述

2、T0时刻是否安全
在这里插入图片描述

3、如果进程P1发出请求Request1(1,0,2)
在这里插入图片描述

4、如果进程P4发出请求Request4(3,3,0)
在这里插入图片描述

http://www.lryc.cn/news/32555.html

相关文章:

  • java医院云HIS系统:融合B/S版电子病历系统 能与公卫、PACS等各类外部系统融合
  • 单线激光雷达(SICK)驱动安装及时空标定
  • Java IO流
  • LeetCode - 1653 使字符串平衡的最少删除次数
  • 【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
  • 《超导电子技术及其应用》学习日志(二)
  • 微信小程序this指向问题
  • 【报错】paddle相关报错和处理方法
  • unity的安装配置和第一个游戏-unity开学第一课
  • Elsevier上传LaTeX 修改稿踩坑
  • 秒懂算法 | 搜索基础
  • Flutter 自定义今日头条版本的组件,及底部按钮切换静态样式
  • SpringBoot学习笔记(二)配置文件
  • 09说说乐观锁和悲观锁
  • 【C++】vector的模拟实现
  • THUPC-2023 游记
  • Linux - 磁盘I/O性能评估
  • 计算机网络--网络基础
  • Gin 接口超时控制
  • 1.C#与.NET简介
  • OpenAI CTO、吴恩达夫人……AI 领域值得关注的「她」力量,个个都是女强人
  • [ 网络 ] 应用层协议 —— HTTP协议
  • Spring Boot 整合 Redisson 缓存性能客户端(2023-03-06)
  • 【C和C++】输出100内能够被13整除的数,取模判断方法
  • STC8单片机基于开源库读取DS18B20数据例程
  • 计算机专业毕业设计基于Spring Boot 学生在线考试系统
  • 【读书笔记】《深入浅出数据分析》第八章 启发法
  • 英飞凌Tricore实战系列导读
  • 做数据分析有前景吗?
  • Rust Web入门(六):服务器端web应用