全域置換與區域置換(global vs local replacement)
當一個行程發生錯誤、必須挑犧牲頁時,有個更前面的問題:它可以從任何行程偷一個頁框,還是只能從自己這裡偷?想像一間辦公室,大家共用一個文具櫃。全域置換就是「缺筆的人可以從任何人的抽屜拿一支筆」這條規則;區域置換則是「每個人有固定的私人存量,只能重新安排自己的」這條規則。這個選擇——誰的頁框有資格成為犧牲者——就是全域對區域置換。
在全域置換下,當行程 P 發生錯誤,作業系統可以從整個頁框池選犧牲頁,包括目前屬於其他行程的頁框。因此一個行程持有的頁框集合會隨時間增長或縮減,取決於所有行程的行為。在區域置換下,每個行程被給定一份固定的頁框配額,只能在自己的頁之間置換;若它需要一個頁而自己的頁框已滿,它必須逐出自己的一個頁,而且永遠不能搶走別的行程的頁框。等量與比例頁框配置策略一開始決定每個行程拿到幾個頁框;全域對區域則決定置換期間能否跨越這些界線。
為什麼重要:兩者有真實的取捨。全域置換通常給出較好的整體產出率,因為頁框會流向最需要它的人,但這意味一個行程的分頁錯誤率取決於別人的行為——你的效能不再握在自己手中,而一個貪婪的行程可能餓死其餘的並引發輾轉。區域置換給每個行程穩定、可預測的效能,因為它的頁框數固定,但它可能讓一個行程的頁框閒置,而另一個行程卻在拚命缺頁。許多系統為了效率傾向全域,再加裝控制機制(如工作集或頁錯誤頻率方法)來阻止全域置換原本可能造成的輾轉。
兩個行程共用 20 個頁框。在全域置換下,一個高優先權的行程發生錯誤時可以從低優先權的那個拿一個頁框,長到 15 個,而另一個縮到 5 個。在區域置換下,各自被鎖定在 10 個頁框,不論多忙都只能逐出自己的頁。
全域讓頁框在行程間流動;區域固定每個行程的配額。
全域置換通常產出率較高,卻讓一個行程的錯誤率取決於別人,所以一個行為失當的行程可能把大家拖進輾轉。區域置換隔離各個行程,卻可能浪費頁框——讓一個行程閒置,而另一個行程在挨餓。