武汉理工大学华夏学院。
课程设计报告书。
课程名称: 操作系统原理
题目: 编程序模拟银行家算法
系名: 信息工程系
专业班级: 计算机1102班
姓名何利华。
学号: 10210410211
指导教师: 赵传斌苏永红
2013 年 1 月 17 日。
课程设计任务书。
学生姓名: 何利华专业班级: 计算机1102
指导教师: 苏永红赵传斌工作单位: 信息工程系。
设计题目:编程序模拟银行家算法。
初始条件:linux操作系统,gcc编译环境。
要求完成的主要任务:
主要任务:银行家算法是避免死锁的一种重要方法,本实验要求用用c/c++语言在linux操作系统环境下编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。
思想:将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。
用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若os能保证所有进程在有限的时间内得到所需资源则称系统处于安全状态。
1设计题目与要求 2 设计思想。
3系统结构 4 数据结构的说明和模块的算法流程图。
5 使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明。
6 运行结果和结果分析(其中包括实验的检查结果、程序的运**况)
7 自我评价与总结 8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;
时间安排 1月14日布置课程设计任务;分配题目后,查阅资料、 准备程序;
1月 15~1月17 日上机调试程序、书写课程设计报告;
1月18 日提交课程设计报告及相关文档。
指导教师签字: 2023年 12月 29日。
系主任签字2023年 1月 2
1设计题目与要求。
1.1 设计题目。
编程序模拟银行家算法。
1.2 要求。
本实验要求用用c/c++语言在linux操作系统环境下编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。
2 设计思想。
思想:将一定数量的资金供多个用户周转使用,当用户对资金的最大申请量不超过现存资金时可接纳一个新客户,客户可以分期借款,但借款总数不能超过最大的申请量。银行家对客户的借款可以推迟支付,但是能够使客户在有限的时间内得到借款,客户得到所有的借款后能在有限的时间内归还。
用银行家算法分配资源时,测试进程对资源的最大需求量,若现存资源能满足最大需求就满足当前进程的申请,否则推迟分配,这样能够保证至少有一个进程可以得到所需的全部资源而执行到结束,然后归还资源,若os能保证所有进程在有限的时间内得到所需资源则称系统处于安全状态。
3系统结构。
图 14数据结构的说明和模块的算法流程图。
4.1数据结构:
1)可利用资源向量**ailable
是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果**ailable[j]=k,则表示系统中现有rj类资源k个。
2)最大需求矩阵max
这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果max[i,j]=k,则表示进程i需要rj类资源的最大数目为k。
3)分配矩阵allocation
这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果allocation[i,j]=k,则表示进程i当前已分得rj类资源的数目为k。
4)需求矩阵need。
这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果need[i,j]=k,则表示进程i还需要rj类资源k个,方能完成其任务。
need[i,j]=max[i,j]-allocation[i,j]
4.2程序流程图:
1、系统主要过程流程图1图1图1
2、安全性算法流程图。
5 使用说明书(即用户手册)
5.1首先在终端中使用vi编辑器建立c的源文件。
5.2然后使用gcc编辑器编译生成可执行文件。
5.3使用命令。/当前名字,来执行。
6运行结果和结果分析。
6.1运行结果:
申请成功如图2,申请失败如图3:
图2申请金额在需求范围之内同意。
图3申请金额在需求范围之外拒绝。
5.2 结果分析。
首先是自己定义5个用户所需的金额数,银行可以给用户贷款的总金额数是100,用户id号的范围是在0到4,超过4之后的id请求贷款,会显示拒绝提示信息,每个客户的贷款数量必须是在之前定义的范围之内,如果超出,也会出现错误提示,只有在规定的用户id和在客户所要求金额的范围之内请求,才会给予贷款,并且输出安全序列号。
6自我评价与总结。
经过本周的课程设计,我对操作系统的掌握又进了一步,收获了很多知识。由于对c语言不够熟练,在试验过程中,进行了反复的修改和调试,,终于我了解银行家算法的基本原理,并且在此次的课程设计中我又复习了一下c语言,加深了对它的了解,而且在课程设计的过程中我们同样学会了如何简单的操作与使用linux操作系统,学习到了许多linux操作系统中常用的一些密令。
这次的设计数据是通过一道实际的题目来体现银行家算法避免死锁的问题,先用银行家算法给其中一个进程分配资源,看它所请求的资源是否大于它的需求量,才和系统所能给的资源相比较。让进程形成一个安全队列,看系统是否安全。再利用安全性算法检查此时系统是否安全。
7附录:源程序清单。
#include <>
int allocation[5]=;
int **ailable=100;
int need[5];
int request=0;
int main()
int cid=-1;
int m;
for(m=0;m<5;m++)
if(request>**ailable)
试探分配。allocation[cid]+=request;
**ailable-=request;
need[cid]-=request;
进行安全性检查,若安全则贷款成功,否则取消贷款。
int work=**ailable;
int finish[5]=;
int safe_indexs[5];
int i=0;
int j=0;
for(;i<5;i++)
if(5==i)else
return 0;
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...