操作系统课程设计报告

发布 2022-10-05 12:16:28 阅读 6064

操作系统。实。验。

报。告。

学院:计算机科学与技术学院。

班级:计091

学号:0913022032

姓名:曹恒楼。

时间:2011/1/3

1.主界面3

2.设计说明3

3.子功能详细设计5

3.1 作业调度算法5

3.2 银行家算法13

3.3 页面调度算法20

3.4 驱动调度算法30

4.附录(算法源**38

设计内容:将四次实验的内容整合起来,封装成一个可执行文件。

使用说明:须将整个文件直接放在d盘下,不可放在其他盘符,不可放在d盘子文件夹下。

利用mfc完成,每次选择一项完成,若没有,则可选择关闭退出。每一个子功能都是前面的算法,没有作多少补充。

功能一:作业调度算法。

一、实验名称:

用c++实现作业调度算法。

二、实验目的:

通过自己编程来实现各个调度算法,进一步理解进程调度各种算法的概念及含义,提高对算法的认识,同时提高自己的动手实践能力。

三、实验内容:

利用c++,实现进程调度算法,有先来先服务、优先级调度、短作业优先、响应比高优先,这四个算法。

四、实验要求:

1.至少完成三个进程调度算法的设计。

2.分别计算出算法实现的平均作业周转时间、平均带权作业周转时间。

五、实验环境:

win-7系统。

visual c++ 6.0

六、实验设计:

1.数据结构设计。

定义结构体:(对不同算法,均按此结构定义)

struct task_struct定义结构体

char name[10进程名称。

float come_time到达时间。

float run_begin_time; /开始运行时间。

float run_time运行时间。

float run_end_time; /运行结束时间。

int priority优先级。

int order运行次序。

int run_flag调度标志。

2.算法设计。

1)fcfs算法。

先来先服务,利用冒泡排序,按照进程到达时间进行排序。

void bubble(float aa,int counter用来对fcfs采用冒泡排序。

float t;

for(int a=1;a for(int b=0;b

计算周转时间。

int fcfs() 先来先服务。

float time_temp=0临时时间。

float *aa=new float[counter为冒泡排序的实现,创建一个新的数组。

int i;

int number_schedul;

time_temp=tasks[0].come_time;

for(int c=0;c

bubble(aa, counter调用冒泡函数进行排序。

for(int d=0;d for(int e=0;e

for(i=0;i

return 0;

2)sjf算法。

int sjf() 短作业优先。

float temp_time=0;

int i=0,j;

int number_schedul,temp_counter;

float run_time;

run_time=tasks[i].run_time初始化运行时间。

j=1;while ((j

j++;查找第一个被调度的进程。

//对第一个被调度的进程求相应的参数。

number_schedul=i;

tasks[number_schedul].run_begin_time=tasks[number_schedul].come_time;

tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].

run_time;

tasks[number_schedul].run_flag=1;

temp_time=tasks[number_schedul].run_end_time;

tasks[number_schedul].order=1;

temp_counter=1;

while (temp_counter

for(j=0;j

if((tasks[j].come_time<=temp_time)&&tasks[j].run_flag))

if(tasks[j].run_time

run_time=tasks[j].run_time;

number_schedul=j;

查找下一个被调度的进程。

对找到的下一个被调度的进程求相应的参数。

tasks[number_schedul].run_begin_time=temp_time;

tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].

run_time;

tasks[number_schedul].run_flag=1;

temp_time=tasks[number_schedul].run_end_time;

temp_counter++;对找到的下一个被调度的进程求相应的参数。

tasks[number_schedul].order=temp_counter;

return 0;

3)hrrn算法。

int hrrn() 响应比高优先。

int j,number_schedul,temp_counter;

float temp_time,respond_rate,max_respond_rate;

//第一个进程被调度。

tasks[0].run_begin_time=tasks[0].come_time;

tasks[0].run_end_time=tasks[0].run_begin_time+tasks[0].run_time;

temp_time=tasks[0].run_end_time;

tasks[0].run_flag=1;

tasks[0].order=1;

temp_counter=1;

//调度其他进程。

while(temp_counter {

max_respond_rate=0;

for(j=1;j {

if((tasks[j].come_time<=temp_time)&&tasks[j].run_flag))

respond_rate=(temp_time-tasks[j].come_time)/tasks[j].run_time;

if (respond_rate>max_respond_rate)

max_respond_rate=respond_rate;

number_schedul=j;

找响应比高的进程。

tasks[number_schedul].run_begin_time=temp_time;

tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].

run_time;

temp_time=tasks[number_schedul].run_end_time;

tasks[number_schedul].run_flag=1;

操作系统课程设计报告

西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...

操作系统课程设计报告

课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...

操作系统课程设计报告

实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...