4 详细设计
该算法中用到了较多的数据,基于程序的易实现和较好的结构,决定采用结构链表,以进程为单位(结点)。 (2)数据结构设计
typedef struct my_process {
int num; //进程标号
int Max[M]; // 表示某个进程对某类资源的最大需求 int Allocation[M]; // 表示某个进程已分配到某类资源的个数 int Need[M]; // 表示某个进程尚需要某类资源的个数 struct my_process* next; //指向下一个结点(进程) }process;
int Available[M]={0};// 其中每一个数组元素表示当前某类资源的可用数
目,初始化为系统所提供的资源的最大数目
int Request[M]={0}; //请求向量
int Record_work[N][M]={0};//存储当前work[]的值,以便输出 int Safety[N]={0}; //存储安全序列,以便后面排序
(3)算法整体设计与调用
主函数void main()主要分四大块:
(1)首先需要初始化Init_process(process **head,int m,int* count),存储系统当前状态信息;
(2)调用安全算法Safety_Algorithm,检测当前系统安全状态,若安全则进行下一步,否则打印相关信息,程序退出。
(3) 调用试分配函数Attempt_Allocation,进行试分配,若试分配成功,修改相关数据结构,打印当前系统资源分布图,转下一步,否则,打印提示信息,接收其他请求向量。
(4) 再次调用安全性算法,检查试分配以后的系统安全性,若安全打印安全性序列和当前系统资源分布图,并进入新一轮的执行。否则之前的试分配作废,恢复试分配之前的数据结构,输出相关提示信息,接收下一个进程请求 。
结束语
通过本次论文设计我了解到银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。通过本次课程设计,我对软件的开发的过程有了较为深入的了解,虽然只是对一个问题的简单模拟,但麻雀虽小五脏俱全,我对相关问题的解决已经有了一定的认识,对软件技术这门课程也有了更为透彻的感悟。本次课程设计,锻炼了我分析问题和解决问题的能力,为今后相关问题的解决积累了宝贵经验,也增强了自己的耐心与自信,受益匪浅。
参考文献
[1] 严蔚敏,吴伟民.数据结构. 北京:清华大学出版社,2006.
4 详细设计
[2] 汤小丹 梁红兵 哲凤屏 汤子嬴, 计算机操作系统(第三版)西安电子科技大学出版社;
[3] 汤子瀛 梁红兵 哲凤屏 汤子灜.《计算机操作系统(第三版)》.西安西安电子科技大学出版社2007.5
相关推荐: