logo资料库

SJF,FCFS,HRRN.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
#include using namespace std; #define MAX 10 struct task_struct { char name[MAX];//进程名 int number;//进程编号 float come_time;//进程到达时间 float run_begin_time;//运行开始时间 float run_time;//进程运行时间 float run_end_time;//运行结束时间 int priority;//优先级 int order;//运行次序 int run_flag;//调度标志 }tasks[MAX]; int counter;//实际进程个数 int fcfs();//先来先服务 int ps();//优先级调度 int sjf();//短作业优先 int hrrn();//响应比高者优先 int pinput();//进程参数输入 int poutput();//调度结果输出 //主函数 void main() { int option; pinput(); cout<<"请选择调度算法(0-4):"<>option; switch(option) { case 0:cout<<"运行结束!"<
ps(); poutput(); break; case 3:cout<<"对进程按短作业优先调度:"<tasks[i].priority) {
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
分享到:
收藏