虛擬內存之頁面置換算法

四種頁面置換算法:

  • 最佳(OPT,Optional)
  • 最近最少使用(LRU,Least Recently Used)
  • 先進先出(FIFO,First In First Out)
  • 時鐘(Clock)

一、最佳置換算法

OPT 策略選擇置換下次訪問距當前時間最長的那些頁,可以看出該算法能導致最少的缺頁中斷,但是由於它要求操作系統必須知道將來的事件,顯然這是不可能實現的。但它仍然能作爲一種標準來衡量其他算法的性能。

二、最近最少使用算法

LRU 策略置換內存中上次使用距當前最遠的頁。根據局部性原理,這也是最不可能訪問的頁。實際上,LRU 策略的性能接近於 OPT 策略。該方法的問題在於比較難以實現。一種實現方法是給每一頁添加一個最後訪問的時間戳,並且必須每次訪問內存時,都更新這個時間戳。即使有這種方案的硬件,開銷仍然是非常大的。另外一種可選的方法是維護一個關於訪問頁的棧,但開銷同樣很大。

三、先進先出算法

FIFO 策略把分配給進程的頁框視爲一個循環緩衝區,按循環方式移動頁。它所需的只是一個指針,這個指針在該進程的頁框中循環。因此這是一種最簡單的頁面置換策略。除了它的簡單性,這種選擇方法所隱含的邏輯是置換駐留在內存中最長時間的頁:一個很久以前取入內存的頁,到現在可能已經不會再用了。這個推斷是錯誤的,因爲經常出現一部分程序或數據在整個程序的生命週期中使用頻率很高的情況,如果使用 FIFO 算法,則這些頁會被反覆的換入換出,增加了系統開銷。

四、時鐘

時鐘是 LRU 的近似實現。最簡單的時鐘策略需要給每一頁框管理一個附加位,稱爲使用位。當某一頁首次裝入內存時,則將該頁框的使用位置爲 1;當該頁隨後被訪問到時(在訪問產生缺頁中斷後),他的使用位也會被置爲 1。對於頁面置換算法用於置換的候選頁框集合被視爲一個循環緩衝區,並且有一個指針與之相關聯。當一頁被置換時,該指針被設置成指向緩衝區中的下一個頁框。當需要置換一頁時,操作系統掃描緩衝區,以查找使用位被置爲 0 的一個頁框。每當遇到一個使用位爲 1 的頁框時,操作系統就將該爲重新置爲 0 ;如果在這個過程開始時,緩衝區所有頁框的使用位均爲 0,則選擇遇到的第一個頁框置換;如果所有頁框的使用位均爲 1,則指針在緩衝區中完整地循環一週,把所有使用位都置爲 0,並且停留在最初的位置上,置換該頁框中的頁。

舉例:

某個進程的執行需要訪問 5 個不同的頁,運行該程序需要的頁地址的順序爲:
2 3 2 1 5 2 4 5 3 2 5 2

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章