頁式存儲管理
頁式儲存管理基本原理
- 不連續的儲存分配:頁式儲存管理允許程式的儲存空間不必是連續的,這樣可以將進程分散存放在各個記憶體區塊中,避免了外部碎片問題,從而提高了記憶體的利用率。
- 位址結構:系統將邏輯位址空間分割成若干個大小相等的頁,每頁被編號。同樣,記憶體被劃分為大小相同的區塊,並為每個區塊編號。邏輯位址由頁號(P)和頁內偏移位址(W)兩部分組成,具體計算方式為:
$$ P = \text{INT}(A / L), \quad W = A \mod L $$
其中,\(A\) 是邏輯位址,\(L\) 是頁面大小,INT表示向下整除,MOD表示取餘。
儲存空間的分配與回收
- 位示圖管理:主記憶體空間的分配透過位示圖進行管理,並記錄哪些區塊已分配,哪些區塊空閒。空閒區塊透過尋找位元示範中的「0」位元來找到,並為作業分配記憶體。當作業執行完畢後,歸還記憶體區塊,並更新位元示圖。
- 區塊號計算:當需要分配或回收記憶體區塊時,根據位元圖示中的位置,透過公式計算出區塊號:
$$ \text{塊號} = \text{字號} \times \text{字長} + \text{位元號} $$
當作業結束時,歸還區塊的操作使用相反的計算方式來更新位元示圖和空閒區塊數量。
頁表與位址轉換
- 頁表:為每個作業維護一張頁表,記錄每一頁的邏輯頁號與實體區塊號的對應。頁表實作了從頁號到實體區塊號的位址對應。作業中的每一頁在頁表中都有對應的條目。
- 硬體支援的位址轉換:作業執行時,硬體會透過頁表控制暫存器自動將邏輯位址轉換為實體位址。邏輯位址分為頁號和頁內位址兩部分,透過頁號索引頁表,取得對應的實體區塊號,再加上頁內位址計算出實體位址。計算公式為:
$$ \text{物理位址} = \text{區塊號碼} \times \text{區塊長} + \text{頁內位址} $$
位址轉換過程
- 邏輯位址分解:邏輯位址由兩部分組成:頁號和頁內位址。透過頁號在頁表中找出對應的實體區塊號,再透過頁內位址找到具體的實體位址。
- 頁表查詢:當頁號在頁表中存在時,可以得到對應的實體區塊號。如果頁表中沒有該頁號,發生位址錯誤的程序性中斷。
- 實體位址計算:透過頁表取得區塊號碼後,結合頁內位址進行實體位址的計算。