簡體   English   中英

調度算法中到達時間大於突發時間時等待時間返回負值

[英]Wait time returns minus value when arrival time is bigger than burst time in scheduling algorithm

我正在嘗試在 C 中實現 FCFS 調度算法,並且我創建了時間間隔,直到用戶進入另一個進程。 下面是代碼,下面幾行將顯示我想問的實際問題。

#include <stdio.h>
#include <time.h>

#define MAX 50

struct ProcessControlBlock{

    int processID;
    int burstTime;
    int arrivalTime; 
    int turnAround;

};

void main(){

    int terminateController=1;
    int inputCheck;
    int processIndex = 0;
    struct ProcessControlBlock processControlBlocks[MAX];
    time_t beginTime = time(NULL);
    while(terminateController!=0){


        printf("If you want to enter a process, please press 1: ");
        scanf("%d",&inputCheck);

        time_t endTime = time(NULL);
        if(inputCheck==1){
            printf("The arrival time of the process is %d\n",(endTime-beginTime));
            processControlBlocks[processIndex].processID = processIndex;
            processControlBlocks[processIndex].arrivalTime = endTime-beginTime;
            printf("Process ID is: %d\n", processControlBlocks[processIndex].processID);
            printf("Enter the burst time of the process: ");
            scanf("%d",&processControlBlocks[processIndex].burstTime);
            printf("Waiting time of the process is: %d\n",(processControlBlocks[processIndex].burstTime-processControlBlocks[processIndex].arrivalTime));
        }

        printf("If you want to continue to add process, please press 1: ");
        scanf("%d",&terminateController);
        processIndex++;
    }

}

因此,例如,當用戶等待第二個進程進入時,時間到達假設為 12 秒。 如果進程的突發時間為 8 秒,則等待時間將為 -4 秒,這沒有任何意義。 那么,我犯了什么錯誤或者我錯過了什么?

我認為您只對每個流程用戶輸入的wait-timeschedule-timeturn-around-time感興趣。 然后也許average-wait-time & average-turn-around-time
用戶可能需要幾秒鍾來輸入process-details ,就像你的情況決定繼續兩次是否繼續然后輸入burst-time

您可以實施實時模擬,但跟蹤和驗證這些統計數據變得乏味。 相反,您為一組流程准備測試數據並與預期結果相符。 所以我們事先需要的細節:

  • 進程號
  • 到達時間(process-#1 為方便起見從 0 開始)
  • 入場順序(到達時間相同時)
  • 突發時間(需要 CPU 運行其例程的時間)
  • 因為這是 FCFS,所以沒有進程的優先權和優先權。

然后按(到達時間和進入順序)對列表進行排序,並為每個進程處理列表計算:

  • 等待時間
  • 預定時間
  • 周轉時間
  • 列表的平均等待時間
  • 列表的平均周轉時間

您將其與其他調度算法進行比較,它對進程有多公平。

下面是一對 C 的實現:

FCFS 調度按照 FIFO 原則工作,就像隊列一樣。 進程根據到達時間加入隊列,根據隊列中position、等待時間和執行時間移除。 等待時間取決於隊列中前一個進程的退出時間(如果有的話),要計算它,您必須跟蹤隊列中所有進程的到達時間、執行時間和等待時間。

例子:

Timer started at 00:00:00
_____
1/ process 1 arrived at 00:00:03 | exec time 10s | waiting time  0s | exit 00:00:13
2/ process 2 arrived at 00:00:05 | exec time  8s | waiting time  8s | exit 00:00:21
3/ process 3 arrived at 00:00:08 | exec time  5s | waiting time 13s | exit 00:00:26

暫無
暫無

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

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