我們已經看到,較大的頁表會導致額外的開銷,因為必須將該表分成頁面,然後將其儲存到主記憶體中。
我們擔心的是執行進程而不是執行頁表。 頁表為執行過程提供了支援。 頁面越大,開銷越高。
例如,我們知道 -
頁面大小=頁面表中的頁面條目數量一個頁面條目的X大小
下面來看一個例子,
虛擬地址空間= 2 GB = 2 X 2 ^ 30位元組
頁面大小= 2 KB = 2 X 2 ^ 10位元組
頁表中的頁數=(2 X 2 ^ 30)/(2 X 2 ^ 10)= 1 M頁
將會有100萬頁這是相當大的數位。 但是,嘗試使頁面大小更大,例如:2MB。
然後,頁表中的頁數=(2 X 2 ^ 30)/(2 X 2 ^ 20)= 1K頁。
如果比較兩種情況,可以知道頁面大小與頁面大小成反比。
在分頁中,最後一頁總會有浪費。 如果虛擬地址空間不是頁面大小的倍數,那麼將剩餘一些位元組,並且必須將整個頁面分配給那些許多位元組。 這只是一個開銷。
讓我們考慮一下,
頁面大小= 2 KB
虛擬地址空間= 17 KB
然後頁數 = 17 KB / 2 KB
頁數將為9,但第9頁只包含1個位元組,剩餘的頁面將被浪費。
一般來說,
如果頁面大小= p個位元組
專案大小= e位元組
虛擬地址空間= S位元組
然後,開銷:O =(S / p)X e +(p / 2)
平均而言,虛擬空間中浪費的頁面數量為p / 2(總頁數的一半)。
因為,最小的開銷,
?O/?p = 0
-S/(p^2) + ? = 0
p = √ (2.S.e) bytes
因此,如果頁面大小為√(2.S.e)位元組,則開銷將很小。