Os lab file c programs

21,257 views 28 slides Nov 26, 2014
Slide 1
Slide 1 of 28
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28

About This Presentation

OS Programs in C language.


Slide Content

Program 1

Write a C program to implement First-Come-First-Serve Algorithm.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int pr,i,t=0,avg=0;
printf("Enter The Number Of Process\n");
scanf("%d",&pr);
char p[10];
int brst[10],Wt[10];
brst[0]=0;Wt[0]=0;
for(i=0;i<pr;i++)
{
printf("Enter The Name Of The Process\n");
scanf("%s",&p[i]);
printf("Enter The Burst Time Of The Process\n");
scanf("%d",&brst[i]);
}
t=Wt[0];
for(i=1;i<pr;i++)
{
Wt[i]=Wt[i-1]+brst[i-1];
t=t+Wt[i];
}
printf("\nProcess\tBurst Time\tWaiting Time\n");
for(i=0;i<pr;i++)
{
printf("p%d\t%d\t\t%d\t\n",i+1,brst[i],Wt[i]);
}
avg=t/pr;
printf("Total Waiting Time Is=%d\n",t);
printf("Average Waiting Time Is=%d\n",avg);
getch();
}

Program 2

Write a C program to implement non pre-emptive SJF scheduling algorithm.

#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int n,i,j,temp,temp1,temp2,pr[10],bt[10],at[10],wt[10],tat[10];
float atat,awt,totaltat=0,totalwt=0;
for(i=0;i<10;i++)
{
bt[i]=0;
wt[i]=0;
}
printf("enter the number of process");
scanf("%d",&n);
for(i=0;i<n;i++)
{
pr[i]=i;
printf("\nenter the burst time of process p%d\t",i);
scanf("%d",&bt[i]);
printf("\nenter the arrival time of process p%d\t",i);
scanf("%d",&at[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(at[j]>at[i]&&bt[j]<at[i])
{
temp=bt[i];
bt[i]=bt[j];
bt[j]=temp;
temp1=pr[i];
pr[i]=pr[j];
pr[j]=temp1;
temp2=at[i];
at[i]=at[j];
at[j]=temp2;
}
}
}
wt[0]=0;
for(i=0;i<n;i++)

{
wt[i+1]=wt[i]+bt[i]-at[i+1];;
tat[i]=wt[i]+bt[i];
}
for(i=0;i<n;i++)
{
totalwt=totalwt+wt[i];
totaltat=totaltat+tat[i];
}
awt=totalwt/n;
atat=totaltat/n;
printf("\n\t process \tburt time\t arival time\twaiting time\n");
for(i=0;i<n;i++)
{
printf("\t p%d\t\t%d\t\t%d\t\t%d\n",pr[i],bt[i],at[i],wt[i]);
}
printf("the average waitingtimeis %f\n",awt);
printf("the average turn around time is %f\n",atat);
getch();
}

Program 3

