《《操作系统》word版》由会员分享,可在线阅读,更多相关《《操作系统》word版(16页珍藏版)》请在金锄头文库上搜索。
1、课程设计(论文)任务书 信息 学院 计算机专业 2 班 一、课程设计(论文)题目资源管理系统的设计与实现-银行家算法实现 二、课程设计(论文)工作自 2008 年 6 月 23 日起至 2008 年 6 月 28 日止。三、课程设计(论文) 地点: 5#204 四、课程设计(论文)内容要求:1本课程设计的目的为配合计算机操作系统课程的教学,通过模拟操作系统原理的实现,使学生能更深刻地领会操作系统工作原理和操作系统实现方法的理解,并可练习程序设计, 特开设此课程设计。2课程设计的任务及要求1)基本要求:用VC编程实现一个资源管理系统,该系统必须包括资源的添加、删除和 修改等功能,并且允许其它进程
2、来申请这里的资源,任何一个进程来申请资源时,必须先登记该进程对资源的申请要求,然后由系统检查当前资源的状况,每个进程申请资源的情况必须进行记录,并作为课程设计报告的一部分数并用银行家算法和安全性算法来检查是否允许分配资源给进程。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面等。3)课程设计论文编写要求(1)要按照书稿的规格打印与写课程设计论文 (2)论文包括目录、功能描述、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (3)课程设计论文装订按学校的统一要求完成4)答辩与评分标准: (1)考勤与学习态度:20分; (2)设
3、计思路:20分;(3)代码实现:20分;(4)调试与分析:20分;(5)回答问题:10分;(6)论文规范性:10分。5)参考文献 汤子瀛、哲凤屏等编著计算机操作系统,西安电子科技大学出版社 严蔚敏、吴伟民等编著数据结构(C语言版),清华大学出版社 谭浩强编著C程序设计,清华大学出版社6)课程设计进度安排内容 天数地点 收集资料、准备 1天 5#204系统实现 1天 5#204撰写论文 1天 5#204学生签名: 2008年 6 月 28 日课程设计(论文)评审意见(1)考勤与态度 (20分):优()、良()、中()、一般()、差(); (2)设计思路(20分):优()、良()、中()、一般()
4、、差(); (3)代码实现(20分):优()、良()、中()、一般()、差();(4)调试与分析(20分):优()、良()、中()、一般()、差();(5)回答问题(10分):优()、良()、中()、一般()、差();(6)论文规范性 (10分):优()、良()、中()、一般()、差();评阅人: 职称: 2008 年6月30日目录绪论- 1 -一、功能描述- 2 -二、设计思路- 3 -三、具体实现- 4 -四、运行调试及结果分析- 6 -五、设计体会与小结- 7 -六、参考文献- 8 -七、附录(核心代码)- 9 -第- 12 -页 绪论资源管理系统的设计与实现银行家算法实现准备工作:(1
5、).了解进程产生死锁的原因,了解为什么要进行死锁的避免。(2).掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家算法的理解。一、 功能描述用VC编程实现一个资源管理系统,该系统必须包括资源的添加、删除和修改等功能,并且允许其它进程来申请这里的资源,任何一个进程来申请资源时,必须先登记该进程对资源的申请要求,然后由系统检查当前资源的状况,并用银行家算法和安全性算法来检查是否允许分配资源给进程。 每个进程申请资源的情况必须进行记录,并作为课程设计报告的一部分数据。二、 设计思路(1).初始化由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOC
6、ATION、需求矩阵NEED赋值。(2).银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程cusneed提出请求REQUEST i,则银行家算法按如下规则进行判断。1).如果REQUESTcusneedi=NEEDcusneedi,则转(2);否则,出错。2).如果REQUESTcusneedi=AVAILABLEcusneedi,则转(3);否则,出
7、错。3).系统试探分配资源,修改相关数据: AVAILABLEi-=REQUESTcusneedi; ALLOCATIONcusneedi+=REQUESTcusneedi; NEEDcusneedi-=REQUESTcusneedi;4).系统执行安全性检查:如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待(3).安全性检查算法1).设置两个工作向量Work=AVAILABLE;FINISH2).从进程集合中找到一个满足下述条件的进程,FINISH=false;NEED=Work;如找到,执行(3);否则,执行(4)3).设进程获得资源,可顺利执行,直至完成,从而释放资源。W
8、ork+=ALLOCATION;Finish=true;GOTO 24).如所有的进程Finish=true,则表示安全;否则系统不安全。三、 具体实现1. 数据结构定义:struct psource int i; int need10; int allo10; int avai10; ;/结构体psourse,表示进程资源分配情况2.输入资源分配表:for(k=0;kj;k+)printf(P%dt,k);for(l=0;li;l+)scanf(%d,&pk.needl);for(l=0;li;l+)scanf(%d,&pk.allol);for(l=0;li;l+)scanf(%d,&pk
9、.avail);利用for循环,逐个按进程号资源号输入资源分配情况。3.控制台输出布局:void ptip(int i);/资源数据输入时布局void ptip2(int i);/确认数据布局void ptip3(int i);/输出安全性检查布局程序流程图:四、 运行调试及结果分析运行截图:注意Available输入只需要输入一个,后面输入0即可。运行能判定是否处于安全状态和得出安全序列。五、 设计体会与小结经过一周的课程设计,我和同学一起合作做了个银行家算法模拟系统,这次课设让我对书上银行家算法以及死锁预防等知识了解得更深了。写算法过程中银行家算法每一步的具体算法思想和实现步骤让我对于银行
10、家算法这个书上的重要知识有了新的认识。由于时间匆忙,程序在安全性算法上实现得比较详细,而前几步并未来得及做。最后感谢老师这个学期的指导,也感谢同组同学陶铖在课设中给予我的帮助。六、 参考文献1 汤子瀛、哲凤屏等编著计算机操作系统,西安电子科技大学出版社,2001.82 严蔚敏、吴伟民等编著数据结构(C语言版),清华大学出版社,1997.43 谭浩强编著C程序设计,清华大学出版社,2005.7附录(核心代码)yinhangjia.C:#include struct psourceint i;int need10;int allo10;int avai10;struct flagint falln
11、;int fsign;struct psource p10;struct flag f10;main()int i,j,k,l,s10=A,B,C,D,E,F,G,H,I,J,asource10;char flag=t;void ptip(int i);void ptip2(int i);void ptip3(int i);printf(请输入进程数S(num):t资源数P(num):n);scanf(%d%d,&i,&j);printf(进程数:%dt资源数:%dn,i,j);ptip(i);for(k=0;kj;k+)printf(P%dt,k);for(l=0;li;l+)scanf(%
12、d,&pk.needl);for(l=0;li;l+)scanf(%d,&pk.allol);for(l=0;li;l+)scanf(%d,&pk.avail);printf(n);ptip2(i);for(k=0;kj;k+)printf(P%d ,k);for(l=0;li;l+)printf(%d ,pk.needl);if( pk.needl9 ) printf( );for(l=0;li;l+)printf(%d ,pk.allol);if( pk.allol9 ) printf( );for(l=0;li;l+)printf(%d ,pk.avail);if( pk.avail9 ) printf( );printf(n);for(k=0;kj;k+)int t=0,c=0; for(l=0;li;l+) t+=pk.needl; fk.falln=t; f