當前位置: 妍妍網 > 碼農

面試官:分段分頁都不懂,你先回去等通知吧

2024-05-21碼農

引言:本文將深入探討分段和分頁的本質,它們是如何產生的,以及它們在記憶體管理中的作用。我們將比較這兩種機制的異同,揭示它們在實際套用中的優勢和局限。透過這篇文章,我們希望能夠幫助讀者更好地理解記憶體管理的復雜性,以及分段和分頁在其中的關鍵作用。

題目

面試官:分段和分頁機制都不懂,你先回去等通知吧!

推薦解析

分段和分頁是為了做什麽而產生的?

MMU(記憶體管理單元 Memory Management Unit) 將虛擬地址轉譯為實體位址的主要機制其中兩種就是分段和分頁,第三種是段頁。

分段和分頁的歷史發展

分段的概念最早可以追溯到 20 世紀 60 年代,當時的電腦系統開始面臨如何有效管理記憶體的問題。在早期的電腦系統中,程式通常是直接執行在實體記憶體上的,這種方式效率低下且缺乏靈活性。隨著多道程式設計的出現,需要一種機制來允許多個程式共享記憶體資源,同時保持各自的獨立性。

分頁的概念同樣起源於 20 世紀 60 年代。與分段不同,分頁將記憶體劃分為固定大小的塊,這有助於減少記憶體碎片問題。分頁機制的引入是為了更好地利用記憶體資源,並提供更靈活的記憶體管理。

1962 年,Atlas 電腦系統在英國問世,它被認為是第一個實作分頁機制的電腦系統。Atlas 系統使用了一種稱為「一級頁表」的機制,將虛擬地址對映到實體位址。這種機制極大地提高了記憶體的利用率,並為後來的作業系統設計提供了靈感。

分段和分頁是什麽?

分段:分段將邏輯地址空間劃分為若幹個不同長度的段(segments),每個段代表程式中的一個邏輯單元,例如程式碼段、數據段、堆疊段等。分段機制下的虛擬地址是兩部份構成:段號和段內偏移量。

分頁:分頁將邏輯地址空間和實體記憶體空間劃分為固定大小的頁(pages),通常為連續的 2 的冪大小,如 4 KB或 4 MB。分頁機制下的虛擬地址由兩部份組成:頁號和頁內偏移量。

區別和聯系

相同

1)都是非連續記憶體管理的方式。

2)都是將虛擬地址對映到實體位址的機制。

不同

1)分段會有外部記憶體碎片問題(記憶體塊不連續,導致無法進行完整分配問題)

2)分頁是從記憶體利用率的角度進行考慮,分段是從使用者角度進行考慮,用於數據保護。

3)分頁的大小固定,由作業系統決定;分段大小不確定,由使用者程式決定。

分段對效能的影響

1) 記憶體碎片 :分段可能導致記憶體碎片,因為每個段的大小可以不同,隨著時間的推移,記憶體中可能會出現許多無法被有效利用的小塊記憶體。

2) 記憶體浪費 :如果一個段中的某些部份未被使用,這部份記憶體仍然會被分配給該段,造成記憶體浪費。

3) 地址轉換開銷 :分段需要進行地址轉換,這涉及到尋找段表,增加了CPU的負擔。

分頁對效能的影響

1) 頁表開銷 :每個行程都需要一個頁表來儲存虛擬地址到實體位址的對映,這會占用大量的記憶體空間。

2) 頁表尋找開銷 :每次記憶體存取都需要尋找頁表,這會增加記憶體存取的時間。

3) 內部碎片 :分頁可能導致內部碎片,因為即使一個頁只被部份使用,整個頁也會被分配給該行程。

其他補充

魚聰明 AI 的回答:

魚聰明 AI 地址:https://www.yucongming.com/

分段(Segmentation)

定義: 分段是一種記憶體管理技術,它將程式的記憶體空間劃分為多個邏輯段,每個段通常對應於程式的一個邏輯部份,如程式碼段、數據段、堆疊段等。每個段的大小可以不同,且可以動態增長。

安全性與保護機制:

  1. 存取控制 :每個段可以設定不同的存取許可權,如唯讀、讀寫、執行等。這允許作業系統控制對不同記憶體區域的存取,防止未授權的讀寫或執行操作。

  2. 邊界檢查 :當程式試圖存取段內的記憶體時,硬體會進行邊界檢查,確保存取不會超出段的邊界。這有助於防止緩沖區溢位等安全漏洞。

  3. 隔離 :不同行程的段可以相互隔離,一個行程的錯誤不會影響到其他行程,提高了系統的穩定性。

分頁(Paging)

定義: 分頁是將實體記憶體和程式的虛擬記憶體空間都劃分為固定大小的頁(或頁面)。記憶體管理單元(MMU)負責將虛擬地址對映到實體位址。這種對映通常透過頁表來實作,頁表儲存了虛擬頁到物理頁的對映關系。

安全性與保護機制:

  1. 頁級存取控制 :每個頁可以設定不同的存取許可權,類似於分段的存取控制。這允許作業系統精細地控制對記憶體的存取。

  2. 地址轉換 :透過頁表進行地址轉換,可以防止程式直接存取實體位址,從而提供了一層抽象,增加了系統的安全性。

  3. 隔離 :分頁也提供了行程間的隔離,每個行程有自己的頁表,確保一個行程的錯誤不會影響到其他行程。

  4. 快表(TLB) :TLB用於緩存頁表項,提高了地址轉換的速度。TLB的存取通常需要經過硬體的存取控制,以確保只有授權的行程可以存取。

綜合安全性

分段和分頁都提供了記憶體存取的控制和隔離機制,這些機制是作業系統安全性的基礎。透過這些機制,作業系統可以防止惡意軟體或錯誤程式碼對系統造成損害,保護使用者數據和系統資源。此外,現代作業系統通常會結合使用分段和分頁,以提供更全面的記憶體管理和安全保護。例如,段頁式記憶體管理結合了分段的邏輯劃分和分頁的固定大小頁,既提供了靈活性,又保持了效率和安全性。

歡迎交流

在閱讀完本文後,你應該對分段和分頁的概念以及歷史發展過程有了一定的了解,但如果你能完整回答文末的三個問題,那麽將可以檢驗你的學習成果!歡迎在評論區留言!

1)分段和分頁在記憶體管理中的具體套用是什麽?它們各自解決了哪些問題?

2)分段和分頁的安全性和保護機制是如何工作的?它們如何防止未授權的記憶體存取?

3)分段和分頁之間有什麽區別?它們的優缺點是什麽?在選擇記憶體管理技術時,應該考慮哪些因素?

點燃求職熱情!每周持續更新,海量面試題和大廠面經等你挑戰!趕緊關註面試鴨公眾號,輕松備戰春招和暑期實習!



往期推薦