Write a C program to implement non pre-emptive SJF scheduling algorithm.

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int i,j,k,n,Bt[10],wt[10],B[10],A[10],Tt=0;
char s[20],start[20];
int max=0,min,Time=0,z[50];
float Twt=0.0,Awt;
int w=0,flag=0,t=0;
clrscr();
printf("\n Enter no. of processes ::");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n Enter the Burst time for process P%d::",i);
scanf("%d",&Bt[i]);
printf("\n Enter the Arrival time for process P%d::",i);
scanf("%d",&A[i]);
B[i]=Bt[i];
if(B[i]>max)
max=B[i];
if(A[i]>Time)
Time=A[i];
wt[i]=0;
s[i]='T';
start[i]='F';
Tt+=B[i];
}
i=1;k=0;
z[k]=0;
k++;
while(t<Time)
{
if(A[i]<=t && B[i]!=0)
{
if(flag==0)
wt[i]=wt[i]+w;
B[i]=B[i]-1;
if(B[i]==0)
s[i]='F';
start[i]='T';
t++;
w=w+1;
if(s[i]!='F')

{
j=1;
flag=1;
while(j<=n&&flag!=0)
{
if(s[j]!='F'&&B[i]>B[j]&&A[i]<=t&&i!=j)
{
flag=0;
z[k]=w;
wt[i]=wt[i]-w;
i=j;
k++;
}
else
flag=1;
j++;
}
}
else
{
i++;
j=1;
while(A[j]<=t && j<=n)
{
if(B[i]>B[j] && s[j]!='F')
{
flag=0;
i=j;
}
j++;
}
}
}
else
{
if(flag==0)
i++;
}
}
while(w<Tt)
{
min=max+1;
i=1;
while(i<=n)
{
if(min>B[i]&&s[i]=='T')
{
min=B[i];
j=i;
}

i++;
}
i=j;
if(w==Time &&start[i]=='T')
{
w+=B[i];
z[k]=w;
k++;
s[i]='F';
}
else
{
wt[i]+=w;
w+=B[i];
z[k]=w;
k++;
s[i]='F';
}
}
printf("\n..............................................\n");
printf("\nPno\tBt\tAt\tWt");
printf("\n..............................................\n");
for(i=1;i<=n;i++)
{
wt[i]=wt[i]-A[i];
printf("\nP%d\t%d\t%d\t%d",i,Bt[i],A[i],wt[i]);
}
printf("\n..............................................\n");
printf("\n\n Gannt Chart ::\n");
for(i=0;i<k;i++)
printf("%4d",z[i]);
for(i=1;i<=n;i++)
Twt+=wt[i];
printf("\n\n Total waiting Time ::%f",Twt);
Awt=Twt/n;
printf("\n\n Average waiting Time ::%f",Awt);
getch();
}

Program 4

Write a C program to implement priority scheduling algorithm.

#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,n,time[10],bursttime[10],wt[10],pt[10],temp2,total=0,p[10],temp;
float avgwt,avgtat;
int tat[10],totaltat=0;
clrscr();
printf("\nenter the no of process:");
scanf("\t%d",&n);
for(i=0;i<n;i++)
{
printf("\nenter the time of process P%d\t",i);
scanf("\n\t%d",&time[i]);
printf("\nenter the priority of process p%d\t",i);
scanf("\n\t%d",&pt[i]);
}
for(i=0;i<n;i++)
{
p[i]=i;
for(j=0;j<n;j++)
{
if(pt[i]<pt[j])
{
temp=pt[i];
pt[i]=pt[j];
pt[j]=temp;
temp=time[i];
time[i]=time[j];
time[j]=temp;
temp2=p[i];
p[i]=p[j];
p[j]=temp2;
}
}
}
wt[0]=0;
for(i=1;i<=n;i++)
{
wt[i]=wt[i-1]+time[i-1];
printf("\nthe wating time of process%d",p[i-1]);
printf("\t%d",wt[i-1]);
}
for(i=0;i<n;i++)
{

tat[i]=wt[i]+time[i];
}
printf("\nps\tct\tpt\twt\ttat");
for(i=0;i<n;i++)
{
printf("\np%d\t%2d\t%2d\t%2d\t%2d",p[i],time[i],pt[i],wt[i],tat[i]);
}
for(i=0;i<n;i++)
{
total=total+wt[i];
totaltat=totaltat+tat[i];
}
avgwt=float(total)/n;
avgtat=float(totaltat)/n;
printf("\navg waiting time is:\t%f",avgwt);
printf("\nAverage turn around time is :%f",avgtat);
getch();
}

Program 5

Write a C program to implement round robin.

#include<stdio.h>
#include<conio.h>
void main()
{
int st[10],bt[10],wt[10],tat[10],n,tq;
int i,count=0,swt=0,stat=0,temp,sq=0;
float awt=0.0,atat=0.0;
clrscr();
printf("Enter number of processes:");
scanf("%d",&n);
printf("Enter burst time for sequences:");
for(i=0;i<n;i++)
{
scanf("%d",&bt[i]);
st[i]=bt[i];
}
printf("Enter time quantum:");
scanf("%d",&tq);
while(1)
{
for(i=0,count=0;i<n;i++)
{
temp=tq;
if(st[i]==0)
{
count++;
continue;
}
if(st[i]>tq)
st[i]=st[i]-tq;
else
if(st[i]>=0)
{
temp=st[i];
st[i]=0;
}
sq=sq+temp;
tat[i]=sq;
}
if(n==count)
break;
}
for(i=0;i<n;i++)
{
wt[i]=tat[i]-bt[i];
swt=swt+wt[i];

stat=stat+tat[i];
}
awt=(float)swt/n;
atat=(float)stat/n;
printf("\nProcess_no\tBurst time\t Wait time\tTurn around time\n");
for(i=0;i<n;i++)
{
printf("\n%d\t\t%d\t\t%d\t\t\t%d",i+1,bt[i],wt[i],tat[i]);
}
printf("\nAvg wait time is= %f",awt);
printf("\nAvg turn around time is= %f",atat);
getch();
}

Program 6

Write a C program to implement banker’s algorithm.

#include<stdio.h>
#include<conio.h>
void main()
{
int k=0,output[10],d=0,t=0,ins[5],i,avail[5],allocated[10][5],need[10][5],MAX[10][5],pno,P[10],j,rz,
count=0;
clrscr();
printf("\n Enter the number of resources : ");
scanf("%d", &rz);
printf("\n enter the max instances of each resources\n");
for(i=0;i<rz;i++)
{ avail[i]=0;
printf("%c= ",(i+97));
scanf("%d",&ins[i]);
}
printf("\n Enter the number of processes : ");
scanf("%d", &pno);
printf("\n Enter the allocation matrix \n ");
for(i=0;i<rz;i++)
printf(" %c",(i+97));
printf("\n");
for(i=0;i <pno;i++)
{ P[i]=i;
printf("P[%d] ",P[i]);
for(j=0;j<rz;j++)
{
scanf("%d",&allocated[i][j]);
avail[j]+=allocated[i][j];
}
}
printf("\nEnter the MAX matrix \n ");
for(i=0;i<rz;i++)
{ printf(" %c",(i+97));
avail[i]=ins[i]-avail[i];
}
printf("\n");
for(i=0;i <pno;i++)
{
printf("P[%d] ",i);
for(j=0;j<rz;j++)
scanf("%d", &MAX[i][j]);
}

printf("\n");
A: d=-1;
for(i=0;i <pno;i++)
{ count=0; t=P[i];
for(j=0;j<rz;j++)
{
need[t][j] = MAX[t][j]-allocated[t][j];

if(need[t][j]<=avail[j])
count++;
}
if(count==rz)
{
output[k++]=P[i];
for(j=0;j<rz;j++)
avail[j]+=allocated[t][j];
}
else
P[++d]=P[i];
}
if(d!=-1)
{ pno=d+1;
goto A;
}
printf("\t <");
for(i=0;i<k;i++)
printf(" P[%d] ",output[i]);
printf(">");
getch();
}

Program 7

Write a C program to implement Producer-Consumer Problem.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void display(int c,int stack[])
{
int i;
printf("\n----------------------------------------------------------\n");
if(c==0)
printf("\tStack is EMPTY\n\t\t(Now It is sleeping)");
else
for(i=1;i<=c;i++)
printf("\t%d",stack[i]);
printf("\n----------------------------------------------------------\n");
}
void main()
{
int ch,n,c1=0,c2=0,produce[23],consume[23];
clrscr();
printf("\n\n\n\n\n\n\n\t\tEnter Stack Size : ",n);
scanf("%d",&n);
while(1)
{
clrscr();
printf("\t\tProducer Stack (Stack Size : %d)\n\t\t~~~~~~~~~~~~~~~~~~~~~~",n);
display(c1,produce);
printf("\n\n\t\tConsumer Stack (Stack Size : %d)\n\t\t~~~~~~~~~~~~~~~~~~~~~~~",n);
display(c2,consume);
printf("\n\t\tCHOICES\n\t\t~~~~\n\t1.Producer\n\t2.Consumer\n\t3.Exit\nEnter your choice :
");
scanf("%d",&ch);
switch(ch)
{
case 1:
if(c1==n)
printf("Produer stack is FULL.So Producer goes to SLEEP\n");
else
{
c1++;
printf("\t\tEnter PRODUCE item is :");
scanf("%d",&produce[c1]);
}
break;
case 2:
if(c2==n)

printf("Consumer Stack is FULL.So it goes to SLEEP!.......\n\tReset the Cosumer
Stack\n",c2=0);
else if(c1==0)
printf("\tProducer stack is EMPTY\n");
else
{
c2++;
consume[c2]=produce[c1];
printf("\t\tCONSUME one item :");
c1--;
}
break;
case 3:
exit(0);
default:
printf("\tIt is Wrong choice,Please enter correct choice!............\n");
}
getch();
}
}

Program 8

Write a C program to implement Dekker’s Alogorithm.

#include<stdio.h>
#include<conio.h>
void main()
{
int choice;
int c1=1,c2=1,turn=1;
clrscr();
do
{
printf("\n1.Process 1 Enter");
printf("\n2.Process 2 Enter");
printf("\n3.Both Process Enter");
printf("\n4.Exit");
scanf("%d",&choice);
if(choice==1)
{
printf("\nProcess P1 Enters the Critical section");
c1=1;
turn=2;
}
else
printf("\nIt is the turn process P2");
c1=0;
while(c2==0)
{
if(turn==2)
c1=1;
}
while(turn==2);
c1=0;
if(choice==2)
{
printf("\nProcess P2 enters in critical section");
c2=1;
turn=1;
}
else
printf("\nIt is turn of Process P1");
c2=0;
while(c1==0)
{
if(turn==1)
c2=1;
}
while(turn==1);
c2=0;
}
while(choice!=4);
getch();

Program 9

Write a C program to implement LRU page replacement.

#include<stdio.h>
#include<conio.h>
int n,ref[100],fs,frame[100],count=0;
void input();
void show();
void cal();
void main()
{
clrscr();
input();
cal();
show();
getch();
}
void input()
{
int i;
printf("Enter no of pages in Refrence String\t");
scanf("%d",&n);
printf("Enter the reference string:");
for(i=0;i<n;i++)
scanf("%d",&ref[i]);
printf("Enter the Frame Size\t");
scanf("%d",&fs);
}
void cal()
{
int i,j,k=0,c1,c2[100],r,temp[100],t;
frame[k]=ref[k];
count++;
k++;
for(i=1;i<n;i++)
{
c1=0;
for(j=0;j<fs;j++)
{
if(ref[i]!=frame[j])
c1++;
}
if(c1==fs)
{
count++;
if(k<fs)
{
frame[k]=ref[i];

k++;
}
else
{
for(r=0;r<fs;r++)
{
c2[r]=0;
for(j-1;j<n;j--)
{
if(frame[r]!=ref[j])
c2[r]++;
else
break;
}
}
for(r=0;r<fs;r++)
temp[r]=c2[r];
for(r=0;r<fs;r++)
{
for(j=r;j<fs;j++)
{
if(temp[r]<temp[j])
{
t=temp[r];
temp[r]=temp[j];
temp[j]=t;
}
}
}
for(r=0;r<fs;r++)
{
if(c2[r]==temp[0])
frame[r]=ref[i];
}
}
}
}
}
void show()
{
printf("Page Faults = %d",count);
}

Program 10

Write a C program to implement FIFO page replacement.

#include<stdio.h>
#include<conio.h>
void main()
{
int ref[50],i,j,fault=0,count=0,frame[5],n;
int temp;
clrscr();
printf("\n Enter the no. of Frames :;");
scanf("%d",&n);
printf("\nEnter the reference string and end with -1 ::");
scanf("%d",&temp);
while(temp!=-1)
{
ref[count++]=temp;
scanf("%d",&temp);
}
for(i=0;i<n;i++)
frame[i]=-1;
for(i=0;i<count;i++)
{
for(j=0;j<n;j++)
if(frame[j]==ref[i])
break;
if(j==n)
{
frame[fault%n]=ref[i];
fault++;
}
printf("\n\n After inserting %2d the Frame status is ::",ref[i]);
for(j=0;j<n;j++)
printf("%4d",frame[j]);
}
printf("\n\n\t Total no. of page faults ::%d",fault);
getch();
}
Tags