gpt4 book ai didi

c - C 代码中的先来先服务多处理器(6 个处理器)调度程序

转载 作者:行者123 更新时间:2023-11-30 17:01:57 25 4
gpt4 key购买 nike

我正在开发 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;
}

最佳答案

这看起来像是操作系统课的家庭作业。

由于您没有进动的到达时间,只有持续时间,我们假设所有进动同时到达,但在某个列表中排序。

出于显而易见的原因,我将使用术语“作业”和“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

您可以尝试一下,也许可以获得平均完成时间而不是平均等待时间。

关于c - C 代码中的先来先服务多处理器(6 个处理器)调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36753881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com