簡體   English   中英

C代碼中的“先到先服務多處理器(6個處理器)”調度程序

[英]First Come First Serve Multiprocessor (6 processors) scheduler in C code

我正在開發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

您可以嘗試一下,也許可以獲得平均完成時間而不是平均等待時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM