計算機操作系統基礎(九)---存儲管理之段頁式存儲管理

引言

本文爲第九篇,存儲管理之段頁式存儲管理,前邊的文章介紹到了存儲管理的內存分配和回收,從物理的角度瞭解了存儲管理,本文從進程的角度去了解進程的存儲管理。也就是操作系統是如何管理進程的空間

頁式存儲管理

在這之前先來了解頁面的概念

在計算機組成原理中有字塊的概念,字塊是相對物理設備的定義(像內存條)。而頁面是相對邏輯空間的定義(也就是相對進程空間的定義)。字塊和頁面都指的是大小一樣的一塊內存

  • 頁式存儲管理會將進程邏輯空間等分成若干大小的頁面
  • 相應的也會把物理內存空間分成與頁面大小一樣的物理塊
  • 以頁面爲單位,把進程空間裝進物理內存中分散的物理塊中

這就是也是存儲管理,在瞭解頁式存儲管理時,通常會和內存碎片一起來理解

下邊是一個空閒鏈表,假設有一個頁面比節點1大,比節點2和節點3小,因此在分配頁面時,需要將頁面分配到節點2節點3這個節點,因此就會有一部分內存沒有被使用,就會造成內存碎片的存在

所以如果使用頁式存儲管理的話,需要:

  • 頁面大小適中,過大難以分配,過小內存碎片過多
  • 頁面大小通常是512B~8K

通過頁式存儲管理,就可以把進程的邏輯空間的每一個頁面都放在內存的物理塊中去,但是我們怎麼知道進程的某一個頁面分配到哪一個字塊中去呢?因此需要了解頁表

頁表記錄進程邏輯空間與物理空間的映射

左邊是進程的邏輯空間,進程的邏輯空間分成了5個頁面,這5個頁面是分散在主存的分散的物理塊中,因此需要頁表記錄映射關係:

如果直接使用頁式存儲管理也會遇到一些問題:


如果有一段連續的邏輯分佈在多個頁面中,將大大降低執行效率

段氏存儲管理

  • 將進程邏輯空間劃分成若干段(非等分)
  • 段的長度由連續邏輯的長度決定
  • 主函數main、子程序段X、子函數Y等(這個時候就會根據每一個函數的邏輯的長度去分配邏輯空間)

段氏存儲管理也需要一個表來存儲邏輯空間到物理空間的映射,這個就是段表

每一段的長度都是不固定的,因此段表比頁表多一個段長

對比兩種存儲管理的方法:

共同點:

段氏存儲和頁式存儲都離散地管理了進程的邏輯空間

不同點:

  • 頁是物理單位,段是邏輯單位
  • 分頁是爲了合理利用空間,分段是爲了滿足用戶要求
  • 頁的大小由硬件固定,段的長度可以動態的變化
  • 頁表信息是一維的,段表信息是二維的

段頁式存儲管理

採用了前兩種存儲管理的優點形成的一種存儲管理方法

  • 分頁可以有效提高內存利用率
  • 分段可以更好滿足用戶需求

段頁式存儲管理

  • 先將邏輯空間按段氏管理分成若干段
  • 再把段內空間按頁式管理分成若干頁

從左到右分別是段頁式、頁式、段氏的內存分配情況

在快速變化的技術中尋找不變,纔是一個技術人的核心競爭力。知行合一,理論結合實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章