欢迎来到天天文库
浏览记录
ID:43465881
大小:19.00 KB
页数:3页
时间:2019-10-03
《非抢占式高优先级调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/*非抢占式高优先级调度算法(优先数越大级别越高)算法思想:在按进程达到时间由小到大的顺序输入进程信息后,先对其优先数进行排列,将最先到达的进程的到达时间设为开始时间,计算结束时间,然后对后面到达的时间与该进程的结束时间进行比较,如若小于该进程的结束时间,记录进程的个数,再对其优先数逐个进行比较,将优先数最大的提到前面,每次进程结束都要进行比较,得到执行序列,在依次输出结果*/#include#defineMAX100structhrfs{charname[10];floatarrvitetime;floatstartti
2、me;floatservietime;floatfinishtime;intpriority;//优先数intorder;//进程执行次序intrun_flag;//标记进程状态};hrfsp[MAX];intcount;//排列到达时间//按到达时间与优先数计算执行序列voidHRfs(){floattemp_time=0;inti=0,j;intk,temp_count;intmax_priority;max_priority=p[i].priority;j=1;while((j3、[j].arrvitetime)){if(p[j].priority>p[i].priority){max_priority=p[j].priority;i=j;}j++;}k=i;p[k].starttime=p[k].arrvitetime;//开始时间=达到时间p[k].finishtime=p[k].starttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;p[k].order=1;temp_count=1;while(temp_count4、max_priority=0;for(j=0;jmax_priority){max_priority=p[j].priority;k=j;}}p[k].starttime=temp_time;p[k].finishtime=p[k].sta5、rttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;temp_count++;p[k].order=temp_count;}}voidinput(){inti;printf("请输入进程名到达时间运行时间优先数,例如:a01001");for(i=0;i6、priority);p[i].starttime=0;p[i].finishtime=0;p[i].order=0;p[i].run_flag=0;}}voidprint(){inti;floatturn_round_time=0,f1,w=0;floatright_turn_round_time;printf("-------------------------------进程完成信息------------------------------------");printf("进程名优先级达到时间运行时间开始时间结束时间周转时间带7、权周转时间运行次序");for(i=0;i8、ttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);}printf("平均周转时间=%5.2f",turn_
3、[j].arrvitetime)){if(p[j].priority>p[i].priority){max_priority=p[j].priority;i=j;}j++;}k=i;p[k].starttime=p[k].arrvitetime;//开始时间=达到时间p[k].finishtime=p[k].starttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;p[k].order=1;temp_count=1;while(temp_count4、max_priority=0;for(j=0;jmax_priority){max_priority=p[j].priority;k=j;}}p[k].starttime=temp_time;p[k].finishtime=p[k].sta5、rttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;temp_count++;p[k].order=temp_count;}}voidinput(){inti;printf("请输入进程名到达时间运行时间优先数,例如:a01001");for(i=0;i6、priority);p[i].starttime=0;p[i].finishtime=0;p[i].order=0;p[i].run_flag=0;}}voidprint(){inti;floatturn_round_time=0,f1,w=0;floatright_turn_round_time;printf("-------------------------------进程完成信息------------------------------------");printf("进程名优先级达到时间运行时间开始时间结束时间周转时间带7、权周转时间运行次序");for(i=0;i8、ttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);}printf("平均周转时间=%5.2f",turn_
4、max_priority=0;for(j=0;jmax_priority){max_priority=p[j].priority;k=j;}}p[k].starttime=temp_time;p[k].finishtime=p[k].sta
5、rttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;temp_count++;p[k].order=temp_count;}}voidinput(){inti;printf("请输入进程名到达时间运行时间优先数,例如:a01001");for(i=0;i6、priority);p[i].starttime=0;p[i].finishtime=0;p[i].order=0;p[i].run_flag=0;}}voidprint(){inti;floatturn_round_time=0,f1,w=0;floatright_turn_round_time;printf("-------------------------------进程完成信息------------------------------------");printf("进程名优先级达到时间运行时间开始时间结束时间周转时间带7、权周转时间运行次序");for(i=0;i8、ttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);}printf("平均周转时间=%5.2f",turn_
6、priority);p[i].starttime=0;p[i].finishtime=0;p[i].order=0;p[i].run_flag=0;}}voidprint(){inti;floatturn_round_time=0,f1,w=0;floatright_turn_round_time;printf("-------------------------------进程完成信息------------------------------------");printf("进程名优先级达到时间运行时间开始时间结束时间周转时间带
7、权周转时间运行次序");for(i=0;i8、ttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);}printf("平均周转时间=%5.2f",turn_
8、ttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);}printf("平均周转时间=%5.2f",turn_
此文档下载收益归作者所有