Code:
#Page Replacement - fifo,lru,optimal - 12310245612
def fifo(pagestring,msize):
mptr,hit,miss = 0,0,0
memory = [-1 for i in range(msize)]
for i in pagestring:
flag = 0
for j in memory:
if j==int(i):
hit += 1
flag = 1
break
if(flag==0):
miss += 1
memory[mptr] = int(i)
mptr += 1
if(mptr==msize):
mptr=0
print(memory)
print("Hits=",hit," Miss=",miss)
def lru(pagestring,msize):
mptr,hit,miss = 0,0,0
memory = [-1 for i in range(msize)]
for i in range(len(pagestring)):
flag = 0
for j in memory:
if j==int(pagestring[i]):
hit += 1
flag = 1
break
if(flag==0):
miss += 1
if(mptr is greater than =msize):
left = pagestring[0:i]
dist = [-1 for i in range(10)]
present = [-1 for i in range(10)]
for j in range(len(left)):
k = int(left[j])
dist[k] = i-j
for l in range(len(memory)):
if memory[l]==int(left[j]):
present[k] = l
break
max,num = 0,0
for j in range(len(dist)):
if(dist[j] is greater than max and present[j] is greater than -1):
max = dist[j]
num = present[j]
memory[num] = int(pagestring[i])
else:
memory[mptr] = int(pagestring[i])
mptr += 1
print(memory)
print("Hits=",hit," Miss=",miss)
def optimal(pagestring,msize):
mptr,hit,miss = 0,0,0
memory = [-1 for i in range(msize)]
for i in range(len(pagestring)):
flag = 0
for j in memory:
if j==int(pagestring[i]):
hit += 1
flag = 1
break
if(flag==0):
miss += 1
if(mptr is greater than =msize):
dist = [-1 for i in range(10)]
present = [-1 for i in range(10)]
for j in range(i+1,len(pagestring)):
k = int(pagestring[j])
dist[k] = j-i
for l in range(len(memory)):
if memory[l]==int(pagestring[j]):
present[k] = l
break
max,num = 0,-1
for j in range(len(dist)):
if(dist[j] is greater than max and present[j] is greater than -1):
max = dist[j]
num = present[j]
if(num!=-1):
memory[num] = int(pagestring[i])
else:
memory[mptr] = int(pagestring[i])
mptr += 1
print(memory)
print("Hits=",hit," Miss=",miss)
def main():
x = input("Enter the page string : ")
m = int(input("Enter the size of memory : "))
fifo(x,m)
lru(x,m)
optimal(x,m)
main()