[2/2] SPPU SPOSL - LRU and Optimal Page Replacement in Python

Опубликовано: 29 Сентябрь 2024
на канале: Visual Notes Log
849
8

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()