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

大数据 算法
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

运算结果:

责任编辑:武晓燕 来源: 36大数据
相关推荐

2011-07-26 09:32:08

iPhone 模拟器

2020-12-16 15:56:26

机器学习人工智能Python

2021-07-15 14:29:06

LRU算法

2020-05-15 17:05:51

Oracle数据库LRU算法

2019-12-24 10:32:01

OracleLRU脏块

2020-09-18 10:31:47

LRU算法数组

2022-06-17 07:49:14

缓存LRU

2022-05-09 19:59:15

RedisLRU 算法

2021-09-05 18:29:58

Linux内存回收

2020-02-19 19:18:02

缓存查询速度淘汰算法

2013-04-16 10:48:04

Python序列

2015-07-29 10:31:16

Java缓存算法

2020-10-30 11:30:15

Least Recen

2021-12-21 06:09:05

Python切片索引

2020-12-19 10:54:25

机器学习线性回归算法

2020-12-23 07:54:56

Python机器学习逻辑回归算法

2014-07-28 14:04:26

2022-02-15 23:38:22

Python机器学习算法

2022-03-14 08:01:06

LRU算法线程池

2023-07-06 12:39:14

RedisLRULFU
点赞
收藏

51CTO技术栈公众号