操作系统课程设计

发布 2022-10-05 11:50:28 阅读 9880

学院: 经济管理学院

专业: 信息管理与信息系统。

姓名: 田定金

学号: 20104940129

指导教师: 刘任东

上机环境: vc++ 6.0

2011-2024年度第 2 学期。

实验时间:2024年6月

1、实验目的。

进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。

2、实验内容。

模拟银行家算法和生产者---消费者算法。

算法介绍:1)银行家算法:

1)数据结构:

1.可利用资源向量**ailable

2.资源种类m ,进程个数n

3.分配矩阵alloc

4.需求矩阵need

2)功能介绍:

模拟实现银行家算法以避免死锁的出现。分两部分组成:

第一部分:银行家算法(扫描)

1.如果request<=need,则转向2;否则,出错。

2.如果request<=**ailable,则转向3,否则等待。

3.系统试探分配请求的资源给进程。

4.系统执行安全性算法。

第二部分:安全性算法。

1.设置两个向量。

1).工作向量:work=**ailable(表示系统可提供给进程继续运行所需要的各类资源数目)

2).finish:表示系统是否有足够资源分配给进程(true:有;false:没有).初始化为false

2.若finish[i]=false&&need<=work,则执行3;否则执行4(i为资源类别)

3.进程p获得第i类资源,则顺利执行直至完成!并释放资源:

work=work+allocation;

finish[i]=true;

转24. 若所有进程的finish[i]=true,则表示系统安全;否则,不安全!

2)生产者---消费者算法。

a、创建生产者线程并向缓冲区中输入数据。

b、判断缓冲区是否已满,如果没满,输入数据;如果满了,生产者等待,消费者取走数据。

c、判断缓冲区是否为空。如果为空输入数据;如果不为空,则消费者阻塞,生产者生产产品后被唤醒,创建消费者线程。然后转至b

而当某个进程释放资源时,则他就是一个消费者。

在同一时刻只能有一个消费者或生产者使用缓冲区,用互斥信号量可以控制各个生产者和消费者之间的互斥,是的生产和消费的工作能够有序进行,而不至于发生死锁。

通过一个有界缓冲区(用数组来实现)把生产者和消费者联系起来。假定生产者和消费者的优先级是相同的,只要缓冲区未满,生产者就可以生产产品并将产品放入缓冲区中。类似的,只要缓冲区未空,消费者就可以从缓冲区中取走产品并消费他。

但是禁止生产者向满的的缓冲区中送入产品,消费者从空的缓冲区中取走产品用线程的互斥来实现。

**。银行家算法:

#include <>

#define n 5 //进程个数。

#define m 3 //资源种类。

int **ailable[m]=,alloc[n+1][m]=,need[n+1][m]=;

int **ailable1[m],need1[n][m],alloc1[n][m];

int h;

int safede() 安全状态判别算法。

int i,j,work[m],finish[n],tag=n;

for(i=0;i for(i=0;i while(tag--)

for(i=0;i if(i==n)return 1;

else return 0;

int main()

int i,j,request[m];

while(1)

for(i=0;i

if(i==m)

if(i==m)

if(safede()=0) printf("资源分配后系统不是处于安全状态!");若新状态安全,则实际分配资源给pi,否则取消试探性分配。else

printf("可利用资源:");

for(i=0;i printf("分配资源:");

for(i=1;i<=n;i++)

printf("需求矩阵:");

for(i=1;i<=n;i++)

printf("请求结束!");

printf("");

return 0;

2)生产者---消费者算法。

#include<>

#include<>

#include<>

#include

#include<>

/定义一些常量;

/本程序允许的最大临界区数;

#define max_buffer_num 10 //秒到毫秒的乘法因子;

#define inte_per_sec 1000 //本程序允许的生产和消费线程的总数;

#define max_thread_num 64 //定义一个结构,记录在测试文件中指定的每一个线程的参数

struct threadinfo

int serial线程序列号

char entity是p还是c

double delay线程延迟

int thread_request[max_thread_num]; 线程请求队列

int n_request请求个数

; /全局变量的定义

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 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....