问题描述:一过程刚获得三个主存块的应用权,若该进查拜访页面的次序是1,2,3,4,1,2,5,1,2,3,4,5。当采取LRU算法时,产生的缺页次数是若干?
用python模仿LRU算法:
运算结不雅:
Hint:LRU(Least Recently Used)意思是近期起码应用。
这个算法常用于页面置换算法中。当我们新要拜访的页面不在主存中时,就将比来起码应用的页面移除主存,将新的页面存入主存。可以用一个队列来模仿这个算法:今朝拜访的网页在队列的尾部,比来起码拜访的网页在队列的头晨,如不雅新拜访的网页在队列中就把这个页面移到队尾,其他页面依次前移;如不雅新拜访的网页不在队列中那就把队头出队然后其他页面前移,新要拜访的页面入队。所谓缺页就是指在主存中没有须要拜访的页面。
- List=[1,2,3,4,1,2,5,1,2,3,4,5] #此列表中存放将要拜访的页面
- a_list=[] #此列表用来模仿LRU算法中的主存 最多存放3个数
- count=0 #记录缺页数
- tag=1 #标记是否缺页
- for i in List: #将要拜访的列表元素进行轮回
- if i not in a_list: #如不雅要拜访的元素不在a_list中 即为缺页
- count+=1
- tag=1
- if len(a_list)<3: #如不雅a_list中没有放满
- a_list[len(a_list)::]=[i] #等价于a_list.append(i)将元素i添加到a_list尾部
- else: #如不雅列表满了
- a_list[:2:]=a_list[1::] #应用切片,将前两个元素调换为后两个元素,列表首元素出列表的功能
- a_list[2::]=[i] #将i元素放移动后的到列表最后
- else: #i元素在列表中
- tag=0
- a_list[a_list.index(i)::]=a_list[a_list.index(i)+1::]#将i开端和元素后面的元素调换为i元素后面的元素
- a_list[len(a_list)::]=[i] #将i元素插入到移动后的列表后面
- print(a_list,"缺页了"if tag==1 else "不缺页"
推荐阅读
这个新技巧可以让运营商在一个硬件基本举措措施切搀扶多个虚拟的端到端收集,每个收集切片大年夜设备到接入网到传输网再到核心网在逻辑上隔离,适配各类类型办事的不合特点需求。对于每一>>>详细阅读
本文标题:python学习之路——python切片模拟LRU算法
地址:http://www.17bianji.com/lsqh/34871.html
1/2 1