6.1 請求分頁的實現
請求分頁是常用的實現虛擬存儲器的方式,其實現需要頁表機制、缺頁中斷機制和地址變換機構的支持。
頁表機制
分頁系統中地址映像是用過頁表實現的。在請求分頁的系統中,頁表項包括:邏輯頁號、物理塊號、狀態位P、訪問字段A、修改位M和外存地址。
缺頁中斷機構
在請求分頁中,若訪問的頁不在主存,便產生一個缺頁中斷。(這個缺頁中斷與前面的缺頁中斷並不是一回事。前面的缺頁中斷找不到頁面說明頁面已經丟失了,這個找不到頁面說明頁面還在外存中,沒有換入主存。)缺頁中斷與一般的中斷相比有明顯的區別:
地址變換機構
地址變換過程如圖所示
6.2 內存分配策略
在為進程分配內存時,主要涉及三個問題:最小物理塊數的確定;物理塊的分配策略;物理塊的分配算法。
最小物理塊數的確定
最小物理塊數,即能保證程序能正常運行的最小物理塊數。
物理塊的分配策略
在請求分頁系統中,可採用兩種內存分配策略:固定分配策略和可變分配策略。在進行置換時,也可採取兩種策略:全局置換和局部置換。
固定分配局部置換
基於進程的類型或程序管理員的建議,為每個進程分配一定數目的物理塊,整個運行期間都不再改變。如果程序在運行時發現缺頁,必須先從內存中換出一個頁面才能換入新的頁面,這樣才能整體內存不變。
這種方式的缺點在難以確定物理塊的數目,分配過多或過少都會造成系統整體效率的下降。
可變分配全局置換
採用這種策略時,系統會先為每個進程都分配一定數目的物理塊,而OS自身也會保持一定數目的空閒物理塊。當進程發生缺頁中斷時,系統會分配一個空閒的物理塊給該進程以調入新的頁面。這樣每個進程都能獲得新的物理塊,直到系統的空閒物理塊用完。這時候再發送缺頁中斷時,OS就從內存中調出一頁,該頁可能是任一進程的頁。具體的調換算法在後面會講到。
可變分配局部變換
同樣是系統在一開始為每個進程分配一定數目的物理塊,但是進程在發生缺頁中斷時,只能從自己進程中調出一頁。這樣就不會影響其他進程。但是系統會時刻觀察所有進程的缺頁中斷發生的頻率,缺頁中斷發生非常頻繁的進程會分配若干物理塊,直到中斷頻率降低到一定程度。同樣,缺頁中斷發生頻率過低的進程就會抽走若干物理塊,使得整體的缺頁中斷發生的頻率都控制在一定範圍。
物理塊的分配算法
物理塊的分配應該綜合考慮到進程的優先級和進程的大小,在重要的實時控制系統中,優先級高的進程就能分配到更多的物理塊。
原文:https://www.cnblogs.com/lunar-ubuntu/p/12290716.html