操作系統之分頁式內存管理2

1.分頁的內存管理克服了交換系統的缺點:外部碎片,程序不能大於物理內存等。但付出的代價是頁面更換。在交換系統下,一個程序作爲一個整體加載到內存,這樣,在程序運行時,無須在從磁盤上加載任何東西,而分頁系統下,一個程序的所有頁面不一定都在內存中,所以可能會產生缺頁中斷,缺頁中斷的服務程序負責把位於磁盤上的數據加載到物理內存中來,如果物理內存中有空閒的頁面,那就直接使用空閒的頁面,但如果物理內存已滿,就需要挑選某個已經使用過的頁面進行替換。這裏就出現一個問題,如何挑選?

2.如果挑選的頁面是之後很快又要被訪問的頁面,那樣系統很快又要產生缺頁中斷,這樣是很不合適的。頁面更換的目標就是降低隨後發生缺頁中斷的次數或者概率。因此,我們選擇的頁面應當是在隨後相當長的時間內不會被訪問的頁面,最好是在也不會被訪問的頁面。如果可能,我們也應該選擇一個沒有修改過的頁面,這樣,替換時就無須將被替換的頁面的內容寫回磁盤,從而進一步加快缺頁中斷的響應速度。

3.頁面更換的算法?

 1)公平算法:隨機算法,先來先出算法,第二次機會算法,時鐘算法。

 2)非公平算法:最優算法,NRU算法,LRU算法,工作集算法。

4.先來先出算法:更換最早進入內存的頁面,實現機制是使用鏈表將所有在內存的頁面按照進入時間的早晚連起來,然後每次置換鏈表頭上的頁面,新進來的頁面則掛在鏈表的末端。

5.第二次機會算法:由於FIFO只考慮進入內存的時間,沒有關心一個頁面被訪問的頻率,可能替換了一個經常被訪問的頁面。改進的方法是,在使用FIFO更換一個頁面時,需要看下該頁面是否在最近被訪問後,如果沒有被訪問,直接替換,如果最近被訪問,則將該頁面掛到鏈表末端,並將該頁面進入內存的時間設置爲當前時間,並將其訪問位清零。

6.時鐘算法:


7.NRU(Not Recently Used)最近未使用算法:選擇一個在最近一段時間沒有被訪問過的頁面進行替換,利用頁面的訪問和修改位。


8.LRU(Least Recently Used)最近使用最少算法:不僅考慮最近是否使用,還要考慮最近使用的頻率。它的實現方法有頁表式的方法,鏈表式的方法,矩陣式的方法,移位寄存器的方法。

9.工作集算法在實際操作系統中使用較多。

發佈了143 篇原創文章 · 獲贊 29 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章