操作系统课程设计报告
题目:银行家算法设计
学 院: 专 业: 班 级: 学 生: 学 号: 指导教师: 1
摘 要
银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于安全状态,则可以为申请资源的进程分配资源,如果不是安全状态,则不能为申请资源的进程分配资源。
银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,·如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。
论文首先对算法的设计从总体上进行了分析,然后分析各个细节,再对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行调试和测试,最后进行组装测试及系统测试,使其成为一个可以用来判断系统安全状态的程序。
2
银行家算法的原理、思想及小结
1,银行家算法的思路
先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。也可以释放进程所占用的一些资源再进行分配资源、安全性检查。
2, 银行家算法的数据结构
主要用到的数据结构:
最大需求矩阵max[][],为n*m的矩阵,定义了n个进程的每个进程对m类资源的最大需求。
已分配矩阵allocation[][],为n*m的矩阵,定义了系统中每一类资源当前分配给每一进程的资源数。
…… …… 余下全文