Shortest_Job_First CPU scheduling
#include <stdio.h>
#include <conio.h>
struct proc
{
int id;
int burst;
int at;
};
int main()
{
int n, i, j, total_waiting_time, waiting_time;
printf("Enter the number of processess: ");
scanf("%d", &n);
struct proc p[n], temp;
for (i = 0; i < n; i++)
{
p[i].id = i;
printf("Enter the arrival time of the process: ");
scanf("%d", &p[i].at);
printf("Enter the burst time of the process: ");
scanf("%d", &p[i].burst);
}
for (i = 0; i < n - 1; i++)
{
for (j = i; j < n - 1 + 1; j++)
{
if (p[j].at < p[i].at)
{
temp.id = p[j].id;
temp.at = p[j].at;
temp.burst = p[j].burst;
p[j].id = p[i].id;
p[j].burst = p[i].burst;
p[j].at = p[i].at;
p[i].id = temp.id;
p[i].burst = temp.burst;
p[i].at = temp.at;
}
}
}
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (p[j].at == p[j + 1].at && p[j].burst > p[j + 1].burst)
{
temp.at = p[j].at;
temp.burst = p[j].burst;
temp.id = p[j].id;
p[j].id = p[j + 1].id;
p[j].burst = p[j + 1].burst;
p[j].at = p[j + 1].at;
p[j + 1].id = temp.id;
p[j + 1].at = temp.at;
p[j + 1].burst = temp.burst;
}
}
}
waiting_time = 0, total_waiting_time = 0;
printf("\nScheduling information \n");
for (i = 0; i < n; i++)
{
total_waiting_time += waiting_time;
printf("process id:%d arrival time:%d burst time:%d waiting time:%d\n",
p[i].id, p[i].at, p[i].burst, waiting_time);
waiting_time += p[i].burst;
}
printf("\nThe average waiting time: %1.2f: ",
((float)total_waiting_time / n));
}
Comments
Post a Comment