#### Aim:

To Write a Program Using C to Implement the Shortest Job First Scheduling Algorithm.

#### Algorithm:

- STEP 1- START
- STEP 2- Declare the integer bt, p, wt, ta, i, j, n, tot=0, pos and temp
- STEP 3- Declare to float average waiting time and average turnaround time.
- STEP 4-Print the number of process in n and Burst time.
- STEP 5- The bt in for loop ‘i ‘value is 0, i<n and i increment in p[i]+i.
- STEP 6- pos=i, The bt in for loop ‘j ‘value is i+1, j<n and j increment.
- STEP 7- if bt[j] less than bt[pos], pos=j and create the temporary file and equal to the bt[i], bt[i] equal to bt[pos], bt[pos]equal to temporary, temporary equal to p[i], so p[i] equal to p[pos] and p[pos] equal their temporary file
- STEP 8- wt[0] ,the wt in for loop ‘i ‘value is 0, i<n and i increment, becomes wt[i], In for loop ‘j ‘value is i+1, j<n and j increment wt[i] add or equal to bt[j], tot add or equal to wt[i].
- STEP 9- In float average waiting time equal to total divided be n value, And the value of total is 0.
- STEP 10- Print the value process burst time waiting time and turnaround time.
- STEP 11- tat[i] equal to bt[i] add the wt[i], tot add or equal to tat[i],and print the value p[i],bt[i],wt[i] andtat[i].
- STEP 12- In float average turnaround time equal to total divided be n value, and print the average waiting time and average turn around time.
- STEP 13- STOP.

#### Description:

In the following example assume no other jobs arrive during the servicing of all jobs in the ready list. Assume there are 4 jobs.

**i T(Pi)**

0 5

1 10

2 8

3 3

Since the service time of P3 is 3, which is the shortest, P3 is scheduled first and then P0 is scheduled next and so on.

#### Gantt Chart:

P3 | P0 | P2 | P1 |

**0 3 8 16 26**

#### Turn Around Time:

TRND(P0)=T(P0)+T(P3)=5+3=8

TRND(P1)=T(P1)+ T(P0)+T(P3)+T(P2)=10+5+3+5=26

TRND(P2)=T(P2)+ T(P0)+T(P3)=8+5+3=16

TRND(P3)= T(P3)= 3

#### Average Turn Around Time:

TRND =(8+26+16+3)/4=13

#### Waiting Time:

W(P0)=3

W(P1)=16

W(P2)= 8

W(P3)= 0

#### Average Waiting Time:

W=(3+16+8+0)/4=6.75

#### Program:

#include<stdio.h> void main() { int bt[20],p[20],wt[20],tat[20],i,j,n,tot=0,pos,temp; float avgwt,avgtat; printf("Enter number of process:"); scanf("%d",&n); printf("\nEnter Burst Time:\n"); for(i=0;i<n;i++) { printf("p%d:",i+1); scanf("%d",&bt[i]); p[i]=i+1; } for(i=0;i<n;i++) { pos=i; for(j=i+1;j<n;j++) { if(bt[j]<bt[pos]) pos=j; } temp=bt[i]; bt[i]=bt[pos]; bt[pos]=temp; temp=p[i]; p[i]=p[pos]; p[pos]=temp; } wt[0]=0; for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; tot+=wt[i]; } avgwt=(float)tot/n; tot=0; printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"); for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; tot+=tat[i]; printf("\np%d\t\t %d\t\t %d\t\t\t%d",p[i],bt[i],wt[i],tat[i]); } avgtat=(float)tot/n; printf("\n\nAverage Waiting Time=%f",avgwt); printf("\nAverage Turnaround Time=%f\n",avgtat); }

#### Execution:

Input 4 5 3 9 2 Output Enter Total Number of processes: Enter Process Burst Time: Enter P1: Enter P2: Enter P3: Process Burst Time Waiting Time Turnaround Time P4 2 0 2 P2 3 2 5 P1 5 5 10 P3 9 10 19 Average Waiting Time= 4.25 Avg Turn Around Time= 9.00

#### Result:

Thus Shortest job first scheduling program was executed Successfully.