1. 程式人生 > 其它 >python-模擬頁面排程LRU演算法

python-模擬頁面排程LRU演算法

【題目描述】所謂LRU演算法,是指在發生缺頁並且沒有空閒主存塊時,把最近最少使用的頁面換出主存塊,騰出地方來調入新頁面。 問題描述:一程序獲得n個主存塊的使用權,對於給定的程序訪問頁面次序,問當採用LRU演算法時,輸出發生的缺頁次數。

【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。

【輸入格式】在第一行中輸入程序獲得使用權的主存塊數量n。 在第二行中輸入程序訪問頁面的次序,各資料之間以空格為間隔。

【輸出格式】輸出對於給定的n和程序訪問頁面的次序,輸出採用LRU演算法時的缺頁次數。

【輸入樣例】3

      1 2 3 4 1 2 5 1 2 3 4 5

【輸出樣例】7

 

首先了解一下什麼是LRU演算法

可以參考這篇部落格,裡面舉的例子非常好:如何實現LRU演算法? - murphy_gb

那麼這道題,我們應該怎麼分析?

 程式碼實現:

queue = []
count = 0
piece = int(input())
process = input()
page = process.split(" ")
for i in page[::]:
    if i == '':
        page.remove(i)
for i in range(0, len(page)):
    queue.append(page[i])
    if i == len(page) - 1:
        
break if len(queue) == piece: j = 0 while j in range(0, piece): if page[i + 1] == queue[j]: queue.append(queue[j]) # 如果後一個頁面與這三個頁面中的相同,那麼就將這個頁面提前 queue.pop(j) # 刪除到原來所處的位置 page.pop(i + 1) # 刪除,進入下一個頁面 j = 0
else: j += 1 queue.pop(0) # 淘汰頁面 count += 1 print(count)