作业调度一、实验名称作业调度算法二、实验目标在单道环境下编写作业调度的模拟程序,以加深对作业调度的理解。单道环境的特点使被调度的作业占有所有的资源。实现的算法有先来先服务,最短作业优先,最高响应比三种作业调度算法。三、实验环境要求:1.PC机。2.Windows;3.CodeBlocks四、实验基本原理1.本实验设计一个可指定作业个数的作业调度系统。可以输出先来先服务,最短作业优先,最高响应比三种作业调度算法的结果。2.先来先服务就是按照各个作业进入系统的自然次序进行调度。最短作业优先就是优先调度并且处理短作业。最高响应比优先就是根据在程序运行过程中的最高响应比对应的作业先进行调度处理。3.在设计程序过程中,将time相关的内容封装到类中,重载了加减乘除和输入输出以及比较运算符,方便12:00这种形式的数据的加减乘除运算和比较运算,五、数据结构设计1.时间类classtime{public:time(intx=0,inty=0){time::hour=x;time::minute=y;}time&operator=(consttime&t1){this->hour=t1.hour;this->minute=t1.minute;return*this;}timeoperator+(timet2){intminutes,hours;minutes=(minute+t2.minute)%60;hours=hour+t2.hour+(minute+t2.minute)/60;returntime(hours,minutes);}timeoperator-(timet2){intminutes,hours;minutes=minute-t2.minute;if(minute<0){minutes+=60;hour--;}hours=hour-t2.hour;returntime(hours,minutes);}friendbooloperator<(timet1,timet2){if(t1.hour>(istream&in,time&t1){inth,m;scanf("%d:%d",&h,&m);t1.hour=h;t1.minute=m;returnin;}public:inthour;intminute;};2.作业内容typedefstructJOB{charname[20];//Jobnametimein_time;intrun_time;timest_time;timeend_time;intround_time;//周转时间intwait_time;doublerounds_time;//带权周转doublereson_radio;//响应比}job;六、流程图七、源代码#include#include#include#includeusingnamespacestd;classtime{public:time(intx=0,inty=0){time::hour=x;time::minute=y;}time&operator=(consttime&t1){this->hour=t1.hour;this->minute=t1.minute;return*this;}timeoperator+(timet2){intminutes,hours;minutes=(minute+t2.minute)%60;hours=hour+t2.hour+(minute+t2.minute)/60;returntime(hours,minutes);}timeoperator-(timet2){intminutes,hours;minutes=minute-t2.minute;if(minute<0){minutes+=60;hour--;}hours=hour-t2.hour;returntime(hours,minutes);}friendbooloperator<(timet1,timet2){if(t1.hour>(istream&in,time&t1){inth,m;scanf("%d:%d",&h,&m);t1.hour=h;t1.minute=m;returnin;}public:inthour;intminute;};typedefstructJOB{charname[20];//Jobnametimein_time;intrun_time;timest_time;timeend_time;intround_time;//周转时间intwait_time;doublerounds_time;//带权周转doublereson_radio;//响应比}job;doublesum_time;//全部作业周转时间和doublesums_time;//全部作业带权周转时间和intn;//jobcounts//重载maxtimemaxn(timet1,timet2){if(t1.hour>t2.hour){returnt1;}elseif(t1.hour==t2.hour){if(t1.minute>t2.hour){returnt1;}}returnt2;}//eg:120转化成2:0timem_exchange_h(intrun_time){timerun;run.hour=run_time/60;run.minute=run_time%60;returnrun;}//eg:2:0转化成120inth_exchange_m(timet1){returnt1.hour*60+t1.minute;}//先来先服务;voidjob_input(job*x){cout<<"作业\t进入时间\t估计运行时间(分钟)\t开始时间\t结束时间\t周转时间(分钟)\t带权周...