银行家算法课程设计

发布 2022-10-01 22:32:28 阅读 5468

课程名称: 操作系统

设计题目: 银行家算法

院系: 信息技术学院

班级: 2011级1班

设计者: 111

学号: 201111010111111

指导教师: 11111

设计时间: 12.22——12.27

昆明学院。姓名:1111院(系):信息技术学院。

专业:计算机科学与技术学号:20111101011111

任务起止日期: 12月22日—12月27日。

课程设计题目: 银行家算法。

课程设计要求及任务描述:

1:对课程设计题目进行确定。

2:对所给资料进行整理和复习。

3:查找资料,并作出实验计划拟定。

4:根据资料类容画出流程图,分析流程图是否合理。

5:根据流程图写**程序,调试程序是否正确。

6:对调试结果进行分析,整理与修改。

7:进行答辩,整理课程设计内容。

8:写出完整的课程设计报告。

工作计划及安排:

第一天:查找资料,做好初步实验计划。

第二天:完成流程图设计。

第三天:完成**的编写。

第四天:调试程序。

第五天:完成实验报告。

指导教师签字。

年月日 课程设计(大作业)成绩。

学号:2011110101111姓名:1111指导教师:1111

课程设计题目:

银行家算法模拟。

完成情况总结:

本次设计中首先要解决的问题是对所做题目的理解。简单的文字描述总是生涩难懂,像银行家算法这一问题,如果单看题目要求往往不知如何下手,更不要谈下一步的设计过程。但倘若联系实际生活中银行贷款这一现象,再来看问题时,一切开始显得清晰,再加上老师的指点,便可以把自己究竟该作何工作搞清楚。

这也给我一启示,我们要解决的诸多问题都源自生活,若要解决它,联系实际是个很不错的选择。

明白了需求,下一个难点是如何通过软件实现。我所做的银行家算法这一题目,为了防止死锁,需要进行大量的判断,这也导致了一个问题,即在进行调试时,一旦出现问题,往往难以找到问题所在,针对这一问题,我编写了一些监测行(请参看源程序),这样能比较容易的找到问题的原因所在,这也是此次课程设计中在编程方面的一个收获。

通过本次课程设计,我对软件的开发的过程有了较为深入的了解,虽然只是对一个问题的简单模拟,但麻雀虽小五脏俱全,我对相关问题的解决已经有了一定的认识,对软件技术这门课程也有了更为透彻的感悟。本次课程设计,锻炼了我分析问题和解决问题的能力,为今后相关问题的解决积累了宝贵经验,也增强了自己的耐心与自信,受益匪浅。

指导教师评语:

成绩:填表时间指导教师签名:

课程设计(大作业)报告。

一、 题目分析。

银行家算法基本原理:操作系统在每一次分配之前都要进行以下操作,判断当前的资源请求是否安全,如果安全则实施分配,否则不予分配。

第1步:操作系统对提出资源请求的进程按所请求的资源数目实施预分配,修改剩余资源数组、资源分配矩阵和剩余资源请求矩阵;

第2步:将剩余资源数组代入剩余需求矩阵中与各元素进行比较,找到可以满足其所有资源需求的某个进程将它加入到安全序列中;

第3步:将该进程运行结束后释放的资源累加到剩余资源数组中;

第4步:再重复第两步。若所有进程都能够进入安全序列,则此次分配可以实施,否则系统将会处于不安全状态,因而不能实施分配。如果不能实施分配,则将系统还原到预分配之前的状态。

2. 设计步骤和方法。

1) 设计数据结构:剩余资源数组**ailable,如**ailable [j] =k表示资源rj现有k个。

2) 设计数据结构:最大资源请求矩阵max,如max [i][j] =k表示进程pi最多可申请k个类型为rj的资源。

3) 设计数据结构:资源分配矩阵allocation,定义每个进程现在所分配的各种资源类型的数量,如allocation [i][j] =k表示进程pi现在分配了k个类型为rj的资源。

4) 设计数据结构:剩余资源请求矩阵claim,定义每个进程还需要的剩余的资源数,如claim [i][j] =k表示进程pi还需要申请k个类型rj的资源。其中,claim [i][j] =max[i][j] -allocation[i][j]。

5) 设计函数完成功能:系统内资源总数已知、各进程对各类资源最大需求数目已知、已分配资源数目已知的前提下,某进程提出各类资源的需求量时能判断状态是否安全,以决定是否予以分配。

二、 程序设计。

1. 数据结构设计。

#include <>

int **ailable[100]; 可利用资源数组。

int max[50][100]; 最大需求矩阵。

int allocation[50][100]; 分配矩阵。

int need[50][100需求矩阵。

int request[50][100]; m个进程还需要n类资源的资源量。

int finish[50];

int p[50];

int m,n;

2. 函数设计。

int safe

int i,j,l=0;

int work[100]; 可利用资源数组。

for (i=0;i work[i]=**ailable[i];

for (i=0;i finish[i]=0;

for (i=0;i

if (l==m)

int main()

int i,j,mi;

cout<<"输入进程的数目:";

cin>>m;

cout<<"输入资源的种类:";

cin>>n;

cout<<"输入每个进程最多所需的各类资源数,按照"< for (i=0;i for(j=0;jcin>>max[i][j];

cout<<"输入每个进程已经分配的各类资源数,按照"< for (i=0;i

cout<<"请输入各个资源现有的数目:";

for (i=0;i cin>>**ailable[i];

safe();

while (1)

for (i=0;i

if (safe())

cout<<"同意分配请求~~~n";

elsefor (i=0;ifinish[i]=0;

char flag标志位。

cout<<"是否再次请求分配?是请按y/y,否请按n/n";

while (1)

if (flag=='y'||flag=='y')

continue;

else break;

3. 流程图。

4. **。

#include <>

int **ailable[100]; 可利用资源数组。

int max[50][100]; 最大需求矩阵。

int allocation[50][100]; 分配矩阵。

int need[50][100需求矩阵。

int request[50][100]; m个进程还需要n类资源的资源量。

int finish[50];

int p[50];

int m,n;

int safe

int i,j,l=0;

银行家算法课程设计

信息与计算科学。操作系统原理。课程设计报告。题目 银行家算法程序设计。班级 姓名 专业 银行家算法程序设计。1.绪论 2 2.需求分析 2 2.1 功能需求 2 2.2 数据需求 2 3.总体设计 2 3.1 功能模块设 2 3.2 系统设计方案 3 3.3 开发工具 4 4.详细设计 4 4.1 ...

银行家算法 课程设计

课程设计报告。操作系统原理。银行家算法。银行家算法。一 银行家算法原理。银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全状态 如果存在一个由系统中所有进程构成的安全序列p1,pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态 不...

银行家算法课程设计

银行家算法的模拟。1 实验目的。银行家算法是避免死锁的一种重要方法。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁 产生死锁的必要条件 安全状态等重要概念,并掌握避免死锁的具体实施方法。2 任务及要求。编程序模拟银行家算法,要求能体现算法的全过程。3 算法及数据结构。3.1 算法的...