作業系統核心原理 5 記憶體管理(下) 段式記憶體管理

2021-09-09 04:36:21 字數 1630 閱讀 2584

分頁系統存在的乙個無法容忍,同時也是分頁系統無法解決的乙個缺點就是:乙個程序只能占有乙個虛擬位址空間。在此種限制下,乙個程式的大小至多只能和虛擬空間一樣大,其所有內容都必須從這個共同的虛擬空間內分配。

分段管理就是將乙個程式按照邏輯單元分成多個程式段,每乙個段使用自己單獨的虛擬位址空間

如此,乙個段占用乙個虛擬位址空間,不會發生空間增長時碰撞到另乙個段的問題,從而避免因空間不夠而造成編譯失敗的情況。如果某個資料結構對空間的需求超過整個虛擬之地所能夠提供的空間,則編譯仍將失敗。不過出現這種可能的概率恐怕不會比太陽從西邊出來的概率高出多少。

優點:(1)每個邏輯單元可單獨占用乙個虛擬位址空間,這樣使得編寫程式的空間大為增長。

(2)由於段式按邏輯關係劃分,因此共享起來十分方便。

(3)對於空間稀疏的程式來說,分段管理將節省大量的空間。

缺點:(1)外部碎片和乙個段必須全部載入到記憶體。

那麼,解決辦法是什麼呢?分頁,不過這次的分頁不是前面提到的直接對程式程序進行分頁,而是對程式裡面的段進行分頁,於是就形成了所謂的段頁式記憶體管理模式。

段頁式管理就是將程式分為多個邏輯段,在每個段裡面又進行分頁,即將分段和分頁組合起來使用。這樣做的目的就是想同時獲得分段和分頁的好處,但又避免了單獨分段或單獨分頁的缺陷。

如果我們將每個段看做乙個單獨的程式,則邏輯分段就相當於同時載入多個程式。

採用多級頁表,頂級為段表,次級為頁表。由段號在段表裡面獲得所應該使用的頁表,然後在該頁表裡面查詢物理頁面號,如下圖所示:

如果需要,次級頁表又可以再分為兩個或者多個層次,形成層次更為豐富的段頁式層次結構。

(1)一開始,人們根據直覺,將乙個程式作為一整段進行管理,從而形成了純粹分段(固定載入位址、固定分割槽、非固定分割槽、交換)管理模式,也稱為基本記憶體管理模式,這種模式由於直觀易實現,曾經大為流行。

(2)但是,純粹分段存在重大缺陷(由於此種模式下乙個程式只有一段,從而導致記憶體空間增長困難,外部碎片、程式不能超過物理記憶體容量、乙個程式必須同時載入到記憶體才能執行等缺點),為了克服這些缺點,引入了頁式記憶體管理模式。

(3)顯然,頁式記憶體管理克服了純粹分段的一系列缺點,但又存在共享不方便、乙個程式只能在乙個徐位址空間增長的問題,為了解決這個問題,引入了邏輯分段。邏輯分段將乙個程式按邏輯關係分解為多個段,從而擴大了程式可以使用的虛擬位址空間並解決了共享難的問題。

(4)但是,邏輯分段終究還是分段,自然又引入了分段的缺點。而要客服這些缺點,自然又想到了分頁。這樣,人們又引入了段頁式管理模式。

因此,記憶體管理模式經歷了從純粹分段到分頁,再到邏輯分段,再到段內分頁的演變過程,如下圖所示:

鄒恒明,《作業系統之哲學原理》,機械工業出版社

出處:

作業系統 5 記憶體管理

記憶體管理需要實現 重定位,保護,共享,邏輯組織,物理組織。記憶體管理技術 分割槽 固定 動態分割槽 分頁 簡單分頁 虛擬記憶體分頁 分段 簡單分段 虛擬記憶體分段 1.2.1 碎片與壓縮 碎片fragmentation 通過壓縮compaction解決外碎片 1.2.2 分配策略 首次適配 fir...

作業系統記憶體管理

作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...

作業系統記憶體管理

作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...