操作系统课程设计

发布 2022-10-05 11:34:28 阅读 5247

学院班级:信电学院网络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....