📄 priority.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 Priority : public Scheduler
{
public:
Priority()
{
}
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->Priority < min)
{
p1 = p;
min = p->Priority;
}
}
if(p != NULL)
Kernel.changePCB(p1);
else
getJobs();
}
else
break;
}
}
void addJob(char * filename,unsigned short priority)
{
PCB *p = new PCB(filename,priority);
ReadyQueue.addPCB(p);
}
};
Priority pri;
void getJobs()
{
char command[100] = "";
unsigned short priority[10]={0};
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++)
pri.addJob(file[j],priority[j]);
i = 0;
pri.start();
}
else
{
printf("Enter proioity for %s (0-9):",command);
scanf("%d",&priority[i]);
priority[i] = priority[i] % 10;
strcpy(file[i],command);
i++;
}
if(i>=10)
{
for(int j=0;j<i;j++)
pri.addJob(file[j],priority[j]);
i=0;
pri.start();
}
}
}
void main()
{
pri = Priority();
getJobs();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -