Sunday 18 November 2012

WAP TO IMPLIMENT LFU PAGE REPLACEMENT ALGORITHM.


#include<stdio.h>
int n;
main()
{
int seq[30],fr[5],pos[5],find,flag,max,i,j,m,k,t,s,pf=0;
int count=1,p=0;
float pfr;
clrscr();
printf("Enter no of pages:");
scanf("%d",&max);
printf("Enter the reference string:");
for(i=0;i<max;i++)
  scanf("%d",&seq[i]);
printf("Enter no of frames:");
scanf("%d",&n);
fr[0]=seq[0];
pf++;
printf("\n%d  ",fr[0]);
i=1;
while(count<n)
{
flag=1;
p++;
for(j=0;j<i;j++)
{
if(seq[i]==seq[j])
flag=0;
}
if(flag!=0)
{
fr[count]=seq[i];
printf("%d  ",fr[count] );
count++;
pf++;
}
i++;
}
printf("\n");
for(i=p;i<max;i++)
{
flag=1;
for(j=0;j<n;j++)
{
if(seq[i]==fr[j])
flag=0;
}
if(flag!=0)
{
for(j=0;j<n;j++)
{
m=fr[j];
for(k=i;k<max;k++)
{
if(seq[k]==m)
{
pos[j]=k;
break;
}
else
pos[j]=-1;
}
}
for(k=0;k<n;k++)
{
if(pos[k]==-1)
flag=0;
}
if(flag!=0)
s=findmax(pos);
if(flag==0)
{
for(k=0;k<n;k++)
{
if(pos[k]==-1)
{
s=k;
break;
}
}
}
pf++;
fr[s]=seq[i];
for(k=0;k<n;k++)
printf("%d  ",fr[k]);
printf("\n");

}
}
pfr=(float)pf/(float)max;
printf("\nThe no of page faults are %d",pf);
getch();
}
int findmax(int a[])
{
int max,i,k=0;
max=a[0];
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
k=i;
}
}
return k;
}

Tuesday 6 November 2012

program for FIFO page replacement algorithm


#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int n,flag=0,a[30],b[30],i,j,count=0,f,fault=0;
cout<<"\n**** FIFO page replacement algorithm ****\n";
cout<<"\n enter no. of pages ";
cin>>n;
cout<<" \n enter the reference string ";
for(i=0;i<n;i++)
cin>>b[i];
cout<<"enter frame :";
cin>>f;

for(i=0;i<n;i++)
{
for(j=0;j<f;j++)
{
if(a[j]==b[i])
{
flag=0;
break;
}
else
{
flag=1;
}

}
if(flag==1)
{
a[count]=b[i];
count++;
fault++;
 if(count==f)
  {
  count= 0;
  }
}
}
cout<<"total page faults are :"<<fault;
getch();
}

program for LRU page replacement algorithm .


#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int q[20],p[50],c=0,c1,d,f,i,j,k=0,n,r,t,b[20],c2[20];
cout<<"Enter no of pages:";
cin>>n;

cout<<"Enter the reference string:";

for(i=0;i<n;i++)
cin>>p[i];

cout<<"Enter no of frames:";
cin>>f ;

q[k]=p[k];

cout<<"\n "<<q[k]<<"\n";

c++;

k++;

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

c1=0;
 for(j=0;j<f;j++)
{
 if(p[i]!=q[j])
c1++;
}
if(c1==f)
c++;
if(k<f)
{
q[k]=p[i];
k++;
for(j=0;j<k;j++)
cout<<" "<<q[j];
cout<<"\n";
}
else
{
for(r=0;r<f;r++)
{
c2[r]=0;
for(j=i-1;j<n;j--)
{
if(q[r]!=p[j])
c2[r]++;
else
break;
}
}
for(r=0;r<f;r++)
 b[r]=c2[r];
for(r=0;r<f;r++)
{
for(j=r;j<f;j++)
{
if(b[r]<b[j])
{
t=b[r];
b[r]=b[j];
b[j]=t;
}
}
}
for(r=0;r<f;r++)
{
if(c2[r]==b[0])
q[r]=p[i];
cout<<" "<<q[r];
}
cout<<"\n";
}
}
}
cout<<"\nThe no of page faults is "<<c;
getch();
}

Saturday 3 November 2012

Producer Consumer Problem


#include<iostream.h>
#include<conio.h>
#include<process.h>
void main()
{
void display(int c,int stack[]);
 int ch,n,c1=0,c2=0,produce[23],consume[23];
 clrscr();
 cout<<"\n\n\n\n\n\t\n\n\t\t\tEnter Stack Size :  "<<n;
 cin>>n;
 while(1)
 {
   clrscr();
   cout<<"\t\tProducer Stack (Stack Size :"<<n<<")\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
   display(c1,produce);
   cout<<"\n\n\t\tConsumer Stack (Stack Size :" <<n<<")\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
   display(c2,consume);
   cout<<"\n\t\tCHOICES\n\t\t~~~~~~~\n\t1.Producer\n\t2.Consumer\n\t3.Exit\nEnter your choice :  ";
   cin>>ch;

   switch(ch)
   {
    case 1:
                  if(c1==n)
                   cout<<"Produer stack is FULL.So Producer goes to SLEEP\n";
                  else
                  {
                  c1++;
                  cout<<"\t\tEnter PRODUCE item is :";
                  cin>>produce[c1];
                  }
                  break;

    case 2:
                  if(c2==n)
                     cout<<"Consumer Stack is FULL.So it goes to SLEEP!..........\n\tReset the Cosumer Stack\n",c2=0;
                  else if(c1==0)
                    cout<<"\tProducer stack is EMPTY\n";
                  else
                   {
                   c2++;
                   consume[c2]=produce[c1];
                   cout<<"\t\tCONSUME one item";
                   c1--;
                   }
                  break;

    case 3:
                  exit(0);

    default:
                  cout<<"\tIt is Wrong choice,Please enter correct choice!............\n";
    }
   getch();
  }
}

