📄 sjf.cpp
字号:
# 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 SJF : public Scheduler
{
public:
SJF()
{
}
void start()
{
while(ReadyQueue.NoOfJobs)
{
if(!Kernel.JobStatus)
{
long min = 0xffffff;
PCB *p = NULL;
PCB *p1 = p;
for(int i=1 ; i<=ReadyQueue.NoOfJobs ; i++)
{
p = ReadyQueue.getPCB(i);
if(p->BurstTime < min)
{
p1 = p;
min = p->BurstTime;
}
}
if(p != NULL)
Kernel.changePCB(p1);
else
getJobs();
}
else
break;
}
}
void addJob(char * filename)
{
PCB *p = new PCB(filename);
ReadyQueue.addPCB(p);
}
};
SJF sjf;
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++)
sjf.addJob(file[j]);
i = 0;
sjf.start();
}
else
{
strcpy(file[i],command);
i++;
}
if(i>=10)
{
for(int j=i;j<i;j++)
sjf.addJob(file[i]);
i=0;
sjf.start();
}
}
}
void main()
{
sjf = SJF();
getJobs();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -