在將頁面算法置換算法之前,首先需要了解系統如何分配給每個進程內存空間,即為每個進程分配多少個頁框駐留進程。分配到的頁框稱為駐留集。
有兩種方法:固定駐留策略和動態駐留策略。
固定駐留策略指為每個進程分配固定的頁框數,不能增減,也不能使用別的進程的空間
動態駐留策略指在進程活躍期間,系統可以根據進程的缺頁率進行動態調整,進程的頁框數可以增減。
這樣就有兩個問題:頁框置換的范圍,如何選擇置換出內存的頁框。
頁框置換有局部置換和全局置換,局部置換僅限於本進程的空間中,全局置換則允許置換別的進程中的頁框。
固定駐留策略必然導致局部置換,而全局置換必須使用動態駐留策略。
第一個問題解決,第二個問題則涉及到置換算法,壞的置換算法可能導致抖動,所謂抖動就是指一個經常使用的頁面被經常調入和調出,導致系統效率低下。
置換算法有:最佳置換算法OPT、FIFO置換算法、最少使用頁面置換算法、最近未使用頁面置換算法、時鍾頁面置換算法等
OPT算法是理論算法,它將不再使用的頁面換出,而實際中不能預知哪個頁面不再使用,但是這個算法是最優算法,可以作為評測其他算法的性能。
FIFO算法:按照頁面裝進內存的時間進行置換,越老的頁面最先被換出,不管該頁面是否經常使用,這樣就有可能導致缺頁率增加,導致頁面置換次數增加。
最少使用頁面置換算法:按照上次使用時間進行排序,將離上次使用時間最長的頁面換出,可以采用棧的數據結構,每次頁面被訪問將該頁面號放在棧頂。
最近未使用頁面置換算法:設置引用位R,每次調用將R=1,系統每個一段時間將R=0,當進行置換式檢查哪個頁面為零說明近期不會再使用,可以將其換出。
時鍾頁面置換算法:采用應用為R,當R=1說明被引用過,這種方法是FIFO的改進,根據裝入內存時間和是否被引用過作為標准,首先從時間最長項檢查,若R=0則置換出,若為1則檢查下一項並將R=0。若全部R=1,則按照FIFO方法進行置換。
-------------------------------------------------------------------------
選擇好置換的頁面后,如何進行置換呢?
首先判斷被置換的頁面是否被修改過,若沒有則可以直接擦出該頁框,如修改過則必須首先保存到外存中,然后再讀入新頁面。
頁面緩沖技術:不必先保存,因為每次都保存一個頁面增加了IO操作,消耗過大。
緩沖技術可以將被修改過和未修改過的頁面存在緩沖區,然后對被修改過的頁面進行批量保存,減少了IO操作。未修改的頁面進行緩沖是為了防止在近期內被調用,不必再從外存調入內存,若在一段時間內不被調用則批量消除。