記憶體頁面置換演算法

2022-08-26 07:33:12 字數 1333 閱讀 9676

一丶

1.部分概念

記憶體抖動:每次頁面置換都要耗費很多時間(置換演算法呼叫選擇被置換的頁面->髒頁判定,寫會被置換的頁面->io中斷,寫入記憶體,磁碟尋道,讀寫速度相比cpu速度,其效率極低),

多次頻繁的頁面置換,會使等待時間增長,cpu使用率降低,且多次讀寫,占用匯流排,也不利於其他程式執行,緩解記憶體抖動方式為:

1.更快的讀寫硬碟       2.更大的記憶體           3,快速而有效的頁面置換演算法       4.高內聚的**段編寫方式

2..記憶體固定劃分方式

1)動態大小分配:程式要多少,就分配多少,分配策略為

1.1)最先適應演算法(first-fit):以空閒塊先後位置作為空閒鍊錶位置,每次請求則從頭判定是否有容納的空閒塊,有則分配,無則拒絕,容易產生碎片(前端)

1.3)迴圈適應演算法(next-fit):最先適應演算法變種,空閒鏈多設立倆個當前指標p1,p2,p1迴圈移動判定,迴圈查詢直至空鏈則重指鏈頭,p1==p2時返回查詢失敗

1.4)最壞適應演算法(wrost-fit):最佳適應演算法類似,邏輯相似,分配相反,優先切割大塊,使得大應用較難分配,且每次分配後剩餘大小的重新定位耗費較多時間定位

2)動態分配------段分配:以程式資料段為邏輯分配單位,動態請求記憶體大小,其邏輯依據為程式段的高內聚,程式段間低耦合原則,呼叫的資料一般都在同一程式段,以此減少頁面置換次數,

其必須要有段號(段表內匹配),段內位址(資料定位),因此其為二維位址

3)段頁式分配----邏輯分段,段內分頁,以段為請求單位,頁為實際分配單位,解決動態大小分配時碎片過多問題

4)固定大小頁面劃分(常設為4k),避免頁面間的碎片產生,但無法避免頁面內碎片產生,因此頁面大小設定非常重要,過小則檔案節點過多,大檔案需要多個索引,數量過多,重定位次數多(io中段相對多),

過大則小檔案分配時,頁內碎片較大

頁面置換演算法

4.1)先進先出(fifo)--實現簡單(依據請求時間構造佇列先後出隊),效能差,頁面多還可能性能更差

4.2)最佳置換演算法(opt)---一種理想中的演算法,無法實現,其選擇被替換頁面為當前記憶體頁面(可置換頁面,以置換策略而定,全域性置換,區域性置換,動態區域性置換等)中,選擇最晚使用到的頁面,作為其他演算法的參考

4.3)最近最久未使用演算法(lru)--採用佇列實現,動態管理佇列,每次呼叫記憶體中的頁面,則抽出置於佇列末尾,每次替換則直接讓可替換的頁面出隊,實踐效果最佳  

4.4)最少使用置換演算法(lfu)---記憶體中每個頁面內增加計數字,每次呼叫,計數加一,淘汰則遍歷選擇最小數值頁面淘汰,效果可以,但要注意數值溢位邊界

6)置換細節:除置換演算法外,要注意被置換頁面的寫會,若為髒頁,則置換時應該先寫回虛擬記憶體或者硬碟中,再進行替換,防止資料丟失、

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法fifo first in first out 該演算法的基本思想是首先淘汰那些駐留在主存時間最長的頁面。最近最久未用演算法 lru 該演算法的基本思想是 如果某一頁被訪問了,那麼它很可能馬上又被訪問 反之,如果某一頁很久沒被訪問,那麼最近也不會再訪問。lr...

頁面置換演算法

include using namespace std int process 100 頁面佇列 int memory 3 塊數 int optqueue 100 opt演算法的佇列 int fifoqueue 100 fifo演算法佇列 int lruqueue 100 lru演算法佇列 int ...

頁面置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。常見的置換演算法有 1 最佳置換演算法 opt 理想置換演算法 這是一種理想情況下的頁...