我正在为FCFS调度程序算法开发。但它只适用于一个处理器。如何将任务划分为6个处理器?我需要等待队列,准备好队列等等。
每个处理器应该单独工作,如果一个处理器完成其任务,那么它将完成下一个任务而无需等待所有处理器完成。
#include<stdio.h>
int main()
{
int n,bt[20],wt[20],tat[20],avwt=0,avtat=0,i,j;
printf("Enter total number of processes(maximum 20):");
scanf("%d",&n);
printf("\nEnter Process Burst Time\n");
for(i=0;i<n;i++)
{
printf("P[%d]:",i+1);
scanf("%d",&bt[i]);
}
wt[0]=0; //waiting time for first process is 0
//calculating waiting time
for(i=1;i<n;i++)
{
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
}
printf("\nProcess\t\tBurst Time\tWaiting Time\tTurnaround Time");
//calculating turnaround time
for(i=0;i<n;i++)
{
tat[i]=bt[i]+wt[i];
avwt+=wt[i];
avtat+=tat[i];
printf("\nP[%d]\t\t%d\t\t%d\t\t%d",i+1,bt[i],wt[i],tat[i]);
}
avwt/=i;
avtat/=i;
printf("\n\nAverage Waiting Time:%d",avwt);
printf("\nAverage Turnaround Time:%d",avtat);
return 0;
}
答案 0 :(得分:0)
这似乎是操作系统类的作业。
由于你没有过期时间,只有持续时间,我们假设所有人都在同一时间到达,但是在一些清单中排序。
我会使用术语作业和CPU,而不是处理和处理器,原因很明显。
前六个作业将被分配给所有六个CPU。 下一个作业(第7个)将被分配给将首先完成的CPU。 然后,下一个第8个作业将分配给下一个完成的CPU(在第7个启动之后)。
可以使用优先级(分钟)队列轻松实现该算法。
p := new priority queue
for 1 to 6
insert 0 in p
total_wait_time = 0
for j in jobs
top := pop from p
end_time := top + j
total_wait_time += top
insert end_time in p
avg_wait = total_wait_time / num_of_jobs
你可以玩这个,也许是为了得到平均等待时间而不是平均等待时间。