Operating Systems Lab Cycle -II Programs

 Cycle-2: simulate the following CPU scheduling algorithms

------------------------------------------------------------------------

 a)   write a C program for simulating the FCFS (First Come First Serve) CPU

scheduling algorithm

 

      Aim: To write a C program for simulating FCFS (first come first serve)

CPU Scheduling Algorithm

Program:

#include<stdio.h>

#include<conio.h> 

void main()

{

int arrival[10],burst[10],start[10],finish[10],wait[10],turn[10];

int i,j,n,sum=0;

float totalwait=0.0,totalturn=0.0;

float avgwait=0.0,avgturn=0.0;

start[0]=0;

printf("Enter number of Process:");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("\n Enter process %d Arrival and Burst time \n",(i+1));

scanf("%d %d",&arrival[i],&burst[i]);

}

for(i=0;i<n;i++)

{

sum=0;

for(j=0;j<i;j++)

{

sum=sum+burst[j];

}

start[i]=sum;

}

 for(i=0;i<n;i++)

{

finish[i]=burst[i]+start[i];

wait[i]=start[i]-arrival[i];

turn[i]=burst[i]+wait[i];

}

for(i=0;i<n;i++)

{

totalwait=totalwait+wait[i];

totalturn=totalturn+turn[i];

}

avgwait=totalwait/n;

avgturn=totalturn/n;

printf("\n Arrival Burst Start Finish Wait Turn \n");

for(i=0;i<n;i++)

{

printf("%7d %5d %5d %6d %4d %4d \n",arrival[i],burst[i],start[i],finish[i],wait[i],turn[i]);

}

printf("Average waiting time %f\n",avgwait);

printf("Average turnaround time %f\n",avgturn);

getch();

}

Output:

Enter number of Process: 3

Enter process 1 Arrival and Burst time

0 24

Enter process 2 Arrival and Burst time

0 3

Enter process 3 Arrival and Burst time

0 3

Arrival Burst Start Finish Wait Turn

0 24 0 24 0 24

0 3 24 27 24 27

0 3 27 30 27 30

Average waiting time 17.000000

Average turnaround time 27.000000

 

 

b)   Write a C program for simulating the SFJ ( Shortest Job First) CPU scheduling algorithm

 

Aim: To write a C program for simulating SJF (Shortest Job First) CPU

Scheduling Algorithm

Program:

#include<stdio.h>                 

#include<conio.h>

void main()

{

int i,j,burst[10],start[10],finish[10],wait[10];

int n,temp;

float totalwait=0.0,totalturn=0.0;

float avgwait,avgturn;

printf("Enter number of Process:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf("\n Enter process %d Burst time:",i);

scanf("%d",&burst[i]);

}

for(i=1;i<=n;i++)

{

for(j=i+1;j<=n;j++)

{

if(burst[i]>burst[j])

{

temp=burst[i];

burst[i]=burst[j];

burst[j]=temp;

}

}

}

for(i=1;i<=n;i++)

{

if(i==1)

{

start[i]=0;

finish[i]=burst[i];

wait[i]=0;

}

else

{

start[i]=finish[i-1];

finish[i]=start[i]+burst[i];

wait[i]=start[i];

}

}

printf("\n Burst Start Finish Wait \n");

for(i=1;i<=n;i++)

{

printf("%5d %5d %6d %4d\n",burst[i],start[i],finish[i],wait[i]);

}

for(i=1;i<=n;i++)

{

totalwait=totalwait+wait[i];

totalturn=totalturn+finish[i];

}

avgwait=totalwait/n;

avgturn=totalturn/n;

printf("Average Waiting time %f \n",avgwait);

printf("Average Turn over time %f \n",avgturn);

getch();

}

Output:

Enter number of Process:3

Enter process 1 Burst time:27

Enter process 2 Burst time:1

Enter process 3 Burst time:2

Burst Start Finish Wait

1 0 1 0

2 1 3 1

27 3 30 3

Average waiting time 1.333333

Average Turn over time 11.333333

 

 c)    Write a C program for simulating the Round robin CPU scheduling algorithm

 

 AIM: To write a C program for simulating the Round Robin CPU

Scheduling Algorithm

Program:

#include<stdio.h>

#include<conio.h>

void main()

