Python模拟页面调度LRU算法
所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。
问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。
list=(1,3,4,6,2,5,1,2,3,4,5)#存放要访问的页面
a_list=[]#模拟算法中的主存,最多存放3个数
count=0#记录缺页数
tag=1#标记是否缺页
for i in list:
if i not in a_list:#如果将要访问的元素不在a_list中,即为缺页
count+=1
tag=1
if len(a_list)<3:#主存还有空闲
a_list[len(a_list)::]=[i]#a.list.append(i)将元素i添加到a_list尾部
else:
a_list[:2:]=a_list[1::]#将前两个元素替换为后两个元素,列表首元素出列表的功能
a_list[2::]=[i]#将i元素放移动后的到列表最后
else:
tag=0
a_list[a_list.index(i)::]=a_list[a_list.index(i)+1::]#将i开始和元素后面的元素替换为i元素后面的元素
a_list[len(a_list)::]=[i]#将i元素插入到移动后的列表后面
print(a_list,"缺页了"if tag==1 else "不缺页")
print("缺页数为:",count)