欢迎来到天天文库
浏览记录
ID:39711099
大小:192.00 KB
页数:10页
时间:2019-07-09
《操作系统处理器调度算法C++程序资料》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、先来先服务算法1.程序简介先来先服务算法按照作业进入系统后备作业队列的先后次序挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后,移入就绪队列.这是一种非剥夺式调度算法,易于实现,但效率不高.只顾及作业的等候时间,未考虑作业要求服务时间的长短,不利于短作业而优待长作业,不利于I/O繁忙型作业而有利于CPU繁忙型作业.有时为了等待场作业执行结束,短作业的周转时间和带全周转时间将变得很大,从而若干作业的平均周转时间和平均带权周转时间也变得很大。2.分析1.先定义一个数组代表各作业运行的时间,再定义
2、一个数组代表各作业到达系统的时间,注意到达系统的时间以第一个作业为0基础(注意:若各程序都同时到达系统,则到达系统时间都为0)。2.输入作业数。3.然后运用循环结构累积作业周转时间和带权周转时间。4.最后,作业周转时间和带权周转时间分别除以作业数即可得到平均作业周转时间和平均带权周转时间。3.详细设计源程序如下:#include#includeusingnamespacestd;intmain(){intn,a[100],b[100];doubles[100],m[100],T=0,W=0;c
3、out<<"请输入作业数:"<>n;cout<<"请分别输入各作业到达系统的时间:"<>b[i];}cout<<"请分别输入各作业所运行的时间:"<>a[i];s[0]=0;s[i+1]=s[i]+a[i];m[i+1]=(s[i+1]-b[i])/a[i];T=T+s[i+1]-b[i];W=W+m[i+1];}cout<<"平均周转时间为:"<4、时间为:"<5、业到达系统的时间都相同,二是各作业到达系统的时间不同,且以第一个作业到达系统的时间为0作基础。2.到达系统时间都相同的情况只要累积CPU运行的时间,最后加一个排序函数即可。3.到达系统时间不相同的情况则是要在前面FCFS的基础上加一个排序函数即可。4.注意本程序认为第一个作业完成后,其它作业都已经到达系统了。3.详细设计源程序如下://SJF(到达系统时间都相同的情况)#includeusingnamespacestd;voidB(floata[],intsize){floatt;for(inti=1;i<6、size;i++){for(intj=0;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100];doubles[100],m[100],T=0,W=0;cout<<"请输入作业数:"<>n;cout<<"请分别输入各作业所运行的时间:"<>a[i];B(a,n);cout<<"作业调度顺序为:"<7、;i++){cout<usingnamespacestd;voidB(floata[],intsize){floatt;for(inti=2;i8、ze;i++){for(intj=1;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100],b[100];doubles[100],m[100],T=0,
4、时间为:"<5、业到达系统的时间都相同,二是各作业到达系统的时间不同,且以第一个作业到达系统的时间为0作基础。2.到达系统时间都相同的情况只要累积CPU运行的时间,最后加一个排序函数即可。3.到达系统时间不相同的情况则是要在前面FCFS的基础上加一个排序函数即可。4.注意本程序认为第一个作业完成后,其它作业都已经到达系统了。3.详细设计源程序如下://SJF(到达系统时间都相同的情况)#includeusingnamespacestd;voidB(floata[],intsize){floatt;for(inti=1;i<6、size;i++){for(intj=0;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100];doubles[100],m[100],T=0,W=0;cout<<"请输入作业数:"<>n;cout<<"请分别输入各作业所运行的时间:"<>a[i];B(a,n);cout<<"作业调度顺序为:"<7、;i++){cout<usingnamespacestd;voidB(floata[],intsize){floatt;for(inti=2;i8、ze;i++){for(intj=1;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100],b[100];doubles[100],m[100],T=0,
5、业到达系统的时间都相同,二是各作业到达系统的时间不同,且以第一个作业到达系统的时间为0作基础。2.到达系统时间都相同的情况只要累积CPU运行的时间,最后加一个排序函数即可。3.到达系统时间不相同的情况则是要在前面FCFS的基础上加一个排序函数即可。4.注意本程序认为第一个作业完成后,其它作业都已经到达系统了。3.详细设计源程序如下://SJF(到达系统时间都相同的情况)#includeusingnamespacestd;voidB(floata[],intsize){floatt;for(inti=1;i<
6、size;i++){for(intj=0;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100];doubles[100],m[100],T=0,W=0;cout<<"请输入作业数:"<>n;cout<<"请分别输入各作业所运行的时间:"<>a[i];B(a,n);cout<<"作业调度顺序为:"<7、;i++){cout<usingnamespacestd;voidB(floata[],intsize){floatt;for(inti=2;i8、ze;i++){for(intj=1;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100],b[100];doubles[100],m[100],T=0,
7、;i++){cout<usingnamespacestd;voidB(floata[],intsize){floatt;for(inti=2;i8、ze;i++){for(intj=1;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100],b[100];doubles[100],m[100],T=0,
8、ze;i++){for(intj=1;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}intmain(void){floatn,a[100],b[100];doubles[100],m[100],T=0,
此文档下载收益归作者所有