操作系统作业调度

发布 2021-05-05 18:18:28 阅读 6366

操作系统。实。验。

报。告。

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

班级:计091

学号:0913022032

姓名:曹恒楼。

时间:2011/11/28

目录。1. 实验名称3

2. 实验目的3

3. 实验内容3

4. 实验要求3

5. 实验环境3

6. 实验设计3

6.1数据结构设计3

6.2算法设计4

6.3功能模块设计8

7. 实验运行结果9

8. 实验心得11

附录:源**(部分11

一、实验名称:

用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

return 0;

4)ps算法。

int ps优先级调度。

操作系统 作业调度

一 各作业情况如下 优先级为小值优先,求平均周转时间和带权平均周转时间?1.先来先服务 2.短作业优先 3.静态优先。答 1.先来先服务。0时刻只有作业1到达,所以先执行1 2时刻作业2和3都到达,2先到所以执行2 7时刻作业3和作业4都到达,3先所以执行3,再执行4 平均周转时间 2 0 7 1 ...

操作系统作业调度

include include include include define max 9999999 enum state unhand,ready,finished 状态联合体,unhand未提交,ready就绪,finished已完成。struct time 自定义结构体变量时间time int...

操作系统作业调度实验

实验一进程。2011210549 崔晶。1.本实验实现的功能有 创建一个进程,撤销一个进程,挂起一个进程。2.本实验初始化的进程块状态如图所示 自定义 p表示正在运行,r表示就绪,w表示等待。3.程序如下 include include 进程块的数据结构。struct pcb struct 插入等待...