1、 课 程 设 计 报 告课 程 设 计 报 告 操作系统原理操作系统原理 银行家算法 专业专业 软件工程 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 完成日期完成日期 2011.06.24 银行家算法银行家算法 一、银行家算法原理一、银行家算法原理 银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须 先解释操作系统安全状态和不安全状态。 安全状态:如果存在一个由系统中所有进程构成的安全序列 P1,Pn, 则系统处于安全状态。安全状态一定是没有死锁发生。 不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。那么什么 是安全序列呢? 安全序列:一个进程序列P1,P
2、n是安全的,如果对于每一个进程 Pi(1 in) , 它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i;/输入须申请的资源号 coutRequestj;/输入需要申请的资源 for (j=0;jNeedij)/判断申请是否大于需求,若大于则出错 coutn; flag=N; N=N+n; for(int i=0;inameflag; coutming; for(i=0;iMaxflagi; Needflagi=Maxflagi-Allocationflagi; showdata(); safe(); int main()/主函数 int i,j,number,choice,
3、m,n,flag; char ming; coutn; N=n; for(i=0;iming; namei=ming; coutm; M=m; coutMaxij; do flag=0; coutAllocationij; if(AllocationijMaxij) flag=1; Needij=Maxij-Allocationij; if(flag) coutchoice; switch(choice) case 1: addresources();break; case 2: delresources();break; case 3: share();break; case 4: addp
4、rocess();break; default: cout“请正确选择功能号(0-5)!“endl;break; return 1; 五、运行结果五、运行结果 六、六、设计体会设计体会 经过几天的自己动手练习,对操作系统的掌握又进了一步,收获了很多课堂 上和书上未出现过的或老师未讲到的一些知识。 在完成实验的过程中,进行了反 复的修改和调试,这次实验,让我基本上明白了银行家算法的基本原理,加深了 对课堂上知识的理解,也懂得了如何让银行家算法实现,但编程功底的原因使程 序很是繁琐。 这次的设计数据是通过一道实际的题目来体现银行家算法避免死锁的问题, 先用银行家算法给其中一个进程分配资源, 看它所请求的资源是否大于它的需求 量,才和系统所能给的资源相比较.让进程形成一个安全队列,看系统是否安全. 再利用安全性算法检查此时系统是否安全。 要做一个课程设计,如果知识面只是