儲存管理 虛擬記憶體

2021-07-25 16:01:16 字數 2604 閱讀 5046

儲存管理中虛擬記憶體是當記憶體容量不足時需要考慮的乙個問題。那麼:

接下來看看,怎麼記憶體是通過外存來擴充套件的。

為什麼提出這個問題,實際上問的是這個問題:程式真的可以劃分成很多塊,取部分程式塊裝入較小的記憶體中,然後還能正確執行麼?

面對後者提問,可以將程式的邏輯位址正確轉化實體地址,實現程式的分塊;同時為了高效的完成邏輯位址對映到實體地址的操作,使用頁式管理,段式管理或兩者結合的方式。

但是由於是從外存中裝入到記憶體中,由於訪問外存的速度相對於更慢,是否能高效的完成這個動作?經過大量的試驗發現程式的執行符合區域性性原理,集中訪問程式中的某幾塊,如果將經常使用的程式塊減少移動次數,便可解決這問題。

暫且只考慮到此,其中較為重要的缺頁中斷處理,以後再說。

擴充套件方式有以下幾種:

1. 頁式管理

2. 二級頁式管理

3. 倒排頁表

4. 段式管理

5. 段頁式管理

以下將結合圖示(參考作業系統精髓與設計原理中文第6版)具體地描述各種擴充套件方式。

2.1 頁式管理

其中由於程式劃分的虛擬記憶體塊大小與實際記憶體一致,這就保證了程式中的偏移位址,與記憶體中的偏移位址一致;

由於在程式裝入記憶體時建立了頁表,這就保證了程式可以將虛擬位址對映到頁表,訪問實際位址。

看看如何將程式的虛擬位址轉化為實際位址,實現程式的有效執行。

a. 虛擬位址=頁號:偏移量,將其中的頁號,與頁表指標相加,對映到頁表中的相關位置;

b. 通過查詢該頁號對應的頁表中的各項資訊,經過處理(可能從輔存中調入相應的頁到記憶體中)得到頁框號(塊號)

c. 將所得到的頁框號(塊號)與虛擬位址中的偏移量組合形成,實際的記憶體位址。

2.2 二級頁式管理

由於記憶體的限制,頁表的增長受限,然而記憶體增長較快。為了採用頁式管理,不得不將較大的頁表分成兩個頁表:根頁表和子頁表,根頁表存入記憶體,子頁表存入輔存。這樣既減輕了記憶體的鴨梨,又能使用較為成熟的管理。具體轉化位址過程:

a. 虛位址=根頁號:子頁內偏移(上圖標識不清):偏移量,將其中的根頁號與根頁表指標相加,得到子頁號;

b. 將得到的子頁號與虛位址中的子頁內偏移相加,經過一系列處理得到實際的塊號;

c. 將得到的塊號與虛位址中的偏移量組合形成實際位址

2.3 倒排頁表

外存的不斷發展,是原有的頁表無法適應新的要求。

在倒排頁表中,將虛位址中的頁號通過雜湊函式,對映到記憶體中的某一表中,該錶將具有相同雜湊值的頁號形成鏈,如圖所示,第i塊之後與第j塊相連。

具體的轉化過程:

a. 虛位址=頁號:偏移量,將其中的頁號通過雜湊函式,對映至某一記憶體塊上。

b. 遍歷具有相同雜湊值的頁號鏈,尋找當前頁號所對應的塊。

c. 將得到的頁號對應的記憶體中的位置,與虛位址中的偏移量組合形成實際的位址。

2.4 段式管理

段式管理是程式設計師自己將程式中具有特定功能的**歸為乙個模組,程式執行時,動態的將當前的模組裝入記憶體中,並將各個模組段記錄在段表中。

具體流程:

a. 虛位址=段號:偏移量,將虛位址中的段號通過段表指標,定位到段表中的具體位置;

b. 經過一系列處理讀出將段表中的某行,得到基址等資訊;

c. 將得到的基址與虛位址中的偏移量組合形成實際的記憶體位址。

由於存在段長等資訊可判斷當前虛位址是否違法訪問;由於每個模組為乙個段,其他程式則可以共享其中的某些模組,這是頁式管理所不能實現的。

2.5段頁式管理

段頁式管理是結合頁式管理和段式管理兩者的優點。記憶體利用率較高,模組化程度高,能提供較好的保護和共享機制等等。

它是將在段式管理的基礎上,將每一段再採用頁式管理的一套使用記憶體方法。

具體轉化過程:

a. 虛擬記憶體=段號:頁號:偏移量,將其中的段號取出,通過段表指標,與段表中的相關資訊建立聯絡,得到段中的頁表;

b. 將虛位址中的頁號對映到所得頁表中,得到相應的塊號;

c. 所得到的塊號與虛位址中的偏移量組合形成實際的位址。

以上只是簡單的描述了各種管理方式。

對於具體實現依舊有很多細節沒有介紹,比如說:如果虛位址並不能在頁表或段表中找到,怎麼辦?如何使用高速緩衝裝置,進行頁表項的查詢等等問題。

最後一篇只是簡單的涉及如何對缺頁中斷的處理,至於深入了解或學習其他內容請檢視相關書籍(比如:《作業系統精髓與設計原理》)或相關網路資源。

虛擬記憶體管理

定義 虛擬記憶體是計算機系統記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的記憶體 乙個連續完整的位址空間 而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時儲存在外部磁碟儲存器上,在需要時進行資料交換。我的理解 程序例項在使用者態並不直接操作物理記憶體位址,實際物理記憶體是可能是...

3 2 虛擬記憶體管理

3.2.1 虛擬記憶體的基本概念 1 傳統儲存管理方式的特徵 各種記憶體管理策略都是為了同時將多個程序保證在記憶體中以便允許多道程式設計。它們都具有以下兩個共同的特徵 1 一次性 作業必須一次性全部裝入記憶體後,方能開始執行。這會導致兩種情況發生 當作業很大,不能全部被裝入記憶體時,將使該作業無法執...

OS虛擬記憶體管理

說在前面的話 os記憶體管理 os的中斷 異常 系統呼叫 計算機記憶體越來越大,但是軟體的記憶體開銷也是隨之增加的,計算機系統總是會出現記憶體不夠的問題,於是出現了以下幾種辦法來解決記憶體空間不夠的問題 覆蓋 overlay 應用程式手動把需要的指令和資料儲存在記憶體中,這項技術的關鍵代表就是ms ...