银行家算法设计-操作系统课程设计报告书
时间:2025-07-08
时间:2025-07-08
东莞理工学院操作系统课程设计报告
课程设计: 课程设计:银行家算法设计目录一.设计目的: ...................................................................................................................................................... 2 二.设计内容: ...................................................................................................................................................... 2 三.设计过程 ....................................................................................................................................................... 2 实现功能 ....................................................................................................................................................... 2 添加功能 ....................................................................................................................................................... 3 设计思路 ....................................................................................................................................................... 3 算法和流程图 ............................................................................................................................................... 3 四.操作界面截图及分析 ................................................................................................................................... 6 五.设计总结: ...................................................................................................................................................... 9 附录:各程序主要函数及注释 ........................................................................................................................... 9 设计的函数 ................................................................................................................................................. 12 check 检查安全性函数 ....................................................................................................................... 12第 1 页 共 17 页
主函数 ................................................................................................................................................. 15
一.设计目的:
本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。
二.设计内容:
编制银行家算法通用程序,并检测所给状态的系统安全性。
设进程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)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
三.设计过程
实现功能
void showdata() //函数showdata,输出资源分配情况
void changdata(int k) //函数changdata,改变可用资源和已经拿到资源和
还需要的资源的值
void rstordata(int k) //函数rstordata,恢复可用资源和已经拿到资源和
还需要的资源的值
int check(int s) //函数check,检查是否安全 void bank() //银行家算法
添加功能
无
设计思路
银行家算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个
客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。
把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,,每个进程的资源需求总量不能超过系统拥有的资源总数, 银行算法进行资源分配可以避免死锁.
算法和流程图
1.银行家算法:
设进程i提出请求Request[n],则银行家算法按如下规则进行判断。 (1)如果Request[n]>Need[i,n],则报错返回。
(2)如果Request[n]>Available,则进程i进入等待资源状态,返回。 (3)假设进程i的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request
东莞理工学院操作系统课程设计报告
(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复 原状,进程等待。
开始
输入数据
提出请求 Request N Request[j]< =NEED[i][j]? Y N Request[j]<=AVAILABLE[j]? Y AVAILABLE[j]=AVAILABLE[j]-Request[j]; ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j]; NEED[k][j]=NEED[k][j]-Request[j]; 输出错误提示 输出错误提示
N check?安全性检查 输出信息: 系统不安全!!! 本次资源申请不成功
Y 输出信息:经安全性检查,系统安全, 本次分配成功 调用 rstordata(i)函数, 恢复资源数 调用 showdata()函数, 输出资源分配情况
调用 showdata()函数,输出资 …… 此处隐藏:6505字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:中医药文化进校园培训心得体会
下一篇:幕墙工程竣工资料(全套)