fifo,lru,lfu

fifo::

#include<stdio.h>
#include<conio.h>
int main()
{
        int i,j,n,a[50],frame[10],no,k,avail,count=0;

        printf("\n ENTER THE NUMBER OF PAGES:\n");
        scanf("%d",&n);
        printf("\n ENTER THE PAGE NUMBER :\n");
        for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        printf("\n ENTER THE NUMBER OF FRAMES :");
        scanf("%d",&no);
        for(i=0;i<no;i++)
            frame[i]= -1;
        j=0;
        printf("\tref string\t page frames\n");
        for(i=1;i<=n;i++)
        {
                printf("%d\t\t",a[i]);
                avail=0;
                for(k=0;k<no;k++)
                    if(frame[k]==a[i])
                        avail=1;
                if (avail==0)
                {
                        frame[j]=a[i];
                        j=(j+1)%no;
                        count++;
                        for(k=0;k<no;k++)
                        printf("%d\t",frame[k]);
                }
                printf("\n");
        }
        printf("Page Fault Is %d",count);

}




lru::

#include<stdio.h>
#include<conio.h>
int fr[30];
void main()
{
    void display();
    int p[50],i,j,fs[30],n;
    int index,k,l,flag1=0,flag2=0,pf=0,frsize;
    printf("Enter no of pages:");
    scanf("%d",&n);
    printf("Enter the reference string:");
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    printf("Enter no of frames:");
    scanf("%d",&frsize);
    for(i=0;i<frsize;i++)
    {
        fr[i]=-1;
    }
    for(j=0;j<n;j++)
    {
        flag1=0,flag2=0;
        for(i=0;i<frsize;i++)
        {
            if(fr[i]==p[j])
            {
                flag1=1;
                flag2=1;
                break;
            }
        }
        if(flag1==0)
        {
            for(i=0;i<frsize;i++)
            {
                if(fr[i]==-1)
                {
                    fr[i]=p[j];
                    flag2=1;
                    break;
                }
            }
        }
        if(flag2==0)
        {
            for(i=0;i<frsize;i++)
                fs[i]=0;
            for(k=j-1,l=1;l<=frsize-1;l++,k--)
            {
                for(i=0;i<frsize;i++)
                {
                    if(fr[i]==p[k])
                        fs[i]=1;
                }
            }
            for(i=0;i<frsize;i++)
            {
                if(fs[i]==0)
                   index=i;
            }
                fr[index]=p[j];
                pf++;
        }
        display();

    }
        printf("\n no of page faults :%d",pf+frsize);
}
void display()
{
int i;
printf("\n");
for(i=0;i<3;i++)
printf("\t%d",fr[i]);
}



lfu::

#include<stdio.h>
int main()
{
  int f,p;
  int pages[50],frame[10],hit=0,count[50],time[50];
  int i,j,page,flag,least,minTime,temp;

  printf("Enter no of frames : ");
  scanf("%d",&f);
  printf("Enter no of pages : ");
  scanf("%d",&p);

  for(i=0;i<f;i++)
  {
    frame[i]=-1;
  }
  for(i=0;i<50;i++)
  {
    count[i]=0;
  }
  printf("Enter page no : \n");
  for(i=0;i<p;i++)
  {
    scanf("%d",&pages[i]);
  }
  printf("\n");
  for(i=0;i<p;i++)
  {
    count[pages[i]]++;
    time[pages[i]]=i;
    flag=1;
    least=frame[0];
    for(j=0;j<f;j++)
    {
      if(frame[j]==-1 || frame[j]==pages[i])
      {
        if(frame[j]!=-1)
        {
            hit++;
        }
        flag=0;
        frame[j]=pages[i];
        break;
      }
      if(count[least]>count[frame[j]])
      {
        least=frame[j];
      }
    }
    if(flag)
    {
      minTime=50;
      for(j=0;j<f;j++)
      {
        if(count[frame[j]]==count[least] && time[frame[j]]<minTime)
        {
          temp=j;
          minTime=time[frame[j]];
        }
      }
      count[frame[temp]]=0;
      frame[temp]=pages[i];
    }
    for(j=0;j<f;j++)
    {
      printf("%d ",frame[j]);
    }
    printf("\n");
  }
  printf("Page hit = %d",hit);
  printf("\nPage faults = %d",p-hit);
}

SHARE

About Santhosh

    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment