[英]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-time
、 schedule-time
和turn-around-time
感興趣。 然后也許average-wait-time
& average-turn-around-time
。
用戶可能需要幾秒鍾來輸入process-details
,就像你的情況決定繼續兩次是否繼續然后輸入burst-time
。
您可以實施實時模擬,但跟蹤和驗證這些統計數據變得乏味。 相反,您為一組流程准備測試數據並與預期結果相符。 所以我們事先需要的細節:
然后按(到達時間和進入順序)對列表進行排序,並為每個進程處理列表計算:
您將其與其他調度算法進行比較,它對進程有多公平。
下面是一對 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.