首页 » 排名链接 » 操作系统课设报告(含源码)(资源进程需求量算法系统)

操作系统课设报告(含源码)(资源进程需求量算法系统)

雨夜梧桐 2024-10-23 14:53:51 0

扫一扫用手机浏览

文章目录 [+]

一、设计目的、意义和背景

操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。
本课程设计的目的综合应用我们所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。

在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。

操作系统课设报告(含源码)(资源进程需求量算法系统) 排名链接
(图片来自网络侵删)

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

二、设计思想及详细设计过程

1.银行家算法的思路

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。
若请求合法,则进行试分配。
最后对试分配后的状态调用安全性检查算法进行安全性检查。
若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。

2.银行家算法中用到的主要数据结构

int Available[10]; //可使用资源向量

int Max[10][10]; //最大需求矩阵

int Allocation[10][10]={0}; //分配矩阵

int Need[10][10]={0}; //需求矩阵

int Work[10]; //工作向量

int Finish[10]; //状态标志

int Request[10][10]; //进程申请资源向量3.银行家算法bank()

进程i发出请求申请k个j资源,Request i[j]=k

(1)检查申请量是否不大于需求量:Request i[j]<=need[i,j],若条件不符重新输入,不允许申请大于需求量。

(2)检查申请量是否小于系统中的可利用资源数量:Request i[j]<=available[i,j],若条件不符就申请失败,阻塞该进程,用goto语句跳转到重新申请资源。

(3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:

Available[i,j]= Available[i,j]- Request i[j];

Allocation[i][j]= Allocation[i][j]+ Request i[j];

need[i][j]= need[i][j]- Request i[j];

(4)试分配后,执行安全性检查,检查此次资源分配后系统是否处于安全状态。
若安全,才正式将资源分配给进程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。

(5)用do{…}while 循环语句实现输入字符y/n判断是否继续进行资源申请。

4.安全性检查算法

(1)设置两个向量:

工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available。

Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。
开始时先做Finish[i]=0;当有足够的资源分配给进程时,再令Finish[i]=1。

(2)在进程中查找符合以下条件的进程:

条件1:Finish[i]=0;

条件2:need[i][j]<=Work[j]

若找到,则执行步骤(3)否则,执行步骤(4)

(3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:

Work[j]= Work[j]+ Allocation[i][j];

Finish[i]=1;

goto step 2;

(4)如果所有的Finish[i]=1都满足,则表示系统处于安全状态,否则,处于不安全状态。

三、作品测试结果

1.示例数据(课本例题)

进程数量:5

资源种类3(三种资源以abc表示)

资源

Max

Allocation

Need

Available

进程

abc

abc

abc

abc

0

753

010

743

332

1

322

200

122

2

902

302

600

3

222

211

011

4

433

002

431

2. 运行结果(以1中的示例为例)

模拟银行家算法

请输入系统总共有的资源数:3

请输入总共有多少个进程:5

第1类资源有的资源实例:3

第2类资源有的资源实例:3

第3类资源有的资源实例:2

进程P[1]对第1类资源的最大需求量:7

进程P[1]对第2类资源的最大需求量:5

进程P[1]对第3类资源的最大需求量:3

进程P[2]对第1类资源的最大需求量:3

进程P[2]对第2类资源的最大需求量:2

进程P[2]对第3类资源的最大需求量:2

进程P[3]对第1类资源的最大需求量:9

进程P[3]对第2类资源的最大需求量:0

进程P[3]对第3类资源的最大需求量:2

进程P[4]对第1类资源的最大需求量:2

进程P[4]对第2类资源的最大需求量:2

进程P[4]对第3类资源的最大需求量:2

进程P[5]对第1类资源的最大需求量:4

进程P[5]对第2类资源的最大需求量:3

进程P[5]对第3类资源的最大需求量:3

初始化完成

当前的系统状态

目前占有量 最大需求量 尚需要量

进程 1类 2类 3类 1类 2类 3类 1类 2类 3类

P[1] 0 0 0 7 5 3 7 5 3

P[2] 0 0 0 3 2 2 3 2 2

P[3] 0 0 0 9 0 2 9 0 2

P[4] 0 0 0 2 2 2 2 2 2

P[5] 0 0 0 4 3 3 4 3 3

系统剩余资源量: 3 3 2

-------------------------------------------------------------------------------------------------------

演示计算完毕

四、问题与总结

程序基本实现了银行家算法的功能,并在其基础上考虑了输出显示的格式的美观性、输入错误要求重新输入等几个方面,尽可能的使程序完整一些。
这段程序算是最困难最复杂的一个,由于能力有限,所以在紧张的的编写和调试过程中遇到了许多的问题,通过查询资料、翻阅课本、向同学请教、多次调试等方法逐渐解决了大部分问题,编写的过程中也有比较一些算法的优劣性,找出比较好的算法,收获非常大。

第一次尝试用C语言来实现银行家算法,通过对程序的设计思路的分析,算法编写、优化、调试、错误处理等一系列的问题的逐步解决,是我在在操作系统课程学习上也有了很大的进步。

由于课本上给了这个算法的要用到的数据结构,所以数据结构的设计上并没有花费很多时间,只是具体实现考虑了很久。
也让我得到了一个启示,以后的学习中一定要多动手,看懂程序不一定写的出来,我们一定要自己动手去写一些程序。
说实话,我参考了很多网上的高手写的程序,也跟同学讨论了他们写的程序,从他们身上学到了许多东西,终于有了一些思路,写出来了一些东西感觉有很大的进步,我很高兴。

五、系统说明

1、所需的运行环境

运行平台:Windows XP

开发软件:VC++ 6.0

2、可运行的程序(系统)的具体安装及设置过程

直接点击运行

3、参考的资料

(1).《计算机操作系统》汤子瀛等 西安电子科技大学出版社

(2).《操作系统教程》孙钟秀 高等教育出版社

六、自我评价

1、难度评分:90

2、创新程度:88

3、自我评分:85

标签:

相关文章

DLL白月光,科技之光,照亮前行之路

随着科技的飞速发展,越来越多的新技术、新产品层出不穷。在这些创新中,DLL白月光无疑是一款引人注目的科技产品。它凭借独特的设计理念...

排名链接 2024-12-31 阅读1 评论0

b4it论坛,一个引领科技潮流的网络社区

随着互联网技术的飞速发展,我国网络社区逐渐成为人们获取信息、交流思想的重要平台。在众多网络社区中,b4it论坛以其独特的魅力,吸引...

排名链接 2024-12-31 阅读1 评论0

IT商业精英,引领数字化转型的先锋力量

在当今这个信息化、数字化的时代,IT商业精英正成为推动社会进步和经济发展的中坚力量。他们以卓越的技术能力、敏锐的市场洞察力和创新的...

排名链接 2024-12-31 阅读1 评论0

C51DLL,详细介绍51单片机编程利器

随着科技的不断发展,单片机在各个领域的应用越来越广泛。而51单片机因其简单、稳定、成本低等特点,成为了我国单片机教育及实际应用的主...

排名链接 2024-12-31 阅读1 评论0