操作系統-虛擬存儲器
虛擬存儲器
所謂虛擬存儲器是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲器系統。采用了局部性原理設計,建立在離散分配存儲管理方式上。
實現方法
-
分頁請求系統
分頁請求系統是在分頁系統的基礎上增加了請求調頁功能和頁面置換功能形成的頁式虛擬存儲系統
- 硬件支持
-
請求分頁的頁表機制
將用戶地址空間的邏輯地址映射為內存地址空間
(1)狀態位P:指示該頁是否已調入內存。
(2)訪問字段A:記錄本頁在一段時間內被訪問的次數或最近未被訪問的時間。
(3)修改位M:表示該頁在調入內存後是否被修改過。若修改過,則換出時需重寫至外存。
(4)外存地址:指出該頁在外存上的地址。
-
缺頁中斷機構
缺頁中斷是一種特殊的中斷,它與一般的中斷有明顯的區別。
- 通常CPU在執行完一條指令的時候才會去檢查是否有中斷請求到達,而缺頁中斷在指令執行過程中,若發現所需要的指令或者數據不在內存中,就會立立即產生和處理缺頁中斷信號
- 一條指令在執行過程中可能產生多次缺頁中斷。
-
地址變換機構
請求分頁系統中的地址變換機構是在分頁系統地址變換的機構增加了產生和處理缺頁中斷的功能,其他的都和分頁系統地址轉換機構處理一樣
-
- 實現請求分頁軟件
請求分頁中的內存分配
由於采用了虛擬存儲技術,那麽在分配內存時候出現了一些問題
- 為了保持進程能夠正常運行,所需要裝載進內存的最小物理塊
- 分配物理塊的時候,需要采取什麽樣的分配策略
- 為不同進程所分配的物理塊數是平局分配還是按進程大小分配。
-
最小物理塊數的確定
為每一個進程分配的物理塊越少,缺頁率就會上升,系統容易發生“抖動”
-
內存分配策略
-
固定分配局部置換
固定分配:為每一個進程分配一組固定數目的物理塊,在進程運行期間不再改變。
局部分配:進程在運行中發現缺頁,只能從分配給該進程的n個頁面中選出一頁換出,然後再調入一頁
-
可變分配全局置換
可變分配:為每一個進程分配一組固定數目的物理塊,在進程運行期間做適當的增加或者減少
全局置換:在進程運行期間出現了缺頁,則將OS所保留的空閑物理塊取出一塊分配給該進程,或者以所有進程的全部物理塊為標,選擇一塊換出,然後將所缺的頁調入
-
可變分配局部置換
為每一個進程分配一組固定數目的物理塊,在發生缺頁的時候,只允許從該進程在內存中的頁面選擇一頁換出,當頻繁有缺頁中斷的時候,OS為它增加附加的物理塊
-
-
物理塊分配算法
請求分頁中的頁面調入策略
為了保證進程的正常運行,需要事先將要執行的部分程序和數據所在的頁面調入內存中,這裏就涉及到了系統何時調入所需要的頁面,從何處調入這些頁面以及如何進行調入的
-
何時調入
-
預調頁策略
預測不久就會使用的頁面,將其一起調入到內存中
-
請求調頁策略
當訪問到頁面不在內存中時,請求調入該頁
-
-
從何處調入
- 如果系統有足夠的對換區空間,從對換區空間中調入
- 系統沒有足夠的對換區空間,對應不需要修改的文件從文件區調入,用完之後直接放棄,而對於那些需要修改的文件,從對換區調入,修改完之後保存在對換區,需要的時候再調入
-
調入過程
當需要訪問的頁面不在內存中時,就會發出缺頁中斷,中斷處理程序保存CPU環境,查找頁面所對於的物理塊,調入內存,修改頁面,如果內存滿了,需要換出一些沒用的頁面。
- 硬件支持
-
分段請求系統
分段請求系統是在分段系統的基礎上增加了請求調段功能和分段置換功能形成的段式虛擬存儲系統
-
硬件支持
-
請求分段的段表機制
存取方式:存取屬性(執行、只讀、允許讀/寫)
訪問字段A:記錄該段被訪問的頻繁程度
修改位M:表示該段在進入內存後,是否被修改過。
存在位P:表示該段是否在內存中。
增補位:表示在運行過程中,該段是否做過動態增長。
外存地址:表示該段在外存中的起始地址。
-
缺段中斷機構
和缺頁中斷機構差不多
-
地址變換機構
-
-
軟件支持
-
操作系統-虛擬存儲器