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

1、分頁系統的缺點

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

2、分段管理系統

2.1 何爲分段管理

  分段管理就是將一個程序按照邏輯單元分紅多個程序段,每個段使用本身單獨的虛擬地址空間。例如,對於編譯器來講,咱們能夠給其5個段,佔用5個虛擬地址空間,以下圖所示:數據結構

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

2.2 分段管理優缺點

  優勢:操作系統

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

  (2)因爲段式按邏輯關係劃分,所以共享起來十分方便。htm

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

  缺點:進程

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

  那麼,解決辦法是什麼呢?分頁,不過此次的分頁不是前面提到的直接對程序進程進行分頁,而是對程序裏面的段進行分頁,因而就造成了所謂的段頁式內存管理模式。get

3、段頁式內存管理

3.1 何爲段頁式內存管理

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

  若是咱們將每一個段看作一個單獨的程序,則邏輯分段就至關於同時加載多個程序。

3.2 段頁式內存管理的實現

  採用多級頁表,頂級爲段表,次級爲頁表。由段號在段表裏面得到所應該使用的頁表,而後在該頁表裏面查找物理頁面號,以下圖所示:

  若是須要,次級頁表又能夠再分爲兩個或者多個層次,造成層次更爲豐富的段頁式層次結構。

4、內存管理的演變

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

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

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

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

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

參考資料

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

 

相關文章
相關標籤/搜索