先来先服务FCFS和短作业优先调度算法

设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1,  ,Tn时刻到达系统,它们需要的服务时间分别为S1,  ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间

using namespace std;
#include
#include
#include
#include
#define Number 5
void fcfs();
void sjf();
int getMin(int fuwu[],int process[],int run); //返回符合条件的要求服务时间最短的进程编号 

int daoda[Number], s_dao[Number]; //到达时间和排序后的到达时间 
int fuwu[Number], s_fu[Number];	//要求服务时间和排序后的要求服务时间 
int wancheng[Number] = { 0 }, zhou[Number]; //完成时间和周转时间(完成时间-到达时间) 
float dqzhou[Number];	//带权周转时间 (周转时间/服务时间) 

void fcfs() //先来先服务调度算法 
{
	int run = 0;	//记录当前已运行时间 
	cout<<"FCFS:\n"; 
	for (int i = 0; i < Number; i++)
	{
		if (daoda[i] == s_dao[0])	//找到最先到达的进程对应的编号 
		{
			cout << "时刻" << s_dao[0] <<"运行进程"<> daoda[i];
	}
	cout << "请依次输入进程服务时间:\n";
	for (int i = 0; i < Number; i++)
	{
		cin >> fuwu[i];
	}
	memcpy(s_dao, daoda, sizeof(daoda));
	memcpy(s_fu, fuwu, sizeof(fuwu));
	sort(s_dao, s_dao + Number);
	sort(s_fu, s_fu + Number);
	printf("请输入n:\n");
	cin >> n;
	while (n<1 || n>3)
	{
		cout << "输入的n有误,请重新输入n,n= \n";
		cin >> n;
	}
	if (n == 1)
	{
		fcfs();
	}
	else if (n == 2)
	{
		sjf();
	}
	else
	{
		fcfs();
		printf("\n");
		sjf();
	}
	return 0;
}


你可能感兴趣的:(操作系统)