OS作业调度FCFS,SJF,HRRN算法的C++实现

FCFS(first come first served):先来先服务,根据到达时间依次执行
SJF(short job first):根据作业的运行时间从小到大依次执行
HRRN(highest response ratio next):根据响应比从大到小依次执行,响应比动态计算


周转时间 = 完成时间 - 到达时间
带权周转时间 = 周转时间 / 运行时间
响应比 = (运行时间+已经等待时间) / 运行时间 = 1+已经等待时间 / 运行时间
响应比可能表达方法不同,但是意义是一样的。
注:计算时响应比只用来比较大小,故我直接把+1省略了。如果题目要求计算其值,记得加一。


源代码如下:


#include #include using namespace std; #define MAXSIZE 5//作业数 struct process { int pid; //作业号 double come_time; //到达时 double run_time; //运行时 double begin_time; //开始时 double over_time; //完成时 double round_time; //周转时 double avg_time; //带权周转时 double HRR; //响应比 }pc[MAXSIZE]; //作业数 bool CmpByComeTime(process p1, process p2) {//按到达时间正序排序 return p1.come_timep2.HRR; } void get_beginAndOver_time() { for (int i = 0; i> pc[i].pid >> pc[i].come_time >> pc[i].run_time; } FCFS(); cout << "the results of FCFS are:" << endl; print(); SJF(); cout << "the results of SJF are:" << endl; print(); HRRN(); cout << "the results of HRRN are:" << endl; print(); system("pause"); return 0; }


运行结果如下:
OS作业调度FCFS,SJF,HRRN算法的C++实现
文章图片





【OS作业调度FCFS,SJF,HRRN算法的C++实现】

    推荐阅读