lru页面调度算法模拟
时间: 2023-08-16 16:14:23 浏览: 132
LRU算法是一种缓存算法,它的全称是Least Recently Used,即最近最少使用算法。该算法的思想是,当缓存满时,淘汰最近最少使用的数据。这种算法可以有效地提高缓存的命中率,从而提高系统性能。
下面是一个简单的LRU页面调度算法的模拟程序,代码如下:
```python
class LRUCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = {}
self.lru_list = []
def get(self, key):
if key in self.cache:
# 更新访问记录
self.lru_list.remove(key)
self.lru_list.append(key)
return self.cache[key]
else:
return -1
def put(self, key, value):
if key in self.cache:
# 更新访问记录
self.lru_list.remove(key)
self.lru_list.append(key)
self.cache[key] = value
else:
# 淘汰最近最少使用的数据
if len(self.cache) >= self.capacity:
del self.cache[self.lru_list[0]]
del self.lru_list[0]
self.cache[key] = value
self.lru_list.append(key)
# 测试程序
cache = LRUCache(3)
cache.put(1, 1)
cache.put(2, 2)
cache.put(3, 3)
print(cache.get(1)) # 返回 1
cache.put(4, 4)
print(cache.get(2)) # 返回 -1
cache.put(5, 5)
print(cache.get(3)) # 返回 -1
print(cache.get(4)) # 返回 4
print(cache.get(5)) # 返回 5
```
在这个程序中,LRUCache类表示一个缓存对象,它包含三个成员变量:capacity表示缓存的容量,cache是一个字典,用于存储缓存数据,lru_list是一个列表,用于记录最近访问的数据。
代码中的get()方法用于查询缓存中是否存在指定的键,如果存在,则更新访问记录,并返回对应的值;否则返回-1。put()方法用于向缓存中添加数据,如果数据已经存在,则更新访问记录;否则,先检查缓存是否已满,如果已满,则淘汰最近最少使用的数据,并将新数据添加到缓存中。
在测试程序中,我们创建了一个容量为3的缓存对象,向其中添加了三个数据,然后查询了第一个数据,再添加两个数据,最后查询了三个数据。运行结果符合预期,证明了LRU页面调度算法的正确性。
阅读全文