max_priority=tasks[j].priority;
i=j;
}
j++;
}//首先找到第一个被调度的进程
number_schedul=i;
tasks[number_schedul].run_begin_time=tasks[number_schedul].come_t
ime;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begi
n_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_countermax_priority)
{
max_priority=tasks[j].priority;
number_schedul=j;
}
}
//查找下一个被调度的进程
//对找到的下一个被调度的进程求相应的参数
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begi
n_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;
}
int sjf()//短作业优先
{
float temp_time=0;
int i=1,j;
int number_schedul,temp_counter;
float run_time;
run_time=tasks[i].run_time;
j=1;
while((j
{
}
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_begi
n_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;
}
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;
temp_counter=1;
tasks[0].order=temp_counter;
//调度其他进程
while(temp_countermax_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_begi
n_time+tasks[number_schedul].run_time;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].run_flag=1;
temp_counter+=1;
tasks[number_schedul].order=temp_counter;
}
return 0;
}
int pinput()//进程参数输入
{
int i;
cout<<"请输入进程个数:";
cin>>counter;
for(i=0;i>tasks[i].name;
cout<<"请输入进程编号:";
cin>>tasks[i].number;
cout<<"请输入进程到达时间:";
cin>>tasks[i].come_time;
cout<<"请输入进程运行时间:";
cin>>tasks[i].run_time;
cout<<"请输入进程优先级:";
cin>>tasks[i].priority;
tasks[i].run_begin_time=0;
tasks[i].run_end_time=0;
tasks[i].order=0;
tasks[i].run_flag=0;
}
return 0;
}
int poutput()//调度结果输出
{
int i;
float turn_round_time=0,f1=0,w=0;
cout<<"name
come_time
number
run_time
run_begin_time
run_end_time
priority
order
for(i=0;i