什麼是分頁?
分頁是一種儲存結構,它使作業系統能夠以頁面的形式將程序從輔助儲存器調入主儲存器。在分頁方法中,主儲存器被分成小的固定大小的物理記憶體塊,稱為頁框。為了最大限度地利用主儲存器並防止外部碎片,頁框的大小必須與頁面的大小相同。
分頁將交換磁碟上的頁面換到物理記憶體的頁框中,因此處理器可以訪問資料。任何頁面都可以佔用任何頁框。這會導致分頁系統應該處理的多個問題:
何時應將頁面換入物理記憶體?
CPU 如何在物理記憶體中查詢資料,尤其是在其邏輯地址與其物理地址不同的情況下?
當所有頁框都包含頁面,而 CPU 需要訪問最近未儲存在物理記憶體中的頁面的資料時,會發生什麼情況?
所有這些問題都由記憶體管理單元 (MMU) 管理。如圖所示,邏輯地址從 CPU 輸出到 MMU。MMU 將此地址轉換為物理地址,該地址提供給快取記憶體和物理記憶體。如果資料未放置在物理記憶體中,則會產生頁面錯誤,並將頁面從交換磁碟換到頁框,如有必要,則清除另一個頁面。
在此過程中,CPU 無法獲知它正在訪問的實際物理位置。例如,相對簡單的 CPU 指令 LDAC 4234H 並不會解釋為“將儲存在物理記憶體位置 3234H 的邏輯記憶體位置 4234H 的資料載入到累加器中”。它更類似於“將邏輯記憶體位置 4234H 的資料載入到累加器中”,而它當前佔據哪個物理記憶體位置並不重要,因為 MMU 將負責處理。
同時,物理記憶體不知道哪些邏輯地址對映到特定的物理記憶體位置。在此示例中,記憶體訪問不會解釋為“輸出位置 3234H 的資料,它對應於邏輯地址 4234H”。
相反,它更像是“輸出位置 3234H 的資料,因為 MMU 說 CPU 的邏輯地址對映到那裡”,而無需知道該邏輯地址是什麼。CPU 和記憶體都不需要知道對方的記憶體地址,因為 MMU 為它們處理轉換。