资源简介

该程序实现作业调度的SRTF算法,只要输入进程号,到达时间,运行所需时间即可,输出的是一条时间轴和对应的一条进程运行流程,表示一个时间点里哪个进程在运行。 很简单,看了就知道~

资源截图

代码片段和文件信息

#include
#define N 3//进程个数,可以任意修改,这里设置为3个进程
int time=0;//时间轴
int sumTime=0;
void init();
void orderByReachTime();
int search_Shortest_Remain_Job();
void update(int);
int finishOrNot();
void SRTF();
void show();
struct JobStruct
{
int reachTime;//到达时间   
int remainTime;//剩余时间
int needTime;//需要运行的总时间
int No;//进程号
int flag;//标志位,1标示已做完该作业,0标示未做完,初始化为0
}Job[N];
void init()//输入结构体数组Job[]数据
{
printf(“Process ReachTime NeedTime\n“);
for(int i=0;i {
scanf(“%d%d%d“&Job[i].No&Job[i].reachTime&Job[i].needTime);
Job[i].remainTime=Job[i].needTime;//刚开始时剩余时间=所需时间
Job[i].flag=0;
sumTime+=Job[i].needTime;
}
}
void orderByReachTime()//按到达时间先后排序数组
{
for(int i=0;i for(int j=i+1;j {
if(Job[i].reachTime>Job[j].reachTime)//按到达时间升序排序
{
struct JobStruct temp=Job[i];
Job[i]=Job[j];
Job[j]=temp;
}
}
}
int search_Shortest_Remain_Job()//寻找最短剩余时间的作业的下标并返回下标
{
int index=-1;
int remain=32767;
for(int i=0;i {
if(Job[i].flag==0)
{
if(time>=Job[i].reachTime)//该作业已到达,可以对其进行判断
{
if(Job[i].remainTime {
remain=Job[i].remainTime;
index=i;

}
}
}
}
return index;//返回最短剩余时间的作业的下标
}
void update(int index)//被调度的作业剩余时间减1,时间轴加1参数index为被调度的作业的下标
{
if(index==-1)
{
printf(“%d “index);
time++;
//return;
}
else
{
printf(“%d “index);
Job[index].remainTime--;
if(Job[index].remainTime==0)//如果作业剩余时间为0,说明作业已做完,置标志位为1
{
Job[index].flag=1;
}
time++;
}
}
int finishOrNot()//判断数组中是否还有没完成的作业,有则返回1,否则返回0
{
for(int i=0;i {
if(Job[i].flag==0)
{
return 1;//说明此时还有作业未做完
}
}
return 0;
}
void SRTF()//最短剩余时间优先算法 Shortest Remaining Time First
{
init();
show();
printf(“Process:“);
while(finishOrNot())
{
int index=search_Shortest_Remain_Job();//返回最少剩余时间的作业的下标
update(index);
//display();
}
}
void show()
{
printf(“Time “);
for(int i=0;i //点,每个时间片对应的是主存中正在运行的一个进程号
{
printf(“%d “i);
}
printf(“\n“);
}
void main()
{
SRTF();
printf(“\n“);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2499  2009-12-27 10:02  SRTF作业调度算法\SRTF.cpp

     目录          0  2009-12-27 10:11  SRTF作业调度算法

----------- ---------  ---------- -----  ----

                 2499                    2


评论

共有 条评论