操作系统实验2--银行家算法
更新时间:2023-03-14 05:25:02 阅读量: 教育文库 文档下载
- 操作系统的主要功能有哪些推荐度:
- 相关推荐
共享资源分配与银行家算法
一、问题描述
本题主要内容是模拟实现资源分配。银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。
二、基本要求
具体用银行家算法实现资源分配。要求如下:
(1) 设计一个P(例如P=3)个并发进程共享J(例如J=4)类不同资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
(2) 设计用银行家算法 ,实现资源分配,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。
(3) 确定一组各进程依次申请资源数的序列,输出运行结果。
三、方案设计及开发过程
1、银行家分配算法 银行家分配算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,每个进程都无法继续执行下去的死锁现象。
把每个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的资源总数,银行算法进行资源分配可以避免死锁。
2、算法描述 银行家算法:
设进程I提出请求Request[N],则银行家算法按如下规则进行判断。 (1) 如果Request[N]<= Need [I, N],则转(2);否则,出错。 (2) 如果Request[N]<= Available,则转(3);否则,出错。 (3) 系统试探分配资源,修改相关数据:
Available = Available -Request Allocation = Allocation +Request Need= Need - Request
(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
3、安全性检查
(1) 设置两个工作向量Work= Available;Finish[M]=False (2) 从进程集合中找到一个满足下述条件的进程
Finish[i]=False Need <=Work
如找到,执行(3);否则,执行(4)
(3) 设进程获得资源,可顺利执行,直至完成,从而释放资源
Work=Work+ Allocation
Finish=True Go To 2
(4) 如所有的进程Finish[M]=true,则表示安全;否则系统不安全 4、数据结构
假设有M个进程N类资源,则有如下数据结构:
#define W 10 #define R 20
int M ; //总进程数 int N ; //资源种类
int All_Resource[W]; //各种资源的数目总和
int Max[W][R]; //M个进程对N类资源最大资源需求量 int A Available [R]; //系统可用资源数
int Allocation [W][R]; //M个进程已经得到N类资源的资源量 int Need [W][R]; //M个进程还需要N类资源的资源量 int Request[R]; //请求资源个数
四、实验要求
完成实验内容并写出实验报告,报告应具有以下内容: 1、实验目的。 2、实验内容。
3、程序及运行情况。
4、实验过程中出现的问题及解决方法。
// Bank.cpp : Defines the entry point for the console application. //
#include \#include \
#define W 5 #define R 3
int M ; //总进程数 int N ; //资源种类
int All_Resource[W]; //各种资源的数目总和
int Max[W][R]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; //M个进程对N类资源最大资源需求量
int Available[R]={3,3,2}; //系统可用资源数
int Allocation[W][R]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; //M个进程已经得到N类资源的资源量
int Need [W][R]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; //M个进程还需要N类资源的资源量
int Request[R]; //请求资源个数 int safe[W+1]={-1,-1,-1,-1,-1,-1};
bool judge(int apply[],int now)//判断是否可以申请 { int i=0,j=0; for(i=0;i
bool check()//检测是否有安全序列 { int i=0,j=0,finish=0,flag=0,pass=0,s=0; int Available_back[R],Allocation_back[W][R],f[W]={0,0,0,0,0}; for(i=0;i
safe[s]=i; f[i]=1; s++; finish++; //写入安全序列 for(j=0;j \\t%d %d %d\ } } if(flag==0&&finish!=W) return false; } safe[s]=-1; return true; } void main() { int i=0,j=0,apply[R]={0,0,0},now=1;//now的值为0-4 for(i=0;i } else { for(i=0;i
正在阅读:
操作系统实验2--银行家算法03-14
人大网大计算机应用基础试题答案资料05-20
国外立体车库的发展现状 - 图文12-09
中级信号工题库03-15
档案管理学04-24
永城钢厂高炉喷煤系统施工组织设计03-13
《辉煌中国》观影心得04-02
《血战湘江》的观后感04-20
9年来买足彩的技巧和个人心得04-23
一份18年间文理状元名单11-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 银行家
- 算法
- 操作系统
- 实验
- 考研数学公式手册
- 化学教学论试卷AB(含答案)
- 2018年最新语文中考文学、文化常识专题复习及答案
- 宜宾五粮液股份有限公司财务分析
- 六年级学生英语学情分析模板
- 第1节 曲线运动
- 015-武汉工程大学-07-胡端平-科学思维、科学方法在概率统计课程中的应用与实践
- 心理健康常识
- 浅析短波通讯的应用和发展
- 《6和7的加减法》教学设计 一数上
- 无锡市惠山区2011-2012学年第一学期五校联考九年级数学反馈练习卷
- 数据库应用系统设计-复习资料-2014年春完整版
- 七年级下册历史期末考试试题
- 新北师大版三年级上册数学期末试卷
- 2014年山东干部学习平台(齐鲁先锋)答案80学时
- 2012年公务员考试申论:公共基础知识精髓要点总结(2)
- 消毒供应室岗位职责
- 基层党支部的日常工作和规范
- 设计说明书 封皮及格式最新
- 一年级数学考试试卷2 - 图文