{

int start[10],burst[10],need[10],execution[10],wait[10],finish[10],turn[10];

int i,ts,n,totaltime=0,totalburst=0;

float totalwait=0.0,totalturn=0.0,totalresp=0.0;

float avgwait=0.0,avgturn=0.0,avgresp=0.0;

clrscr();

printf("Enter number of processes");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("Enter process %d burst time",(i+1));

scanf("%d",&burst[i]);

}

printf("Enter time slice");

scanf("%d",&ts);

for(i=0;i<n;i++)

{

need[i]=burst[i];

execution[i]=0;

wait[i]=0;

finish[i]=0;

turn[i]=0;

totalburst=totalburst+burst[i];

}

while(totalburst>0)

{

for(i=0;i<n;i++)

{

if(execution[i]==0)

{

start[i]=totaltime;

}

if(need[i]>ts)

{

execution[i]=execution[i]+ts;

need[i]=need[i]-ts;

totaltime=totaltime+ts;

totalburst=totalburst-ts;

}

else

{

if(need[i]>0)

{

execution[i]=execution[i]+need[i];

totaltime=totaltime+need[i];

wait[i]=totaltime-execution[i];

finish[i]=wait[i]+burst[i];

turn[i]=wait[i]+burst[i];

totalburst=totalburst-need[i];

need[i]=0;

}

}

   }

}

printf("\n process burst start wait finish turnaround ");

for(i=0;i<n;i++)

{

printf("%7d %5d %5d %5d %4d %6d \n",(i+1),burst[i],start[i],wait[i],finish[i],turn[i]);

}

for(i=0;i<n;i++)

{

totalwait=totalwait+wait[i];

totalturn=totalturn+turn[i];

totalresp=totalresp+start[i];

}

avgwait=totalwait/n;

avgturn=totalturn/n;

avgresp=totalresp/n;

printf("\n Average waiting time %f\n",avgwait);

printf("\n Average turnaround time %f\n",avgturn);

printf("\n Average response time %f\n",avgresp);

getch();

}

Output:

Enter number of processes 3

Enter process 1 burst time 24

Enter process 2 burst time 3

Enter process 3 burst time 3

Enter time slice 2

Process burst start wait finish turnaround

1 24 0 6 30 30

2 3 2 6 9 9

3 3 4 7 10 10

Average waiting time 6.333333

Average turnaround time 16.333334

Average response time 2.000000

 

 d)Write a C program for simulating the Priority CPU scheduling algorithm


 Aim: To write a C program for simulating Priority CPU Scheduling

Algorithm

PROGRAM:

#include<stdio.h>

#include<conio.h>

void main()

{

int burst[10],pri[10],wait[10],start[10],finish[10];

int i,j,temp1,temp2,n,totalwait=0,totalavg=0,totalturn=0;

float avgwait=0.0,avgturn=0.0;

printf("Enter n value");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf("\n Enter Burst time and priority of process %d",i);

scanf("%d %d",&burst[i],&pri[i]);

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

if(pri[i]>pri[j])

{

temp1=pri[i];

pri[i]=pri[j];

pri[j]=temp1;

temp2=burst[i];

burst[i]=burst[j];

burst[j]=temp2;

}

   }

}

for(i=1;i<=n;i++)

{

if(i==1)

{

start[i]=0;

finish[i]=burst[i];

wait[i]=start[i];}

else

{

start[i]=finish[i-1];

finish[i]=start[i]+burst[i];

wait[i]=start[i];

}

}

printf("\n Burst Priority Start Wait Finsih \n");

for(i=1;i<=n;i++)

{

printf("%5d %8d %5d %4d  %6d ",burst[i],pri[i],start[i],wait[i],finish[i]);

}

for(i=1;i<=n;i++)

{

totalwait=totalwait+wait[i];

totalturn=totalturn+finish[i];

}

avgwait=totalwait/n;

avgturn=totalturn/n;

printf("\n Average waiting time=%f \n",avgwait;

printf("\n Average turnaround time=%f \n",avgturn);

getch();

}

Output:

Enter n value 3

Enter Burst time and priority of process 1

24 3

Enter Burst time and priority of process 2

3 2

Enter Burst time and priority of process 3

3 1

Burst Priority Start Wait Finnish

24 3 0 0 24

3 2 24 24 27

3 1 27 27 30

Average waiting time=17.000000

Average turnaround time=27

Comments

Popular posts from this blog

Data Structures Module_V

Data Structures Module-IV

Data Structures Module-III