一、采用分頁管理方式時,操作系統將進程划分成若干個頁面,將內存划分為若干個內存塊(or頁),頁面和內存塊大小一致並且一一對應,但是由於進程划分頁面時,最后一個頁面大小可能小於內存塊大小,導致存放的最后一個內存塊存在內部碎片,成為頁內碎片。為了方便查找還引入了頁表機制,如下圖(頁面數量多時可以使用多級表)。
頁表是一種數據結構,其中每一項成為頁表項,存放內存塊號(每個頁表項對應一個內存塊),並且將頁表放在內存塊中。例如一個頁面大小為4kb,頁表項為4k,那么一個內存塊(內存塊大小與頁面大小相同)就能存放1024(4kb/4b)個頁表項,即頁表的一頁有1024個頁表項。舉一個現實中的例子,有一本書的目錄很長,按照常規的做法,必須拆分開印到很多頁上,但是如果有一張很長的紙,那便不需要拆分也能把目錄全都包括在一張紙上。頁表存放在內存塊里也是如此,如果有一個內存塊足夠大存放下一張頁表,那么就不需要割分開頁表了,但是頁面大小過大的話也就失去了划分頁面的意義。
二、頁表占用一定的內存。
(一)現在假設有2GB內存,頁面大小為4KB,頁表項大小為4B。那么它一共有2GB/4KB=512K個內存塊(or頁,內存塊大小=頁面大小),也就是說頁表項有512K項(一個頁表項對應一個塊號),而每個頁表項的大小4B,那么頁表在內存中占用的大小是:512K*4B=2MB,意味着,只要2MB就可以表示512K個頁(每個頁是4KB,總內存大小是2G),它頁表本身占用了2MB/4KB=512個頁。

