所謂LRU算法,是指在發生缺頁而且沒有空閒主存塊時,把最近最少使用的頁面換出主存塊,騰出地方來調入新頁面。算法
問題描述:一進程得到n個主存塊的使用權,對於給定的進程訪問頁面次序,問當採用LRU算法時,輸出發生的缺頁次數。app
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)