Sjf Scheduling Algorithm
Sjf Scheduling Algorithm
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int processID;
int arrivalTime;
int burstTime;
int completionTime;
int waitingTime;
int turnaroundTime;
} Process;
processes[i] = processes[j];
processes[j] = temp;
}
}
sortByBurstTime(processes, n);
int completionTime = 0;
completionTime = processes[i].arrivalTime;
totalWaitingTime += processes[i].waitingTime;
totalTurnaroundTime += processes[i].turnaroundTime;
completionTime = processes[i].completionTime;
printf("ProcessID\tArrivalTime\tBurstTime\tWaitingTime\tTurnaroundTime\n");
int main() {
Process processes[] = {
{1, 0, 6, 0, 0, 0},
{2, 1, 8, 0, 0, 0},
{3, 2, 7, 0, 0, 0},
{4, 3, 3, 0, 0, 0}
};
nonPreemptiveSJF(processes, n);
return 0;
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int processID;
int arrivalTime;
int burstTime;
int remainingTime;
int completionTime;
int waitingTime;
int turnaroundTime;
int startTime;
} Process;
processes[i] = processes[j];
processes[j] = temp;
int completed = 0;
int currentTime = 0;
sortByArrivalTime(processes, n);
shortest = -1;
minRemainingTime = processes[i].remainingTime;
shortest = i;
if (shortest == -1) {
currentTime++;
continue;
processes[shortest].remainingTime--;
if (processes[shortest].remainingTime == 0) {
completed++;
processes[shortest].completionTime = currentTime + 1;
processes[shortest].turnaroundTime = processes[shortest].completionTime -
processes[shortest].arrivalTime;
processes[shortest].waitingTime = processes[shortest].turnaroundTime -
processes[shortest].burstTime;
totalWaitingTime += processes[shortest].waitingTime;
totalTurnaroundTime += processes[shortest].turnaroundTime;
currentTime++;
printf("ProcessID\tArrivalTime\tBurstTime\tWaitingTime\tTurnaroundTime\n");
int main() {
Process processes[] = {
{1, 0, 6, 6, 0, 0, 0, 0},
{2, 1, 8, 8, 0, 0, 0, 0},
{3, 2, 7, 7, 0, 0, 0, 0},
{4, 3, 3, 3, 0, 0, 0, 0}
};
preemptiveSJF(processes, n);
return 0;