python学习之路——python切片模拟LRU算法

简介:

 

问题描述:一进程刚获得三个主存块的使用权,若该进程访问页面的次序是1,2,3,4,1,2,5,1,2,3,4,5。当采用LRU算法时,发生的缺页次数是多少?

Hint:LRU(Least Recently Used)意思是近期最少使用。

这个算法常用于页面置换算法中。当我们新要访问的页面不在主存中时,就将最近最少使用的页面移除主存,将新的页面存入主存。可以用一个队列来模拟这个算法:目前访问的网页在队列的尾部,最近最少访问的网页在队列的头部,如果新访问的网页在队列中就把这个页面移到队尾,其他页面依次前移;如果新访问的网页不在队列中那就把队头出队然后其他页面前移,新要访问的页面入队。所谓缺页就是指在主存中没有需要访问的页面。

用python模拟LRU算法:

 
  1. List=[1,2,3,4,1,2,5,1,2,3,4,5]  #此列表中存放将要访问的页面 
  2. a_list=[]                       #此列表用来模拟LRU算法中的主存 最多存放3个数 
  3. count=0                         #记录缺页数 
  4. tag=1                           #标记是否缺页 
  5. for i in List:                  #将要访问的列表元素进行循环 
  6.     if i not in a_list:         #如果要访问的元素不在a_list中 即为缺页 
  7.         count+=1 
  8.         tag=1 
  9.         if len(a_list)<3:                   #如果a_list中没有放满 
  10.             a_list[len(a_list)::]=[i]       #等价于a_list.append(i)将元素i添加到a_list尾部 
  11.         else:                               #如果列表满了 
  12.             a_list[:2:]=a_list[1::]         #利用切片,将前两个元素替换为后两个元素,列表首元素出列表的功能 
  13.             a_list[2::]=[i]                 #将i元素放移动后的到列表最后 
  14.     else:                                   #i元素在列表中 
  15.         tag=0 
  16.         a_list[a_list.index(i)::]=a_list[a_list.index(i)+1::]#将i开始和元素后面的元素替换为i元素后面的元素 
  17.         a_list[len(a_list)::]=[i]                            #将i元素插入到移动后的列表后面 
  18.     print(a_list,"缺页了"if tag==1 else "不缺页"
  19. print("缺页数为:",count

运算结果:


本文作者:佚名

来源:51CTO

相关文章
|
2天前
|
小程序 程序员 开发者
Python学习心得——小白的成长之路
Python学习心得——小白的成长之路
9 0
|
3天前
|
网络安全 Python
网安之python基础学习练习(2-3)
本篇博文是关于网络安全课程中Python编程的学习实践总结。分享关于两个练习题目及其解决方案。第一个题目要求用户输入姓名并选择一项武技,使用for循环和if判断实现。第二个题目是删除列表中特定值(如&#39;cat&#39;)的所有元素,作者展示了两种方法,包括列表推导式和常规循环删除。接下来,文章还介绍了如何编写一个函数,随机生成一副扑克牌(除大小王),并返回一张随机抽取的牌。
|
3天前
|
存储 网络安全 索引
网安之python基础学习练习(1)
本篇博文是关于网络安全课程中Python编程学习的总结,主要内容包括:1) 常见数据类型的回顾和应用,如数字(整数、浮点数、复数)、字符串、列表、元组、集合、字典和布尔类型;2) 数据类型的实例操作,展示如何创建和使用这些类型;3) 数值类型之间的加、减、乘、除和模运算;4) 列表和元组的索引访问;5) 字典的修改,如查看键和值,以及更新值。文章强调了基础知识的重要性,并以“自满必定失败,骄傲必定后悔”作为每日一言。
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
4天前
|
算法 机器人 Python
Python实现教程:平面最短路径算法
Python实现教程:平面最短路径算法
12 1
|
5天前
|
机器学习/深度学习 数据挖掘 程序员
Python学习难度的具体标准
Python学习难度因个人编程背景、目标、资源和学习能力而异。对有编程经验者来说,Python的简单语法使其易上手;而对于新手,理解基础概念可能需更多时间。不同应用领域(如Web开发、数据分析)的学习曲线也不同。丰富的学习资源适应各种水平,但选择合适资源很重要。成功学习Python需要逻辑思维、问题解决能力及毅力。总的来说,Python学习难度因人而异,需结合自身条件评估。
18 0
|
5天前
|
存储 索引 Python
python数据结构知识学习
【5月更文挑战第6天】Python提供四种核心数据结构:列表(List)——可变有序集合,支持索引和切片;元组(Tuple)——不可变有序集合;字典(Dictionary)——键值对结构,通过键访问值;集合(Set)——无序不重复元素集合,支持数学运算。此外,Python允许自定义数据结构,如链表、树、图,以适应不同问题需求。
13 0
|
10天前
|
机器学习/深度学习 分布式计算 物联网
【Python机器学习专栏】联邦学习:保护隐私的机器学习新趋势
【4月更文挑战第30天】联邦学习是保障数据隐私的分布式机器学习方法,允许设备在本地训练数据并仅共享模型,保护用户隐私。其优势包括数据隐私、分布式计算和模型泛化。应用于医疗、金融和物联网等领域,未来将发展更高效的数据隐私保护、提升可解释性和可靠性的,并与其他技术融合,为机器学习带来新机遇。
|
10天前
|
机器学习/深度学习 自然语言处理 搜索推荐
【Python机器学习专栏】迁移学习在机器学习中的应用
【4月更文挑战第30天】迁移学习是利用已有知识解决新问题的机器学习方法,尤其在数据稀缺或资源有限时展现优势。本文介绍了迁移学习的基本概念,包括源域和目标域,并探讨了其在图像识别、自然语言处理和推荐系统的应用。在Python中,可使用Keras或TensorFlow实现迁移学习,如示例所示,通过预训练的VGG16模型进行图像识别。迁移学习提高了学习效率和性能,随着技术发展,其应用前景广阔。
|
10天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习中的Bagging与Boosting
【4月更文挑战第30天】本文介绍了集成学习中的两种主要策略:Bagging和Boosting。Bagging通过自助采样构建多个基学习器并以投票或平均法集成,降低模型方差,增强稳定性。在Python中可使用`BaggingClassifier`实现。而Boosting是串行学习,不断调整基学习器权重以优化拟合,适合弱学习器。Python中可利用`AdaBoostClassifier`等实现。示例代码展示了如何在实践中运用这两种方法。