分頁和分段的區別
分頁
分頁是一種記憶體管理技術,其中程序地址空間被劃分為大小相同的塊,稱為頁(大小為2的冪,介於512位元組和8192位元組之間)。程序的大小以頁數來衡量。類似地,主記憶體被劃分為小的固定大小的塊(物理)記憶體,稱為幀,並且幀的大小與頁的大小保持一致,以最佳化主記憶體的使用並避免外部碎片。
類似地,主記憶體被劃分為小的固定大小的塊(物理)記憶體,稱為幀,並且幀的大小與頁的大小保持一致,以最佳化主記憶體的使用並避免外部碎片。
分段
分段是一種記憶體管理技術,其中每個作業被劃分為多個不同大小的段,每個段對應一個包含執行相關功能的程式碼塊的模組。每個段實際上是程式的不同邏輯地址空間。當要執行一個程序時,其對應的段被載入到非連續的記憶體中,儘管每個段都載入到一個連續的可用記憶體塊中。分段記憶體管理的工作方式與分頁非常相似,但是這裡的段是可變長度的,而分頁中的頁是固定大小的。
程式段包含程式的主函式、實用函式、資料結構等等。作業系統為每個程序維護一個段對映表和一個空閒記憶體塊列表,其中包含段號、大小和主記憶體中的相應記憶體位置。對於每個段,該表儲存段的起始地址和段的長度。對記憶體位置的引用包括一個標識段的值和一個偏移量。
以下是分頁和分段之間的一些重要區別。
| 序號 | 關鍵點 | 分頁 | 分段 | |
|---|---|---|---|---|
| 1 | 記憶體大小 | 在分頁中,程序地址空間被劃分為固定大小的塊,稱為頁。 | 在分段中,程序地址空間被劃分為大小不同的塊,稱為段。 | |
| 2 | 職責 | 作業系統將記憶體劃分為頁。 | 編譯器負責計算段的大小、虛擬地址和實際地址。 | |
| 3 | 大小 | 頁的大小由可用記憶體確定。 | 段的大小由使用者確定。 | |
| 4 | 速度 | 就記憶體訪問而言,分頁技術更快。 | 分段比分頁慢。 | |
| 5 | 碎片 | 分頁可能會導致內部碎片,因為某些頁可能未得到充分利用。 | 分段可能會導致外部碎片,因為某些記憶體塊根本沒有被使用。 | |
| 6 | 邏輯地址 | 在分頁中,邏輯地址被劃分為頁號和頁偏移量。 | 在分段中,邏輯地址被劃分為段號和段偏移量。 | |
| 7 | 表 | 在分頁中,邏輯地址被劃分為頁號和頁偏移量。 | 在分段中,邏輯地址被劃分為段號和段偏移量。 | |
| 8 | 資料儲存 | 頁表儲存頁資料。 | 段表儲存段資料。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP