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)

【运行测试

 

posted on 2024-05-21 23:46  Daniel350  阅读(61)  评论(0)    收藏  举报