python 模拟页面调度LRU算法
【题目描述】
所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。
问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。
【源代码程序】
def lru_page_faults(n, page_sequence):
page_frames = [] # 存储当前页面帧
page_faults = 0 # 缺页次数
for page in page_sequence:
# 如果页面在当前页面帧中,将其移到末尾(最近使用)
if page in page_frames:
page_frames.remove(page)
page_frames.append(page)
else:
# 如果当前页面帧未满,则将页面加入页面帧中
if len(page_frames) < n:
page_frames.append(page)
else:
# 如果当前页面帧已满,则移除最近最少使用的页面,并加入新页面
page_frames.pop(0)
page_frames.append(page)
page_faults += 1
return page_faults
# 输入进程获得使用权的主存块数量n
n = int(input())
# 输入进程访问页面的次序
page_sequence = list(map(int, input().split()))
# 计算缺页次数并输出结果
faults = lru_page_faults(n, page_sequence)
print(faults)
【运行测试】

浙公网安备 33010602011771号