下面是LRU页面置换和FIFO页面置换的代码示例:
LRU页面置换:
# 定义一个类表示页面
class Page:
def __init__(self, page_id):
self.page_id = page_id
self.last_access_time = 0
# 定义一个类表示LRU缓存
class LRUCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = []
def get(self, page_id):
for page in self.cache:
if page.page_id == page_id:
page.last_access_time = time.time()
return page
return None
def add(self, page_id):
page = self.get(page_id)
if page is not None:
self.cache.remove(page)
elif len(self.cache) >= self.capacity:
self.cache.pop(0)
page = Page(page_id)
self.cache.append(page)
# 使用示例
cache = LRUCache(3)
cache.add(1)
cache.add(2)
cache.add(3)
cache.get(1)
cache.add(4)
FIFO页面置换:
# 定义一个类表示FIFO缓存
class FIFOCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = []
def get(self, page_id):
for page in self.cache:
if page.page_id == page_id:
return page
return None
def add(self, page_id):
page = self.get(page_id)
if page is not None:
return
elif len(self.cache) >= self.capacity:
self.cache.pop(0)
page = Page(page_id)
self.cache.append(page)
# 使用示例
cache = FIFOCache(3)
cache.add(1)
cache.add(2)
cache.add(3)
cache.add(4)