內存管理中分頁和分段有什麼區別?
分頁和分段是操作系統在內存管理中用於有效分配內存和管理進程的兩種基本技術。
01 分頁(Paging)
分頁是一種無需連續分配物理內存的內存管理方案。進程的地址空間被劃分爲固定大小的塊,稱爲頁,而物理內存被劃分爲固定大小的塊,稱爲幀。
關鍵概念
-
頁:進程地址空間的固定大小塊。
-
幀:物理內存的固定大小塊。
-
頁表:用於將虛擬地址映射到物理地址的數據結構。頁表中的每個條目對應一個頁面,幷包含該頁面所在幀的編號。
地址轉換過程分爲 3 個步驟
-
邏輯地址空間:邏輯地址(由 CPU 生成)分爲頁碼和頁偏移量。
-
頁表查找:頁碼作爲頁表的索引,用於查找相應的幀號。
-
物理地址形成:幀號與頁偏移量相結合,形成內存中的物理地址。
優點
-
消除外部碎片。
-
簡化內存分配。
-
支持高效的交換和虛擬內存。
缺點
-
可能導致內部碎片。
-
頁表需要額外內存。
-
由於多次訪問內存,地址轉換速度較慢。
02 分段(Segmentation)
分段是一種內存管理技術,根據程序的邏輯劃分(如函數、對象或數據數組),將內存劃分爲大小可變的段。
關鍵概念
-
段:程序的邏輯劃分,每個段的大小可變。
-
段表:將段號映射到段的基地址和長度的數據結構。
地址轉換過程分爲 3 個步驟
-
邏輯地址空間:邏輯地址包括段號和段內偏移量。
-
段表查找:段號用作段表的索引,用於查找段的基地址。
-
物理地址形成:將基址與偏移量相加,形成內存中的物理地址。
優點
-
爲程序的不同部分提供邏輯分隔。
-
便於保護和共享程序段。
-
簡化對不斷增長的數據結構的管理。
缺點
-
可能導致外部碎片。
-
內存管理更復雜。
-
由於多次訪問內存,地址轉換速度較慢。
03 分段和分頁的比較
-
內存分配:分頁將內存劃分爲固定大小的單元,而分段將內存劃分爲可變大小的單元。
-
碎片:分頁消除了外部碎片,但可能導致內部碎片。分段可導致外部碎片,但可避免內部碎片。
-
地址轉換:分頁涉及頁表,而分段使用段表。
-
邏輯視圖:分頁更直接,但不太符合程序的邏輯視圖。分段與程序內的邏輯劃分更爲一致。
總之,分頁和分段都有自己獨特的內存管理方法,各有利弊。在某些系統中,它們還可以結合使用,以發揮兩種技術的優勢。
04 混合分頁和分段
有些系統結合使用這兩種技術,以發揮各自的優勢。例如,可以將一個分段劃分爲多個頁面,以便從分段的邏輯組織和分頁的簡便性中獲益。這種混合方法有助於減輕單獨使用其中一種技術的缺點。
優點
-
結合了分頁和分段的優點。
-
減少外部碎片(來自分段)和內部碎片(來自分頁)。
缺點
-
增加了內存管理的複雜性。
-
由於需要同時管理段表和頁表,因此開銷較大。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/8np8_Lly90JHk8L_leQGlA