void  display(int c,int stack[])
 {
  int i;
  cout<<"\n-----------------------------------------------------------------------------\n";
  if(c==0)
  cout<<"\tStack is EMPTY\n\t\t(Now It is sleeping)";
  else
  for(i=1;i<=c;i++)
  cout<<stack[i]<<"   ";
  cout<<"\n-------------------------------------------------------------------------------\n";
getch();
  }

OPTIMAL PAGE REPALCEMET

#include<conio.h>
#include<iostream.h>
int fr[3];
void main()
{
clrscr();
int p[50],i,j,fs[20],n;
int max,found=0,lg[3],index,k,l,flag1=0,flag2=0,pf=0,f;
cout<<"\n **** OPTIMAL PAGE REPLACEMENT ALGORITHM ****\n"
cout<<"-----------------------------------------------" ;
cout<<"\n \nenter the no. of pages : \n";
cin>>n;
cout<<"enter the reference string : \n";
for(i=0;i<n;i++)
cin>>p[i];
cout<<"\n enter the no. of frames : \n";
cin>>f;
for(i=0;i<f;i++)
{
fr[i]=-1;
}
for(j=0;j<n;j++)
{
flag1=0;
flag2=0;
for(i=0;i<f;i++)
{
if(fr[i]==p[j])
{
flag1=1;
flag2=1;
break;
}
}
if(flag1==0)
{
for(i=0;i<f;i++)
{
if(fr[i]==-1)
{
fr[i]=p[j];
flag2=1;
break;
}
}
}
if(flag2==0)
{
for(i=0;i<f;i++)
lg[i]=0;
for(i=0;i<f;i++)
{
for(k=j+1;k<n;k++)
{
if(fr[i]==p[k])
{
lg[i]=k-j;
break;
}
}
}
found=0;
for(i=0;i<f;i++)
{
if(lg[i]==0)
{
index=i;
found=1;
break;
}
}
if(found==0)
{
max=lg[0];
index=0;
for(i=1;i<f;i++)
{
if(max<lg[i])
{
max=lg[i];
index=i;
}
}
}
fr[index]=p[j];
pf++;
}
}
cout<<"\n no of page faults : "<<pf+f;
getch();
}

Friday 2 November 2012

PROGRAM OF ROUND ROBIN SCHEDULING



#include<stdio.h>
#include<conio.h>

void main()
{

char pid[10];
int cpu[5];
int i,j,k,t=0,ts;
clrscr();
printf("\t\t\tROUND ROBIN\n\n\n");
printf("Enter time slice:");
scanf("%d",&ts);
printf("\n");
for(i=0;i<5;i++)
{
printf("Enter Process %d name :",i+1);
scanf("%s",&pid[i]);
printf("Enter Process %d CPU  :",i+1);
scanf("%d",&cpu[i]);
printf("\n\n");
}
for(i=0;i<5;i++)
{

for(j=0;j<5;j++)
{
if(cpu[j]>1)
{
if(cpu[j]<ts)
{
   printf("\t%d-%c-%d",t,pid[j],t+cpu[j]);
t=t+cpu[j];
}
if(cpu[j]>=ts)
{
//for(k=0;k<ts;k++)
printf("\t%d-%c-%d",t,pid[j],t+ts);
t=t+ts;
}
}
if(cpu[j]==1)
{
cpu[j]=cpu[j]-1;
printf("\t%d-%c-%d",t,pid[j],t+1);
t=t+1;
}
cpu[j]=cpu[j]-ts;
}
printf("\n\n");
}
getch();
}

PROGRAM FOR PRIORITY(PRIMITIVE) SCHEDULING



#include<stdio.h>
#include<conio.h>
void main()
{
char pname[5];
int cpu[5],rq[5],at[5],prty[5],pq[5]={100,100,100,100,100};
int i ,t,min,f=0,p,j,total=0;
clrscr();
printf("\t\t\tPRIORITY(PRIMITIVE)\n\n\n");
for(i=0;i<5;i++)
{
printf("enter process %d name       :",i+1);
scanf("%s",&pname[i]);
printf("enter process %d cpu time      :",i+1);
scanf("%d",&cpu[i]);
printf("enter process %d priority      :",i+1);
scanf("%d",&prty[i]);
printf("enter process %d arrival time  :",i+1);
scanf("%d",&at[i]);
printf("\n\n");
}
for(i=0;i<5;i++)
{
total=total+cpu[i];
}
for(t=0;t<total;t++)
{
for(i=0;i<5;i++)
{
if(at[i]<=t)
{
rq[i]=cpu[i];
pq[i]=prty[i];
}

}
min=50;
for(j=0;j<5;j++)
{
if(pq[j]<=min && rq[j]!=0)
{
min =pq[j];
p=j;
}

}
rq[p]=rq[p]-1;
printf("\t");
printf("%d-%c-%d",t,pname[p],t+1);
printf("\t");
cpu[p]=rq[p];

}
getch();
}