python-模拟页面调度LRU算法
2024-08-31 07:32:10
【题目描述】所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。 问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在第一行中输入进程获得使用权的主存块数量n。 在第二行中输入进程访问页面的次序,各数据之间以空格为间隔。
【输出格式】输出对于给定的n和进程访问页面的次序,输出采用LRU算法时的缺页次数。
【输入样例】3
1 2 3 4 1 2 5 1 2 3 4 5
【输出样例】7
首先了解一下什么是LRU算法
可以参考这篇博客,里面举的例子非常好:如何实现LRU算法? - murphy_gb
那么这道题,我们应该怎么分析?
代码实现:
queue = []
count = 0
piece = int(input())
process = input()
page = process.split(" ")
for i in page[::]:
if i == '':
page.remove(i)
for i in range(0, len(page)):
queue.append(page[i])
if i == len(page) - 1:
break
if len(queue) == piece:
j = 0
while j in range(0, piece):
if page[i + 1] == queue[j]:
queue.append(queue[j]) # 如果后一个页面与这三个页面中的相同,那么就将这个页面提前
queue.pop(j) # 删除到原来所处的位置
page.pop(i + 1) # 删除,进入下一个页面
j = 0
else:
j += 1
queue.pop(0) # 淘汰页面
count += 1
print(count)
最新文章
- hibernate中HQL练习时候一个小小的错误导致语法异常
- Android智能指针sp wp详解
- [Android Pro] Service (startservice , bindservice , unbindservice, stopService)
- Ext通过后台校验字段是否重复
- SPRING STS Virgo OSGI 开发一 : bundle 项目的创建
- Eclipse对printf()不能输出到控制台的解决方法
- 用js实现跳转提示页面
- Python经常使用第三方工具、库、骨架
- 如何使用linq操作datatable进行分组
- Hibernate中遇见的问题
- 锁定表头和固定列(Fixed table head and columns)
- Derivative of Softmax Loss Function
- 关于各种O,DO/BO/DTO/VO/AO/PO
- SDUT 3002-素数间隙(素数筛+暴力)
- Python datetime获取详细时间
- 关于安装VS2010过程中的错误
- 【RL系列】MDP与DP问题
- java类的定义
- 制作smarty模版缓存文件
- nrm npm源管理利器