-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLRU_page_replacement
64 lines (64 loc) · 1.06 KB
/
LRU_page_replacement
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<iostream>
#include<algorithm>
using namespace std;
int chk(int pg[10001],int frame)
{ int f=0;
for(int i=0;i<frame;i++)
{
if(pg[i]==-1)
{
return i;
break;
}
else f=1;
}
if(f)return 0;
}
int main()
{
int frame;
cout<<"Page Frames:";
cin>>frame;
cout<<"Enter Reference String Size:";
int s;
cin>>s;
int ref[s];
for(int i=0;i<s;i++)cin>>ref[i];
int pg[frame],hit=0,miss=0;
int f=0,c=0,used[frame];
for(int i=0;i<frame;i++)pg[i]=-1;
for(int i = 0;i<s;i++)
{ c++;
int flg=0;
for(int j=0;i<frame;j++)
{
if(pg[j]==ref[i])
{
used[j]=c;
hit++;
flg=1;
break;
}
}
if(flg==0)
{ cout<<flg;
int index=chk(pg,frame);
if(index!=0)
{
pg[index]=ref[i];
used[index]=c;
//cout<<"pg[index]"<<pg[index]<<"used[index]"<<used[index];
}
else
{
int min=abs(used-std::min_element(used,used+frame));
//cout<<"min"<<min;
pg[min]=ref[i];
used[min]=c;
}
miss++;
}
}
cout<<"hit:"<<hit<<"\nmiss:"<<miss;
return 0;
}