SHARE
TWEET

Untitled

a guest Nov 19th, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<stdio.h>
  2. void FIFO();
  3. void LEASTRECENTLYUSED();
  4. void OPTIMAL();
  5.  
  6. int main()
  7. {
  8.     int ch;
  9.     do
  10.     {
  11.         printf("\n\n\t1.FIFO\n\t2.LEASTRECENTLYUSED\n\t3.Optimal\n\t4.Exit\n\tEnter Choice : ");
  12.         scanf("%d",&ch);
  13.         switch(ch)
  14.         {
  15.             case 1:
  16.             FIFO();
  17.             break;
  18.             case 2:
  19.             LEASTRECENTLYUSED();
  20.             break;
  21.             case 3:
  22.             OPTIMAL();
  23.             break;
  24.         }
  25.     }while(ch!=4);
  26. }
  27. void FIFO()
  28. {
  29.     int frame[3]={-1,-1,-1},refer[20],ctn=0,i,j,number,flag;
  30.     float ratio,hitctn=0.00;
  31.     printf("\n\tEnter length of refererence string : ");
  32.     scanf("%d",&number);
  33.     printf("\n\tEnter refererence String with giving space ....\n\t");
  34.     for(i=0;i<number;i++)
  35.     scanf("%d",&refer[i]);
  36.     //printf("\n\tExecution is started here .....");
  37.     for(i=0;i<number;i++)
  38.     {
  39.         flag=0;
  40.         for(j=0;j<3;j++)
  41.         if(frame[j]==refer[i])
  42.         {
  43.             printf("\n\tPage Hit ");
  44.             hitctn++;
  45.             flag=1;
  46.             break;
  47.         }
  48.  
  49.         if(flag==0)
  50.         {
  51.             printf("\n\tPage Miss");
  52.             printf("\tBefore :\t");
  53.             for(j=0;j<3;j++)
  54.             printf(" %d",frame[j]);
  55.             frame[ctn]=refer[i];
  56.             ctn++;
  57.             if(ctn>=3)
  58.             ctn=0;
  59.             printf("\tAfter :\t");
  60.             for(j=0;j<3;j++)
  61.             printf(" %d",frame[j]);
  62.         }
  63.     }
  64. ratio=hitctn/number;
  65. printf("\n\n\tHit ratio = %f ",ratio);
  66. }
  67. void LEASTRECENTLYUSED()
  68. {
  69.     int frame[3]={-1,-1,-1},used[3]={-1,-1,-1},ctn=0,refer[20],i,j,flag,number,index,value;
  70.     float ratio,hitctn=0;
  71.     printf("\n\tEnter length of refererence string : ");
  72.     scanf("%d",&number);
  73.     printf("\n\tEnter refererence String with giving space \n\t");
  74.     for(i=0;i<number;i++)
  75.     scanf("%d",&refer[i]);
  76.     //printf("\n\tExecution is started ");
  77.     for(i=0;i<number;i++)
  78.     {
  79.         flag=0;
  80.         for(j=0;j<3;j++)
  81.         if(frame[j]==refer[i])
  82.         {
  83.             printf("\n\tPage Hit ");
  84.             hitctn++;
  85.             flag=1;
  86.             used[j]=ctn;
  87.             break;
  88.         }
  89.         if(flag==0)
  90.         {
  91.             printf("\n\tPage Miss");
  92.             printf("\tBefore :");
  93.             for(j=0;j<3;j++)
  94.             printf(" %d",frame[j]);
  95.             //selection of Fault for replacement
  96.             index=0;
  97.             value=used[0];
  98.             if(ctn!=0) {
  99.             for(j=0;j<3;j++)
  100.             if(value>used[j]&&value!=used[j])
  101.             {
  102.                 index=j;
  103.                 value=used[j];
  104.             }
  105.         }
  106.         //printf("\tFault is %d ",index);
  107.         frame[index]=refer[i];
  108.         used[index]=ctn;
  109.         printf("\tAfter :");
  110.         for(j=0;j<3;j++)
  111.         printf(" %d",frame[j]);
  112.     }
  113. ctn++;
  114. }
  115. ratio=hitctn/number;
  116. printf("\n\n\tHit ratio = %f ",ratio);
  117. }
  118. void OPTIMAL()
  119. {
  120.     int frame[3]={-1,-1,-1},used[3]={-1,-1,-1},ctn=0,refer[20],i,j,flag,number,value1,value2,value3,index;
  121.     float ratio,hitctn=0;
  122.     printf("\n\tEnter length of refererence string : ");
  123.     scanf("%d",&number);
  124.     printf("\n\tEnter refererence String with giving space \n\t");
  125.     for(i=0;i<number;i++)
  126.     scanf("%d",&refer[i]);
  127.     //printf("\n\tExecution is started here ");
  128.     for(i=0;i<number;i++)
  129.     {
  130.         flag=0;
  131.         for(j=0;j<3;j++)
  132.         if(frame[j]==refer[i])
  133.         {
  134.             flag=1;
  135.             printf("\n\tPage Hit");
  136.             hitctn++;
  137.             break;
  138.         }
  139.     if(flag==0)
  140.     {
  141.     printf("\n\tPage Miss");
  142.     if(ctn<3)
  143.     {
  144.         frame[ctn]=refer[i];
  145.         printf("\tStatus :");
  146.         for(j=0;j<3;j++)
  147.         printf(" %d",frame[j]);
  148.         ctn++;
  149.     }
  150.     else
  151.     {
  152.         printf("\tBefore :");
  153.         for(j=0;j<3;j++)
  154.         printf(" %d",frame[j]);
  155.         //selection of Fault
  156.         value1=frame[0];
  157.         flag=0;
  158.         for(j=i;j<number;j++)
  159.         if(refer[j]==value1)
  160.         {
  161.             value1=j;
  162.             flag=1;
  163.             break;
  164.         }
  165.         if(flag==0)
  166.         value1=number;
  167.         value2=frame[1];
  168.         flag=0;
  169.         for(j=i;j<number;j++)
  170.         if(refer[j]==value2)
  171.         {
  172.             value2=j;
  173.             flag=1;
  174.             break;
  175.         }
  176.         if(flag==0)
  177.         value2=number;
  178.         value3=frame[2];
  179.         flag=0;
  180.         for(j=i;j<number;j++)
  181.         if(refer[j]==value3)
  182.         {
  183.             value3=j;
  184.             flag=1;
  185.             break;
  186.         }
  187.         if(flag==0)
  188.             value3=number;
  189.         if(value1<value2)
  190.         if(value3<value2)
  191.             index=1;
  192.         else
  193.             index=2;
  194.         else
  195.         if(value3<value1)
  196.             index=0;
  197.         else
  198.             index=2;
  199.  
  200.         frame[index]=refer[i];
  201.         printf("\tAfter :");
  202.         for(j=0;j<3;j++)
  203.             printf(" %d",frame[j]);
  204.         }
  205.     }
  206. }
  207. ratio=hitctn/number;
  208. printf("\n\n\tHit ratio = %f ",ratio);
  209. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top