《银行家算法《操作系统》课程设计报告》由会员分享,可在线阅读,更多相关《银行家算法《操作系统》课程设计报告(3页珍藏版)》请在金锄头文库上搜索。
1、银行家算法操作系统课程设计报告操作系统课程设计报告 课题: 银行家算法 专业 计算机科学与技术 学生姓名 班级 计算机 学号 指导教师 信息工程学院 一、实验要求和实验目的 实验目的:本课程设计是学生学习完操作系统原理课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 实验要求:从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同;设计完成后,将所完成的工
2、作交由指导教师检查;要求写出一份详细的设计报告。 二、设计内容: 课题一、编制银行家算法通用程序,并检测所给状态的系统安全性。 1)银行家算法中的数据结构: 可利用资向量Available。这是一个含有m个 元素的数组,其中的每一个元素代表一类可利用的资数目,其初始值是系统中所配置的该类全部可用资的数目,其数值随该类资的分配和回收而动态地改变。Availablej=K,则表示系统中现有Rj 类资K个。 最大需求矩阵Ma_。这是一个n_m的矩阵,它定义了系统中n个进程中的每一个进程对m类资的最大需求。如果Ma_i,j=K,则表示进程i需要Rj类资的最大数目为K。 1.分配矩阵Allocation
3、。这也是一个n_m的矩阵,它定义了系统中每一类资料当前已分配给没一进程的资数。如果Allocationi,j=K,则表示进程i当前已分得Rj类资的数目为K。需求矩阵Need。这也是一个n_m的矩阵,用以表示每一个进程尚需的各类资数。如果Needi,j=K,则表示进程i还需要Rj类资K个,方能完成其任务。 上述三个矩阵存在如下关系: Needi,j= Ma_i,j- Allocationi,j 2)银行家算法 设Requesti 是进程Pi的请求向量,如果Requesti,j=K,表示进程Pi需要K个Rj类型的资。当Pi发出资请求后,系统按下述步骤进行检查:如果Requesti,j #inclu
4、de #include #include #include #include const int MA_P=20; const int MA_A=10; /定义A类资的数量 const int MA_B=5; const int MA_C=7; typedef struct node int a; int b; int c; int remain_a; int remain_b; int remain_c; bank; typedef struct node1 char name20; int a; int b; int c; int need_a; int need_b; int need_
5、c; process; bank banker; process processesMA_P; int quantity; /初始化函数 void initial int i; banker.a=MA_A; banker.b=MA_B; banker.c=MA_C; banker.remain_a=MA_A; banker.remain_b=MA_B; banker.remain_c=MA_C; for(i=0;iname; for(i=0;ineed_a; coutneed_b; coutneed_c; t=1; coutbanker.remain_a) coutbanker.remain_
6、b) coutbanker.remain_c) coutname; p=-1; for(i=0;ia; coutb; coutc; flag=1; if(abanker.remain_a)|(aprocessesp.need_a-processesp.a) coutbanker.remain_b)|(bprocessesp.need_b-processesp.b) coutbanker.remain_c)|(cprocessesp.need_c-processesp.c) coutname; p=-1; for(i=0;i0) for(i=0;ichioce; switch(chioce) c
7、ase 1: add; break; case 2: bid; break; case 3: finished; break; case 4: view; break; case 0: flag=0; break; default: cout“选择错误“endlendl; 六、使用说明 运行环境C-FREE4.0,新建任务。将编制好的代码输入此运行环境中。 按F5:出现如上图所示窗口。按照提示,新建一个作业:wujun。为作业分配资,A:3;B:4;C:5。输入2,为作业分配资。三种资的数量分配分别为:A:3;B:5;C:4。输入4,查看资情况。出现出错提示,所申请的B类资超过银行家所剩B类资或作业申请资失败。输入0,退出系统。 重新加入一个作业:wujun1.并为作业分配资分别为A:3;B:3;C:3,为该作业分配资A:3;B:2;C:2.输入4查看资情况。 显示输出,银行家算法所剩资(剩余资、总共资)。 七、实验心得 八、【参考文献】:p 汤子瀛等.计算机操作系统.西安电子科技大学出版社.20_1年5月 蒋静 徐志伟.操作系统原理技术与编程M.北京:机械工业出版社,20_4 第 3 页 共 3 页