分段分頁
在作業系統中,分段分頁提供了更好的效能和CPU利用率,因為它結合了分段和分頁的過程。分段被稱為一種記憶體管理技術,其中記憶體被劃分為可以分配給程序的段。這些段的長度可能不固定,並且不一定以連續的方式儲存。段表儲存與段和程序相關的所有詳細資訊。生成邏輯地址,該地址透過參考段表由CPU轉換為物理地址。此表包含有關段的兩個欄位,它們是基地址和限制。基地址或段基地址表示段的基地址,該地址儲存段的初始物理地址,而限制表示段的長度。
根據程序如何劃分為段以及將其定位在記憶體區域中的方式,分段可以分為虛擬分段和簡單分段。分頁是從輔助儲存器將程序提取到記憶體中的一種技術。這裡,每個程序都被劃分為相等大小的頁面,這些頁面儲存在非連續的記憶體位置。
分段分頁
當虛擬地址空間很大、頁面在主記憶體中佔用更多空間以及某些對映的地址可能無效時,分頁存在缺點。為了克服此記憶體空間問題,使用分段分頁來減小頁表的大小。在這種技術中,實際記憶體被劃分為段,而這些段又被劃分為固定大小的頁面。儲存在記憶體中的輸入程式或程式被劃分為四個段,例如程式碼、資料、堆疊和堆段。此程式可以被劃分為多個段,這些段位於段表內。
實現分段分頁需要段表暫存器和頁面對映表。虛擬地址被劃分為三個部分,例如段號、頁號和偏移量。段號指的是相應的段表,記憶體單元使用該表。分段表儲存頁表的基地址和限制。每個表項都指向頁表位置,該位置又對映到段內的某個頁面。
下圖將清楚地顯示使用分段表的對映。

物理地址
當程式開始執行過程時,CPU將為其生成邏輯地址。此地址包含兩個欄位:段號及其偏移量。段偏移量的值應小於限制。此邏輯地址轉換在幀地址的幫助下發生,該地址可以從段表中獲取。現在,頁表將指向段在主記憶體中所在的幀。邏輯地址是段號+頁號及其偏移量的組合。
簡單來說,程式最初被劃分為多個段,每個段都有一個相關的段表用於對映目的。此表儲存頁表的地址。最後,頁表具有幀地址,該地址指向主記憶體的位置。
優點
由於頁面大小固定,因此避免了外部碎片。
它減少了記憶體的使用,並且分配過程更簡單。
段表恰好有一個條目對映對應於一個段。
透過將分段與分頁結合使用,可以減小頁表的大小。
缺點
存在內部碎片。
與分頁相比,儲存和訪問的複雜性更高。
它需要使用硬體資源。
記憶體訪問時間較長,因為遵循順序轉換過程。
頁表以連續的方式儲存在記憶體中。
在當今使用的現代作業系統中,由於頁表大小和段表大小的變化,也可能發生外部碎片。
結論
記憶體碎片是分頁和分段過程中一個主要問題。為了解決這些問題,將分段和分頁兩種技術結合起來對映物理地址。分段技術用於將程序劃分為稱為段的較小模組,並將相關資料組合成單個段以載入到記憶體中。劃分模組的大小取決於輸入程序的長度和型別。維護段表以儲存有關段及其任務的資訊。每個段在段表內都有一個關聯的條目,並且頁表對映到相應的段及其幀。CPU 使用此幀地址將邏輯地址或虛擬地址轉換為物理地址,以定位已劃分的段。