【问题标题】:First Come First Serve Multiprocessor (6 processors) scheduler in C codeC 代码中的先到先服务多处理器(6 个处理器)调度程序
【发布时间】:2016-08-13 17:26:41
【问题描述】:

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

【问题讨论】:

  • 是否涉及操作系统?例如,printf() 如何在终端上产生输出?
  • 我建议你使用多线程!
  • 欢迎来到 Stack Overflow。请查看How to Ask,了解如何充分利用您的问题。例如,当您询问如何基本上实现整个库时,这个问题的范围似乎有点宽泛。尝试缩小到可以在几段中回答的特定问题。
  • 是的,我正在使用 ubuntu 编译我的代码,
  • 在这个例子中如何实现多线程,你能帮帮我吗?你能用多线程来演示4个处理器吗?

标签: c algorithm cpu scheduling multiprocessor


【解决方案1】:

这似乎是操作系统课的作业。

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

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

你可以玩弄这个,也许是为了得到平均完成时间而不是平均等待时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2017-03-19
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2013-09-04
    相关资源
    最近更新 更多