1 / 28
文档名称:

操作系统课程设计——银行家算法的模拟实现.doc

格式:doc   页数:28页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统课程设计——银行家算法的模拟实现.doc

上传人:799474576 2013/11/5 文件大小:0 KB

下载得到文件列表

操作系统课程设计——银行家算法的模拟实现.doc

文档介绍

文档介绍:信息科学与工程学院
课程设计任务书
题目: 银行家算法的模拟实现
学号:
姓名:
专业:
课程:
指导教师:

完成时间: 2012年5月----2012年6月
信息科学与工程学院制
2012 年 6 月 20 日
目录
1. 课设简介…………………………………………………2
2. 实验原理分析……………………………………………2
3. 程序结构分析……………………………………………4
4. 数据结构分析……………………………………………6
…………………………………9
6. 程序运行结果分析………………………………………20
7. 心得体会…………………………………………………30
8. 参考文献…………………………………………………31
银行家算法的模拟实现
1 课设简介:
课程设计题目
银行家算法的模拟实现
课程设计目的
,了解为什么要进行死锁的避免。
,了解算法的执行过程,加深对银行家算法的理解。
课程设计内容
设计一个n 个并发进程共享m 个系统资源的系统。进程可动态申请资源和释放资源,系统按各进程的申请动态的分配资源。要求采用银行家算法实现。
2 实验原理分析:
整个银行家算法的思路
先对用户提出的请求进行合法性检查,再进行预分配,利用安全性检查算法进行安全性检查。
算法用到的主要数据结构和C语言说明。
INT AVAILABLE[M] M为资源的类型。
INT MAX[N][M] N为进程的数量。
INT ALLOCATION[N][M]
INT NEED[N][N]
Request[x];
int Work[x];
int Finish[y]; //是否有足够的资源分配给进程,0为否,非0为是
银行家算法主程序
。调用函数 chushihua(),输入进程数量,资源种类,各资源可用数量,各进程已分配、最大需求各资源数量等
()检查当前资源分配状态。
()函数,输入用户的请求三元组(I,J,K),为进程I申请K个J类资源。
,条件是K<=NEED[I,J]。如果条件不符则提示重新输入,即不允许索取大于需求量
,条件是K<=AVALIABLE[I,J]。如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请(使用goto语句跳转)
,语句如下:
AVALIBLE[I][J]= AVALIBLE[I][J]-K;
ALLOCATION[I][J]= ALLOCATION[I][J]+K;
NEED[I][J]=NEED[I][J]-K;
(safe()函数)进行检查,如果检查不安全,则进行回收,进程资源申请失败进入等待。否则不用回收,并检查该进程是否已获得所有需要资源,如是则进行其拥有资源释放,语句如下:
Available[j]=Available[j]+Allocation[k][j];
Allocation[k][j]=0;
do{…}while 循环输入字符Y/N判断是否继续进行资源申请。
安全性检查算法(safe()函数)
:
FINISH[N]记录进程模拟执行的结束状态,初值为0,如果可以模拟执行结束,则可设为1。
WORK[M]记录模拟执行中资源的回收情况,初值为AVAILABLE[M]的值。

条件1:FINISH[I]=0
条件2:NEED[I][J]〈=WORK[J]
,语句如下:
FINISH[I]=1
WORK[J]=WORK[J]+ALLOCATION[I][J];
,则根据不同地方的调用情况进行相应判断处理。
3 程序结构分析:
程序流程图
程序模块划分
本程序共有以下六个模块:
、字符判断模块:判断输入的字符是否为数字,如果不是则提示出错并重新输入,主要处理输入为