分頁與位址轉換

頁框(frame)

回到那座有編號層架格的倉庫,每個格子都剛好是一個箱子的大小。頁框就是其中一個格子——一塊固定大小、「真實」的實體記憶體區塊,大小剛好容納一頁。實體記憶體被切成一長排這樣的等大格子,編號 0、1、2 往上,任何一頁都能放進任何一個空格子。

精確地說,頁框(或稱頁面框)是一塊固定大小的「實體」記憶體區塊,與頁同大(常見為 4 KB)。實體 RAM 被切成從 0 開始編號的頁框;作業系統維護一張頁框表或空閒頁框清單,記錄哪些頁框空閒、每個已用頁框被哪個行程的哪一頁佔用。當某行程需要某頁進入記憶體時,作業系統挑一個空閒頁框,把該頁複製(或對應)進去,並在該行程的分頁表裡記下「頁 → 頁框」。由於每個頁框大小都一樣,配置器永遠不必去找一個「夠大的洞」——任何空閒頁框都行,這正是分頁記帳如此簡單的原因。

頁框之所以重要,是因為它才是所有行程共享的、真實而有限的實體資源:頁框的數目就是 RAM 容量除以頁大小。頁框是實體的、頁是邏輯的——這是分頁中最重要的單一區別。兩個不同的行程可以各自擁有一個「頁 0」,而這兩個相同的頁號會坐落在完全不同的頁框裡;反過來,一個頁框也可以被多個行程共享(共享頁)。別把頁框想成屬於某個行程;它們屬於這台機器,分頁表才是把一個行程的頁暫時繫到某個頁框上的東西。

某機器有 16 GB RAM,使用 4 KB 頁框,得到 16 GB 除以 4 KB ≈ 約 400 萬個頁框,編號 0 到約 4,194,303。當行程 A 的頁 0 對應到頁框 9、行程 B 的頁 0 對應到頁框 73 時,兩個程式都用邏輯位址 0,卻讀到完全不同的實體記憶體。

頁框是機器有限的實體格位;不同行程裡相同的頁號會落在不同的頁框。

頁框是「實體的」、屬於機器;頁是「邏輯的」、屬於行程。頁框刻意等大,所以任一空閒頁框都能容納任一頁——正是這份等大讓分頁避開了外部碎裂。

又称
page framephysical frame頁面框實體頁框