1、 课程设计(大作业)报告课程设计(大作业)报告 课程名称:操作系统 设计题目:银行家算法实现 院 系:信息技术学院 班 级:10 级计算机科学与技术 2 班 设 计 者: xxxx 学 号: 指导教师: 设计时间:2012 年 12 月 31 日至 2013 年 1 月 6 日 课程设计(大作业)任务书课程设计(大作业)任务书 姓 名: 院(系) :信息技术学院 专 业:计算机科学与技术 任务起止日期: 课程设计题目:银行家算法实现 课程设计要求及任务描述: 设计内容: (1)设计数据结构:剩余资源数组 available,如 available j = k 表示 资源 Rj 现有 k 个。
2、(2)设计数据结构:最大资源请求矩阵 max,如 max ij = k 表示进程 Pi 最多可申请 k 个类型为 Rj 的资源。 (3)设计数据结构:资源分配矩阵 allocation,定义每个进程现在所分配 的各种资源类型的数量,如 allocation ij = k 表示进程 Pi 现在分配了 k 个类型为 Rj 的资源。 (4)设计数据结构:剩余资源请求矩阵 claim,定义每个进程还需要的剩余 的资源数,如 claim ij = k 表示进程 Pi 还需要申请 k 个类型 Rj 的资源。 其中,claim ij = maxij - allocationij。 (5)设计函数完成功能:系
3、统内资源总数已知、各进程对各类资源最大需求 数目已知、已分配资源数目已知的前提下,某进程提出各类资源的需求量时能判 断状态是否安全,以决定是否予以分配。 注:实验环境及工具不限。 工作计划及安排: 12 月 31 日:查找相关资料,明确实验原理及实验目的; 1 月 2 日:根据组织的材料,绘制程序流程图,并对数据结果进行初步的设 计; 1 月 4 日:确定数据结构及调用的函数,编写程序代码; 1 月 5 日:结合代码进行分析,编写实验报告文档; 1 月 6 日:完成报告文档; 指导教师签字 年 月 日 课程设计(大作业)报告课程设计(大作业)报告 一、实验原理分析 银行家算法基本原理:操作系统
4、在每一次分配之前都要进行以下操作,判断 当前的资源请求是否安全,如果安全则实施分配,否则不予分配。 第 1 步:操作系统对提出资源请求的进程按所请求的资源数目实施预分配, 修改剩余资源数组、资源分配矩阵和剩余资源请求矩阵; 第 2 步:将剩余资源数组代入剩余需求矩阵中与各元素进行比较,找到可以 满足其所有资源需求的某个进程将它加入到安全序列中; 第 3 步:将该进程运行结束后释放的资源累加到剩余资源数组中; 第 4 步: 再重复第 2、 3 两步。 若所有进程都能够进入安全序列, 则此次分配可以实施,否则系统将会处于不安全状态,因而不能实施分配。如果 不能实施分配,则将系统还原到预分配之前的状
5、态。 二、流程图表示及说明 开始开始 进程请求资源进程请求资源 RequestRequest; ; 若若 RequestRequestAVAILABLEj) printf(“进程“); printf(“%d“,i); printf(“申请的资源数大于系统可用“); printf(“%d“,j); printf(“类资源的资源量!申请不合理,出错!请重新选择!n“); printf(“请重新输入申请的资源数目:n“); printf(“资源“); printf(“%d“,j); printf(“:“); scanf(“%d“, if(flag=Y|flag=y) changdata(i); if
6、(chkerr(i) rstordata(i); showdata(); else showdata(); else showdata(); printf(“n“); printf(“是否继续银行家算法演示,按Y或y键继续,按N或n键退出 演示: “); scanf(“%c“, void showdata() int i,j; printf(“系统可用的资源数为:n“); printf(“ “); for (j=0;jN;j+) printf(“ 资源“); printf(“%d“,j); printf(“:“); printf(“%d“,AVAILABLEj); /*printf(“n“);*/