python-模擬頁面排程LRU演算法
阿新 • • 發佈:2022-03-17
【題目描述】所謂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 = 0else: j += 1 queue.pop(0) # 淘汰頁面 count += 1 print(count)