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

Sceduling Algorithm C Programming

Uploaded by

sashantnipate
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Sceduling Algorithm C Programming

Uploaded by

sashantnipate
Copyright
© © All Rights Reserved
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