基於C 的請求分頁虛擬頁面替換演算法

2021-09-25 20:37:43 字數 1108 閱讀 2388

一、需求分析

實現opt、fifo、lru、clock等頁面替換演算法。接收使用者輸入引數,包括程式長度(頁面數)、頁框個數及頁面大小,輸出結果採用不同顏色區分命中、替換及直接加入空閒塊。

opt(最佳置換演算法):其所選擇的被淘汰頁面將是以後永不使用的,或許是在最長(未來)時間內不再被訪問的頁面,但是由於無法預知乙個程序在記憶體中的若干個頁面中,哪乙個頁面是未來最長時間內不被訪問的,因而該演算法無法實現

fifo(先進先出頁面是換算法):該演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面予以淘汰

lru(最近最久未使用置換演算法):只能利用「最近的過去」作為「最近的將來」的近似,因此,lru置換演算法是選擇最近最久未使用的頁面予以淘汰

clock:使用的較多的一種lru近似演算法

二、概要設計

fifo演算法:在該模擬系統中,使用佇列來儲存頁面並且按照其到達佇列的先後順序進行排序,因此,每次需要進行頁面替換時,便選擇隊首或者識別符號指示其駐留時間最長的頁面進行替換

lru演算法:同樣使用陣列佇列來模擬,陣列下標指示位置,而陣列值則作為識別符號來計算該頁面自最後一次被訪問到現在為止經歷了多長時間,當選擇被置換的頁面時,則掃瞄該陣列佇列,找到識別符號最大的頁面進行替換

clock演算法:同樣使用陣列佇列來模擬,陣列下標指示記憶體位置,而陣列值則作為識別符號在替換過程中發揮作用。當選擇被替換的頁面時,則掃瞄該陣列佇列,檢查陣列值,若值為0,則進行替換;若陣列值為1,則將陣列值置為1,繼續掃瞄下乙個陣列值。若掃瞄完畢沒有合適的頁面進行替換時,則對陣列進行第二次掃瞄

三、詳細設計

3.1 設計思想

fifo演算法:先進先出思想,即選擇在記憶體中駐留時間最久的頁面給予淘汰

lru演算法:根據頁面調入記憶體後的使用情況作出決策,選擇最近最久未使用耳朵頁面予以淘汰

clock演算法:設定訪問位,迴圈檢查各頁面使用情況,是一種lru近似演算法

3.2 模組設計

輸入子模組:接收使用者的輸入,使用者的輸入共有程式長度(頁面數)、頁框個數及頁面大小三種

模擬頁面置換子模組:該模組共有三種函式,分別模擬fifo演算法,lru演算法,clock演算法

基於C 的請求分頁虛擬頁面替換演算法

一 需求分析 實現opt fifo lru clock等頁面替換演算法。接收使用者輸入引數,包括程式長度 頁面數 頁框個數及頁面大小,輸出結果採用不同顏色區分命中 替換及直接加入空閒塊。opt 最佳置換演算法 其所選擇的被淘汰頁面將是以後永不使用的,或許是在最長 未來 時間內不再被訪問的頁面,但是由...

基於C 的請求分頁虛擬頁面替換演算法

在作業系統課上的一點小感想,基於c 的請求分頁虛擬頁面替換演算法,分享出來和大家一起學習。實現opt fifo lru clock等頁面替換演算法。接收使用者輸入引數,包括程式長度 頁面數 頁框個數及頁面大小,輸出結果採用不同顏色區分命中 替換及直接加入空閒塊。opt 最佳置換演算法 其所選擇的被淘...

請求分頁管理頁面置換演算法 最近最少使用LRU

該演算法的效能接近於最佳演算法,但實現起來較困難。因為要找出最近最少使用的頁面,必須為每一頁設定相關記錄項,用於記錄頁面的訪問情況,並且每訪問一次頁面都須更新該資訊。這將使系統的開銷加大,所以在實際系統中往往使用該演算法的近似演算法。這裡會給出lru演算法的c 原始碼 include stdafx....