文档详情

银行家算法设计-操作系统课程设计报告书.doc

发布:2024-12-23约9.1千字共17页下载文档
文本预览下载声明

课程设计:银行家算法设计

目录

TOC\o1-3\h\z\u一.设计目的: 1

二.设计内容: 1

三.设计过程 2

实现功能 2

添加功能 2

设计思路 2

算法和流程图 2

四.操作界面截图及分析 4

五.设计总结: 7

附录:各程序主要函数及注释 7

设计的函数 9

check检查平安性函数 9

主函数 11

一.设计目的:

本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和防止死锁地发生。

二.设计内容:

编制银行家算法通用程序,并检测所给状态的系统平安性。

设进程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)系统执行平安性检查,如平安,那么分配成立;否那么试探险性分配作废,系统恢复原状,进程等待。

三.设计过程

实现功能

voidshowdata()//函数showdata,输出资源分配情况

voidchangdata(intk)//函数changdata,改变可用资源和已经拿到资源和还需要的资源的值

voidrstordata(intk)//函数rstordata,恢复可用资源和已经拿到资源和

还需要的资源的值

intcheck(ints)//函数check,检查是否平安

voidbank()//银行家算法

添加功能

设计思路

银行家算法,顾名思义是来源于银行的借贷业务,一定数量的本金要应多个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,那么进程都无法继续执行下去的死锁现象。

把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块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

Request[j]=NEED[i][j]?

Request[j]=AVAILABLE[j]?

AVAILABLE[j]=AVAILABLE[j]-Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];

NEED[k][j]=NEED[k][j]-Request[j];

check?平安性检查

调用showdata()函数,输出资源分配情况

调用rstordata(i)函数,恢复资源数

调用showdata()函数,输出资源分配情况

输出信息:经平安性检查,系统平安,本次分配成功

输出信息:系统不平安!!!本次资源申请不成功

输出错误提示

输出错误提示

是否继续演示?

N

YN

结束

N

YN

YN

YN

N

N

2.平安性检查

(1)设置两个工作向量Work=Available;Finish[M]=False

(2)从进程集合中找到一个满足下述条件的进程,

Finish[

显示全部
相似文档