银行家算法报告.docx





《银行家算法报告.docx》由会员分享,可在线阅读,更多相关《银行家算法报告.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、银行家算法报告银行家算法流程图图4. 2银行家算法流程图4.2系统的设计方法根据设计任务书的要求,画出程序设计流程图,确定程序的功能,把整个 程序根据功能要求分解为各个子程序,利用TC语言分编写程序代码,然后进行 上机调试、修改、进行连接,测试,写出设计总结报告。主要函数的核心代码:1 .进行初始化输入的函数2 .打印输出的函数3 .利用安全性算法进行检测的函数4 .进行资源分配的函数5 .利用行家算法进行判定的函数void mainenter ()主要的输入部分代码printf(请输入系统总共有的资源数:); scanf (%d, &n);printf (请输入总共有多少个进程:); sca
2、nf(%d”, &m);for (i=l;i=n;i+)printf (第%d类资源有的资源实例:,i): scanf(%d”, &Availablei);for (i=l; i=m; i+)for(j=l;j=n;j+)printf (进程P%d对第%d类资源的最大需 求量:,i,j);scanf (z/%dz,, &Max i j);Needi j=Maxi j;5、模块划分第一部分:银行家算法(扫描)1 .如果Request=Need,则转向2;否则,出错2 .如果Request=Available,则转向3,否则等待3 .系统试探分配请求的资源给进程4 .系统执行安全性算法第二部分:安
3、全性算法1 .设置两个向量(1) .工作向量:Work=Available(表示系统可提供给进程继续运行所需要的 各类资源数目)(2) . Finish:表示系统是否有足够资源分配给进程(True:有;False:没有). 初始化为False2 .若Finishi=False&Need 和 mainenter()本身 void main() int k,h=l; while(h) system(cls); ( printfCW欢迎使用本程序/);printf (nn 1:输入系统的资源数、申请进程数、每个类资源的实例数);printffXn 2:输入进程的资源申请);printf Cn 3:输
4、出系统状态)printf Cn 4:退出程序“);printf(nn please choose );scanf&k);) switch(k) (case 1:mainenter();break;case 2:mainrequest(); break;case 3:mainprint();break;case 4:h=0;break;)system(pause);)system(cls)printf (nn谢谢使用 n);printf(nn See you next time!nnn);5. 2安全性算法流程图图5.1安全性算法流程图6运行与测试结果6.1运行程序成功之后的欢迎界面c *C:P
5、rogra Fileslicrosoft Visual StudiolyProjects44Debug44.exe*但X欢迎使用本程序1:输入系统的资源数、申请进程数、2:3:4:数迂黑序 例出 的退 寓出 个人二 一 一please choose图6. 1欢迎界面6. 2初始化程序申请进程数、U输入系统的资源数、2:3:4:欢迎使用本程序c *C:Progra Fileslicrosoft Visual StudiolyProjects44Debug44. exe图6. 2初始化界面350数157数罢序例出的豪退寓出个人二篇二量求需大sZ内向工黑隰馨sewmclap.*50图6. 3输入数据
6、-l*量量量量量量量量量量量量量量量市里里里WWW里W里里里里里里两猾PLlplplp2p2p2p3p3p3p4p4p4p5p5p5以聚联摩濮雪皆皆皆皆皆皆皆皆皆皆皆好皆P请请进进进进进进进进进进进进进进c、 *C:Progra FilesMicrosoft Visual StudioMyProjects44Debug44. exe数仝罢序例出的退寓出SS-个人二S-欢迎使用本程序1:输入系统的资源数、申请进程数、2:3:4:010量量量请用请tninin的的的1源源源:ws社J芯工23s知?.fiHrTS.源1113菇plplpl抬e等进进as入入入入lelfe按P请请请请$Sa请图6. 4
7、申请进程1欢迎使用本程序数也罢序 例出 的纂退 寓出 正入二 I-U输入系统的资源数、2:3:4:please choose 22 0 0 量.*. 请请请 廿WB靖施入里道资源的嘤:2 请输入避野对工委资源的 请%入进程P2龙一2佥出八 请输入进程P 2对3 $ 1 $ 2 $ 3 $ 4 $5 5 safe static请按任意键继续.图6. 5申请进程2c( *C:Progra FilesMicrosoft Visual StudioMyProjects44Debug44. exe申请进程数、Wii退出欢迎使用本程序U输入系统的资源数、2:3:4:302量量量请请请的的的13H5123$
8、2的笄一源313OO资ppe等进进aslAJAJAJA4$3$2P青青青青淳图6. 6申请进程3欢迎使用本程序数M更心序出的豪退需出正入二I-工:输入系统的资源数、申请进程数、2:3:4:002量量量请请wain5H5井123$2的eJ5S洸555oO资PLPLP$e9进进Sas入入人入$P青青青青冶图6. 7申请进程56. 3界面显示每个类泊厚的 端入进毒的雪 输出系申请进程数、工:输入系统的资源数、2:3:4:!进程申请的资源数多于它自己申报的最大量!进程申请的资源数多于它自己申报的最大量欢迎使用本程序图6. 8界面显7Fc *C:Progra Fileslicrosoft Visual
9、StudiolyProjects44Debug44. exe* X色数重心序例出2一源111OO资pp进as入入入P青青青量量的的1源蜴-l7-a.Ta,-的unsafe static申请进程数、数也罢序 例出 的退 寓出 个人二 篝二量量 M电请 的的 3原原 氟 a.-a. 1 2 2的 e泉J J3 3 OO资pp as入入入 p请请请6.4出错界面图c *C:Progra Fileslicrosoft Visual StudiolyProjects44Debug44. exe欢迎使用本程序广输入系统的资源数、2:3:4:出错!进程申请的资源数多于它自己申报的最大量unsafe stat
10、ic请按任意键继续.图6. 9出错界面6. 5程序运行结束c、 *C:Progra FilesMicrosoft Visual StudiolyProjects44Debug44. exe*谢谢使用See you next time?Press any key to cont inue图6.10程序结束画面金陵科我学院锦福毂计想告题 目银行家算法程序设计课 程名称操作系统课程设计院 专 班 学 学部名称信息技术学院业计算机科学与技术OOOOOOOOOOOOOOOOOOOOOOO生姓名 。号OOOOOOOOOO课程设计地点。课程设计学时20指导教师金陵科技学院教务处制7、总结在本程序代码中,银行
11、家算法用数组函数来实现。首先,输入欲申请资源 的进程以及其所申请的资源数,存放在Request数组中。然后,判断进程请求 的资源数是否大于其所需的资源数,若大于则报错并返回,若不大于则继续判 断它是否大于系统在此时刻可利用的资源数,同样,如果大于则报错并反回, 如果不大于则调用函数来进行预分配,之后再调用安全型算法safty检查。最后,无论此次分配是否成功,我们都可以选择继续分配或者退出系统。在银行家算法这个系统之中,所采用的数据结构应是最基本的部分。银行 家算法的数据结构我们采用了一维数组与二维数组来存储,比如最大需求量Max口口、已分配资源数Allocation口口、仍需求资源数Need口
12、口、以及系统可利用的资源数、申请各类资源等数组。数据结构虽然重要但却只是基础,而 最主要的用以实现系统功能的应该有两个部分,一是用银行家算法来判断,二 是用安全性算法来检测系统的安全性。除此之外,在程序当中,我们也得强调 一下对输入的合法性的判断。比如,我们输入的欲申请资源的进程号没有在系 统已存在的进程当中,或者进程号定义为整型,但是却错输成字母等情况,我 们需要对这些情况进行判断,让程序报错返回而并非因错误而中断。这样的情况处理起来比较麻烦,相当于对每次输入针对各种不同的情况都 得做判断。我也没有涵盖全部的输入,仅仅只是对输入的进程号不在已存在进 程当中、以及输入的操作选择不存在两种情况分
13、别作了判断,并且针对第二种 情况设定了五次输入错误的话系统关闭的功能。而因为对于某些一一比如进程 号一一本来设定就是整型,因此对输入的是字母的判别因比较复杂而未能加上。通过对本次银行家算法的程序进行修改对其结构更加明确。课程设计的心得体会操作系统的基本特征就是并发和共享,系统允许多个进程并发执行,并且共享 系统的软、硬件资源。为了最大限度的利用计算机资源,操作系统应采用动态 分配的策略,但是这样就容易因资源不足、分配不当而引起“死锁”。本次课 程设计就是用银行家算法来避免“死锁”。该算法就是一在程序进行编写之前,先对程序的要求进行分析,弄清楚程序所需 要的功能,然后将每个功能分成一个功能模块即
14、调用函数来实现,无需过多的画蛇添 足。编写这个简易的银行家算法让我知道了在资源一定的条件下为了让多个进程都能 使用资源完成任务,避免死锁的产生可以从一开始就对系统进行安全性检查来判断是否将资源分配 给正在请求的进程。但是银行家算法会加大系统的开销。在资源分配过程,使分配序 列不会产生死锁。此算法的中心思想就是,每次分配后总存在着一个进程,如果让它 单独的运行下去,一周的操作系统课程设计,我学到了很多课本上没有的知识。想要 完成模拟银行家算法的c语言程序,首先就是要彻底熟悉算法,了解算法的基本原理, 才能开始着手程序设计在程序设计设计过程中,遇到了一些困难,通过向同学询问, 翻阅资料等问题被一一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 报告

限制150内