Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5 views

Sceduling Algorithm C Programming

Uploaded by

sashantnipate
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Sceduling Algorithm C Programming

Uploaded by

sashantnipate
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

1.

First Come First Serve (FCFS)


#include <stdio.h>
int main() {
int n, i;
int arrival_time[10], burst_time[10], waiting_time[10], turn_around_time[10];
int total_wt = 0, total_tat = 0;

printf("Enter the number of processes: ");


scanf("%d", &n);

// Input the arrival and burst times


for (i = 0; i < n; i++) {
printf("Enter arrival time and burst time for process %d: ", i + 1);
scanf("%d %d", &arrival_time[i], &burst_time[i]);
}

// First process has 0 waiting time


waiting_time[0] = 0;

// Calculate waiting time for all other processes


for (i = 1; i < n; i++) {
waiting_time[i] = waiting_time[i - 1] + burst_time[i - 1];
}

// Calculate turnaround time


for (i = 0; i < n; i++) {
turn_around_time[i] = burst_time[i] + waiting_time[i];
total_wt += waiting_time[i];
total_tat += turn_around_time[i];
}

// Print results
printf("\nProcess\tArrival\tBurst\tWaiting\tTurn Around\n");
for (i = 0; i < n; i++) {
printf("%d\t%d\t%d\t%d\t%d\n", i + 1, arrival_time[i], burst_time[i], waiting_time[i],
turn_around_time[i]);
}

// Average times
printf("\nAverage waiting time = %.2f", (float)total_wt / n);
printf("\nAverage turn around time = %.2f", (float)total_tat / n);

return 0;
}

2. Shortest Job First (SJF)


#include <stdio.h>
int main() {
int n, i, j;
int burst_time[10], waiting_time[10], turn_around_time[10];
int total_wt = 0, total_tat = 0;
printf("Enter the number of processes: ");
scanf("%d", &n);
// Input burst times
for (i = 0; i < n; i++) {
printf("Enter burst time for process %d: ", i + 1);
scanf("%d", &burst_time[i]);
}

// Sorting burst times (non-preemptive SJF)


for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (burst_time[i] > burst_time[j]) {
int temp = burst_time[i];
burst_time[i] = burst_time[j];
burst_time[j] = temp;
}
}
}
// First process has 0 waiting time
waiting_time[0] = 0;
// Calculate waiting time for all other processes
for (i = 1; i < n; i++) {
waiting_time[i] = waiting_time[i - 1] + burst_time[i - 1];
}
// Calculate turnaround time
for (i = 0; i < n; i++) {
turn_around_time[i] = burst_time[i] + waiting_time[i];
total_wt += waiting_time[i];
total_tat += turn_around_time[i];
}
// Print results
printf("\nProcess\tBurst\tWaiting\tTurn Around\n");
for (i = 0; i < n; i++) {
printf("%d\t%d\t%d\t%d\n", i + 1, burst_time[i], waiting_time[i], turn_around_time[i]);
}
// Average times
printf("\nAverage waiting time = %.2f", (float)total_wt / n);
printf("\nAverage turn around time = %.2f", (float)total_tat / n);

return 0;
}

Priority Scheduling
#include <stdio.h>
int main() {
int n, i, j;
int burst_time[10], priority[10], waiting_time[10], turn_around_time[10];
int total_wt = 0, total_tat = 0;
printf("Enter the number of processes: ");
scanf("%d", &n);
// Input burst time and priority for each process
for (i = 0; i < n; i++) {
printf("Enter burst time and priority for process %d: ", i + 1);
scanf("%d %d", &burst_time[i], &priority[i]);
}
// Sorting processes by priority (higher priority first)
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (priority[i] > priority[j]) { // lower priority value means higher priority
// Swap burst time
int temp = burst_time[i];
burst_time[i] = burst_time[j];
burst_time[j] = temp;
// Swap priority
temp = priority[i];
priority[i] = priority[j];
priority[j] = temp;
}
}
}
// First process has 0 waiting time
waiting_time[0] = 0;
// Calculate waiting time for all other processes
for (i = 1; i < n; i++) {
waiting_time[i] = waiting_time[i - 1] + burst_time[i - 1];
}
// Calculate turn around time for all processes
for (i = 0; i < n; i++) {
turn_around_time[i] = burst_time[i] + waiting_time[i];
total_wt += waiting_time[i];
total_tat += turn_around_time[i];
}
// Print the results
printf("\nProcess\tBurst\tPriority\tWaiting\tTurn Around\n");
for (i = 0; i < n; i++) {
printf("%d\t%d\t%d\t\t%d\t%d\n", i + 1, burst_time[i], priority[i], waiting_time[i],
turn_around_time[i]);
}
// Print average waiting time and turn around time
printf("\nAverage waiting time = %.2f", (float)total_wt / n);
printf("\nAverage turn around time = %.2f", (float)total_tat / n);
return 0;}
Round Robin Scheduling:
#include <stdio.h>
int main() {
int n, i, time, remain, flag = 0, quantum;
int burst_time[10], remaining_time[10], waiting_time[10], turn_around_time[10];
int total_wt = 0, total_tat = 0;
printf("Enter number of processes: ");
scanf("%d", &n);
remain = n; // Remaining processes
// Input burst time for each process
for (i = 0; i < n; i++) {
printf("Enter burst time for process %d: ", i + 1);
scanf("%d", &burst_time[i]);
remaining_time[i] = burst_time[i]; // Copy burst time to remaining time
}
printf("Enter time quantum: ");
scanf("%d", &quantum);
// Initialize time and start Round Robin
for (time = 0, i = 0; remain != 0;) {
if (remaining_time[i] <= quantum && remaining_time[i] > 0) {
time += remaining_time[i];
remaining_time[i] = 0;
flag = 1;
} else if (remaining_time[i] > 0) {
remaining_time[i] -= quantum;
time += quantum;
}
if (remaining_time[i] == 0 && flag == 1) {
remain--; // One process is done
waiting_time[i] = time - burst_time[i]; // Calculate waiting time
turn_around_time[i] = time; // Calculate turn around time
total_wt += waiting_time[i];
total_tat += turn_around_time[i];
flag = 0;
}
// Move to the next process (circular queue)
if (i == n - 1)
i = 0;
else
i++;
}
// Print results
printf("\nProcess\tBurst\tWaiting\tTurn Around\n");
for (i = 0; i < n; i++) {
printf("%d\t%d\t%d\t%d\n", i + 1, burst_time[i], waiting_time[i], turn_around_time[i]);
}
// Print average waiting time and turn around time
printf("\nAverage waiting time = %.2f", (float)total_wt / n);
printf("\nAverage turn around time = %.2f", (float)total_tat / n);
return 0;
}

You might also like