- 实验要求
编程实现请求分页内存管理方法中的页面置换算法。包括FIFO,LRU.并对实验结果进行分析。 - 代码
import numpy as np import datetime class Page: def __init__(self,id:int): self.id = id self.arrive = datetime.datetime.now() class PageReplacement: def __init__(self,mode:str,maxpage:int,pagenum:int): self.mode = mode self.pagenum = pagenum self.pages = [Page(np.random.randint(0,maxpage)) for _ in range(np.random.randint(20,50))] if mode.lower()=='both': self.FIFO() self.LRU() self.printstates() elif mode.lower()=='fifo': self.FIFO() self.printstates() elif mode.lower()=='lru': self.LRU() self.printstates() else: raise Exception('Error! Unavailable mode {}'.format(mode)) def FIFO(self): states = [] state = [] firstin = 0 for page in self.pages: if len(state)
- 模拟优化
- 程序的局部性原理,如果某数据被访问,则不久之后该数据可能再次被访问。因此页面置换算法才得以实现
- 页面号引用串随机生成来模拟真实环境
- 运行方式
python exp4.py # python exp4.py --mode=both --maxpage=10 --pagenum=3 # python exp4.py --mode=fifo --maxpage=10 --pagenum=3 # python exp4.py --mode=lru --maxpage=10 --pagenum=3
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)