6,9
def lru_page_faults(n, pages):
"""
模拟LRU页面置换算法,计算缺页次数
:param n: 主存块数量
:param pages: 页面访问序列(列表)
:return: 缺页次数
"""
memory = [] # 模拟主存块,保存当前驻留的页面
page_faults = 0 # 缺页计数器
for page in pages:
if page not in memory:
# 页面不在主存中,发生缺页
page_faults += 1
if len(memory) < n:
# 主存还有空闲块,直接调入
memory.append(page)
else:
# 主存已满,淘汰最近最少使用的页面(队首元素)
memory.pop(0)
memory.append(page)
else:
# 页面已在主存中,更新使用顺序(移到队尾表示最近使用)
memory.remove(page)
memory.append(page)
return page_faults
if name == "main":
# 输入主存块数量n
n = int(input().strip())
# 输入页面访问序列
pages = list(map(int, input().strip().split()))
# 计算并输出缺页次数
faults = lru_page_faults(n, pages)
print(faults)

浙公网安备 33010602011771号