学院班级:信电学院网络1401
小组成员:卢志鹏,马迪。
学号:1411050130,1411050116
时间:2016.6-28-2016.7.3
一、课程设计目的。
实验的设计思想是理论联系实践,通过实际操作加深学生对计算机操作系统概念、基本原理的理解和掌握。一方面延续《操作系统》课程实验的要求,理解操作系统的基本概念,培养学生对计算机常用操作系统的操作能力;另一方面加强培养学生分析、修改和设计操作系统的能力。期望达到学为所用,并且能进一步提高使用计算机和编程能力。
二、设计题目分析。
2.1 题目简介。
实验项目11.实验项目名称:编程实现银行家算法。
要求所实现的银行家算法能够判断以下实例在t0时刻是否处于安全状态,以及当t0时刻,p4请求[2,0,1]资源时,能否实施分配?
示例:设系统中有3种类型资源(a、b、c)和5个进程p1、p2、p3、p4
p5。已知a、b、c的总数量为[17,5,20],在t0时刻的状态如下表所示。
提示:示例中所有的数据需要在程序开始运行时,手动收入(用scanf函数)
2.1 设计要求。
1.详细写出算法的计算过程并输出结果。
2.优化时使用算法输出所有可行的结果。
三、课程设计内容。
3.1 详细设计。
、主函数:main()
里面放入各种方法函数,从构建矩阵开始,然后显示矩阵,计算**alible的值,显示**alible值,判定t0时刻下,该状态是否安全。寻找出其中的安全序列,之后可以进行对特定程序进行资源请求,如果不安全的话返回请求失败的信息,若安全的话,打印出此时请求之后的矩阵并对其进行银行家算法,计算出一个可行的安全序列,并打印显示。
2、构建矩阵函数:construct()
通过2个for循环(其中一个包含在另一个之中)2个if语句对矩阵数据进行输入。三维矩阵f记录下数据后,通过displaystate()打印矩阵,通过getneedstate()函数对need列进行求解。并加入3维数组中。
、显示矩阵函数:displaystate()
通过3个for循环将整个数组一一遍历,然后通过printf将数组打印。
4、**aliable输入函数:input**aliable()
通过for循环与scanf语句对**aliable数组进行数据输入,输入当前可用总资源。
5、计算**alible剩余函数:get**alible()
通过2个for循环遍历,将**alible与已分配给数组的资源相减。
6、显示**alible剩余资源函数:display**alible()
通过for循环,将**alible数组中的数据打印出来(剩余量)。
7、获得need数组状态函数:getneedstate()
通过两个for循环,计算need数列的数据,由数组中的最大分配数组中的数据一一减去已分配数组中的数据。获得need数组中的数据。
8、判定安全状态函数:safestate()
通过for循环,对整个矩阵进行遍历,并在遍历的同时,将**alible数组与其中的矩阵中代表着need的数据进行对比。若need小于**alible则将其列入安全序列,反之则继续遍历。然后将获得的安全序列进行打印。
9、请求序列函数:requestresult()
通过scanf将请求的序列数组赋值与请求的进程的已分配数组的值相加,并将请求程序的need列数组的值置为0。
10、issaferequeststate(void)
将get**alible();request();requestresult();display**alible();displaystate();safestate();等方法整合到一起。代表请求安全序列的函数。
3.3 调试与测试。
在**编写中,并没有遇到什么比较大的问题,主要是safestate()函数在编写的时候遇到了麻烦。安全序列总是跳不出来,后来参考了其他同学的**后完成了safestate()函数方法的编写。
在main()函数中因为一开始displaystate()函数位置放置的问题,导致printf输出的时候不美观。之后发现并解决了放置的问题。
四、实验1完整源程序清单。
#include<>
int program = 10;
int state = 3;
int resource = 10;
int i,j,k,request;
int f[10][3][10] =
int **alible[10] =
int reqresource[10] =
void displaystate(void)
printf("");
void input**aliable(void)
void get**alible(void)
void display**alible(void)
printf("");
void getneedstate(void)
void construct(void)
displaystate();
getneedstate();
void safestate(void);
int sequence[10] =
int seqindex = 0;
int passnum = 0;
while(flag)
for(i = 0 ; i < program ; i++)
if(passnum ==program)
printf("");
}else{
printf("t0 is not safe,program jinxing shunxu wei:")
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....