LRU OPT FIFO
def fifo(frames):
ram = []
pageFault = 0
for i in data:
# print(i)
if i in ram:
continue #在内存中不替换
elif len(ram) < frames: # 仍然有空闲的区域可以放页
ram.append(i)
else: # 页面置换
ram.pop(0) # 弹出头部元素
ram.append(i) # 将当前页面载入内存
pageFault += 1
return pageFault
def opt(frames):
ram = set() # create a set as memory
flag = []
pageFault = 0
for i in range(len(data)):
# print(data[i])
if(data[i] in ram):
continue
elif len(ram) < frames:
ram.add(data[i])
else:
# 找到将来最晚使用的
j = i
while(j<len(data)):
if j not in flag:
flag.append(data[j]) # flag中保存了页面的出现顺序
j += 1
for j in flag[::-1]: # 逆序遍历flag
if j in ram:
ram.remove(j)