欢迎来到天天文库
浏览记录
ID:11913927
大小:25.50 KB
页数:0页
时间:2018-07-14
《进程优先级调度算法 源程序-进程调度模拟设计-优先级法、最高响应比优先调度算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、进程优先级调度算法源程序-进程调度模拟设计-优先级法、最高响应比优先调度算法#include#include#includeusingnamespacestd;structprigle{floatprii;//记录进程优先级或者响应比intnum;//作用一:定位进程,作用二,标记进程是否运行};struct11elment{charname[10];//进程的名称priglepri;inthour;//进程提交的时间(小时)intmin;//进程提交(分钟)inttime;//进程运行需要的时间inttime1;//记录进程开始运行的时间i
2、nttest;//进程是否在等待的判断位};elmente[10];intall=0;inta[10];inta1[10];intor;voidinput()//输入进程信息{whwww.wenku1.coMile(1){int11d=0;coutif(or==1)coutcoutscanf(“%s”,e[all].name);if(or==1)cin>>e[all].pri.prii;elsee[all].pri.prii=0.0;fflush(stdin);chart[5];scanf(“%s”,&t);d=(t[0]-48)*10+(t
3、[1]-48);if(d>24
4、
5、d{coutcontinue;}e[all].pri.num=all;e[all].hour=d;d=(t[3]-48)*10+(t[4]-48);e[all].min=d;e[all].test=0;cin>>e[all].time;e[all].time1=e[all].hour*60+e[all].min;all++;int11test1;coutcoutcin>>test1;if(test1!=1)break;}}voidGetpriorder()//按优先级从大小排列进程{elmente0[10];
6、for(intj=0;jfor(intk=0;k{elmenttemp;temp.pri.prii=0;for(inth=0;hif(e0[h].pri.prii>temp.pri.prii)temp=e0[h];a[k]=temp.pri.num;e0[a[k]].pri.prii=-1;}}voidHRN()11//最高响应比算法{intn=0;while(1){elmenttemp;for(intii=0;iiif(e[ii].pri.num!=-1){temp=e[ii];break;}for(inti=0;i{}if(temp.ti
7、me1>e[i].time1)temp=e[i];}a1[n]=temp.pri.num;temp.pri.num=-1;e[a1[n++]].pri.num=-1;for(intj=0;jvoidGetorder()//与voidGetpriorder()连用,完成优先级算法{int11n=0;while(1){elmenttemp;for(intjj=0;jjif(e[jj].pri.num!=-1)temp=e[jj];for(inti=0;iif(e[i].pri.num!=-1)if(temp.time1>e[i].time1)te
8、mp=e[i];a1[n]=temp.pri.num;e[a1[n++]].pri.num=-1;for(intk=0;k{if(e[k].pri.num==-1)continue;if(e[k].time1{e[k].test=1;e[k].time1=e[a1[0]].time1+e[a1[0]].time;}}for(inth=0;h{for(int11count=0;countif(e[count].pri.num!=-1)if((e[count].hour*60+e[count].min){if(e[a[t]].pri.num==-
9、1)continue;if(e[a[t]].test==1){temp=e[a[t]];a1[n++]=temp.pri.num;e[a[t]].pri.num=-1;break;}}for(int11r=0;r{if(e[r].pri.num==-1)continue;if(e[r].time1e[r].time1=temp.time1+temp.time;}}if(n==all)break;}}voidoutput(){coutcoutcoutif(or==1)coutcoutfloatetime=0.0;floatetime1=0.0;
10、for(inti=0;i{coutif(or==1)cout/*if(e[a1[i]].hourif(e[a1[i]].minelsecout*/if(e[a1[i
此文档下载收益归作者所有