Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement