段頁式存儲管理
段頁式儲存管理結合了段式儲存管理和分頁儲存管理的優點,適應了不同需求的同時,也克服了單一管理方式的一些限制。
概念與優點
- 段式儲存管理:支援使用者的程式需求,將程式分為多個邏輯段,每個段落具有獨立的意義,如主程式、子程式、資料等。然而,段式儲存管理要求每個段佔據主記憶體的連續區域,這在實際中可能會導致記憶體碎片問題。
- 分頁儲存管理:將記憶體分為大小相同的頁面,解決了記憶體碎片問題,但它忽略了程式的邏輯結構。
-
段頁式儲存管理:結合了兩者的優點。它允許使用者以段為單位組織程序,但每個段內部又分為多個頁,從而使得段在物理記憶體中不必是連續的。這樣既能保持段式儲存的邏輯清晰性,也能享受分頁管理在記憶體分配上的便利性。
-
段頁式儲存管理的邏輯位址格式如下:
邏輯位址格式
在段頁式儲存管理中,邏輯位址被分割為三個部分:
- 段號 (S):指定邏輯位址對應的段。
- 頁號 (P):指定段內的頁數。
- 頁內位址 (W):指定在頁面中的特定位址。
段表與頁表
- 每個作業的主記憶體映像表包括一個段表和多個頁表。
- 段表包含每個段的頁表的起始位址和長度。
- 每個頁表包含段內每個頁的邏輯頁號與主記憶體物理區塊號的對應關係。
位址轉換過程
- 段表查詢:首先根據邏輯位址中的段號存取段表,找到該段的頁表起始位址。
- 頁表查詢:然後根據邏輯位址中的頁號查詢對應的頁表,取得該頁的物理區塊號。
- 實體位址計算:最後,結合頁內位址,得到最終的實體位址。
訪問主記憶體次數
在段頁式儲存管理中,由於需要進行三次主存存取:
- 第一次存取段表,取得頁表的起始位址;
- 第二次造訪頁表,取得該頁的實體區塊號碼;
- 第三次透過頁內位址計算實體位址並存取資訊。
位址越界偵測
- 如果段號超出段表的最大值,或頁號超出對應段的頁表範圍,系統會產生地址越界的程式中斷。