操作系统。实。验。
报。告。
学院:计算机科学与技术学院。
班级:计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 插入等待...