操作系统-先来先服务FCFS, 最短作业优先SJF调度算法


main.cpp

#include
#include"Scheduling.h"
using namespace std;
int main()
{
	Scheduling scheduling;
	scheduling.simulate();
}

Scheduling.h

#include
using namespace std;
const int maxNum = 50;
class Scheduling {
private:
	int processNum=16;
	int arrivalTime[maxNum] = {0,1,2,3,6,7,9,11,12,13,14,20,23,24,25,26};
	int serviceTime[maxNum] = {1,35,10,5,9,21,35,23,42,1,7,5,3,22,31,1};
	int finishTime[maxNum];
	int wholeTime[maxNum];//周转时间
	double weightWholeTime[maxNum];//带权周转时间
	double aveWT_FCFS, aveWT_SJF, aveWWT_FCFS, aveWWT_SJF;//平均周转时间,平均带权周转时间
	int startTime=0;
	int currentTime;
	int finished[maxNum] = {0};
	int n = 0;
public:
	Scheduling() {
		for (int i = 0; i < processNum; i++)
		{
			finishTime[i] = 0;
			wholeTime[i] = 0;
			weightWholeTime[i] = 0;
		}
		aveWT_FCFS = 0;
		aveWT_SJF = 0;
		aveWWT_FCFS = 0;
		aveWWT_SJF = 0;
	}
	void simulate() {
		queue();
		//output();
		FCFS();
		SJF();
		cout << "aveWT_FCFS" << aveWT_FCFS << endl;
		cout << "aveWT_SJF" << aveWT_SJF << endl;
		cout << " aveWWT_FCFS=" << aveWWT_FCFS << endl;
		cout << " aveWWT_SJF=" << aveWWT_SJF << endl;
	}
	void queue()//根据到达时间先后排序,使数组序号和先后到达时间对应。
	{
		for(int i=0;i arrivalTime[j + 1])
				{
					int temp1;
					int temp2;
					temp1 = arrivalTime[j];
					arrivalTime[j] = arrivalTime[j + 1];
					arrivalTime[j + 1] = temp1;
					temp2 = serviceTime[j];
					serviceTime[j] = serviceTime[j + 1];
					serviceTime[j + 1] = temp2;
				}
			}
	}
	void FCFS()
	{
		currentTime = startTime;
		//cout << "current=" << currentTime<