先进先出置换算法代码
时间: 2024-06-30 18:01:19 浏览: 101
先进先出(First-In-First-Out,FIFO)置换算法,也称为LRU(Least Recently Used,最近最少使用)算法,是一种常用的页面置换策略,主要用于内存管理中。当系统内存不足时,会淘汰最长时间未使用的页面以腾出空间给新分配的页面。
在大多数编程语言中,操作系统或特定库提供了实现LRU替换的接口。以下是一个简单的Python示例,使用`collections`模块中的`OrderedDict`来模拟LRU缓存:
```python
from collections import OrderedDict
class LRU_Cache:
def __init__(self, capacity):
self.cache = OrderedDict()
self.capacity = capacity
def get(self, key):
if key in self.cache:
# 如果key存在,将它移动到dict的最后
self.cache.move_to_end(key)
return self.cache[key]
else:
return -1 # 表示key不存在
def put(self, key, value):
if key in self.cache:
# 如果key已经存在,删除旧值并更新
del self.cache[key]
elif len(self.cache) >= self.capacity:
# 如果达到容量上限,删除最近最少使用的页面
self.cache.popitem(last=False) # remove the least recently used item
# 插入新的键值对
self.cache[key] = value
# 使用示例
cache = LRU_Cache(2)
cache.put(1, 1)
cache.put(2, 2)
print(cache.get(1)) # 输出:1
cache.put(3, 3) # 最早放入的2被替换掉
print(cache.get(2)) # 输出:-1,表示2不存在了
```
阅读全文