软工博客27
所谓 LRU 算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主
存块,腾出地方来调入新页面。
问题描述:一进程获得 n 个主存块的使用权,对于给定的进程访问页面次序,问当采用
LRU 算法时,输出发生的缺页次数。
读取主存块数量
n = int(input())
读取进程访问页面的次序
page_sequence = list(map(int, input().split()))
初始化主存块列表和缺页次数
memory_blocks = []
page_faults = 0
遍历页面访问次序
for page in page_sequence:
# 如果页面不在主存块中,发生缺页
if page not in memory_blocks:
page_faults += 1
# 如果主存块已满,移除最近最少使用的页面
if len(memory_blocks) == n:
memory_blocks.pop(0)
# 将新页面添加到主存块列表末尾
memory_blocks.append(page)
else:
# 如果页面已在主存块中,将其移到列表末尾,表示最近使用
memory_blocks.remove(page)
memory_blocks.append(page)
输出缺页次数
print(page_faults)

浙公网安备 33010602011771号