fcfs.cpp

来自「CPU调度算法---模拟OS所使用的所有调度算法,包括创建一个kernel,PC」· C++ 代码 · 共 91 行

CPP
91
字号
# if !defined(__PCB_H)
	#include "CPU\PCB.h"
# endif

# if !defined(__KERNEL_H)
	#include "CPU\Kernel.h"
# endif

# if !defined(__READYQUEUE_H)
	#include "CPU\ReadyQ~1.h"
# endif

# if !defined(__SCHEDULER_H)
	#include "CPU\Schedu~1.h"
# endif

# if !defined(__DOS_H)
	#include <dos.h>
# endif

void getJobs();

class FCFS : public Scheduler
{
public:
	FCFS()
	{
	}

	void start()
	{
		while(ReadyQueue.NoOfJobs)
		{
			if(!Kernel.JobStatus)
			{
				PCB *p = ReadyQueue.getPCB(1);
				if(p != NULL)
					Kernel.changePCB(p);
				else
					getJobs();
			}
			else
				break;
		}
	}

	void addJob(char * filename)
	{
		PCB *p = new PCB(filename);
		ReadyQueue.addPCB(p);
	}
};

FCFS fs;

void getJobs()
{
	char command[100] = "";
	char file[10][100];
	int i=0;
	while( (strcmp(command,"e")!=0) && (strcmp(command,"E")!=0) )
	{
		printf("\nPrompt >");
		scanf("%s",command);
		if( (strcmp(command,"s") ==0) || (strcmp(command,"S")==0) )
		{
		for(int j=0;j<i;j++)
				fs.addJob(file[j]);
			i = 0;
			fs.start();
		}
		else
		{
			strcpy(file[i],command);
			i++;
		}
		if(i>=10)
		{
			for(int j=i;j<i;j++)
				fs.addJob(file[i]);
			i=0;
			fs.start();
		}
	}
}

void main()
{
	fs = FCFS();
	getJobs();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?