操作系統核心原理-5.內存管理(下):段式內存管理


一、分頁系統的缺點

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

二、分段管理系統

2.1 何為分段管理

  分段管理就是將一個程序按照邏輯單元分成多個程序段,每一個段使用自己單獨的虛擬地址空間。例如,對於編譯器來說,我們可以給其5個段,占用5個虛擬地址空間,如下圖所示:

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

2.2 分段管理優缺點

  優點:

  (1)每個邏輯單元可單獨占用一個虛擬地址空間,這樣使得編寫程序的空間大為增長。

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

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

  缺點:

  (1)外部碎片和一個段必須全部加載到內存。

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

三、段頁式內存管理

3.1 何為段頁式內存管理

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

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

3.2 段頁式內存管理的實現

  采用多級頁表,頂級為段表,次級為頁表。由段號在段表里面獲得所應該使用的頁表,然后在該頁表里面查找物理頁面號,如下圖所示:

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

四、內存管理的演變

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

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

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

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

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

參考資料

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM