看到很多人有疑問?讀到這裏的時候我也有疑問的。
在操作系統的分頁存儲管理方式中,寫道:
將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置。
於是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。
列出式子出來: 頁表始址+頁號x頁表項長度
1)頁表項長度是頁面長度是嗎?
2)如果是頁面長度,那兩者相乘就是整個內存的大小來,你想一想整個內存都用來存儲頁表可能嗎?
當然是不可能了,首先內存被劃分成若干個和頁面大小相等的片。
每個頁表項代表一個頁面的地址,一般很小。
假設內存大小是2GB,頁面大小(物理塊)是4KB,頁表項長度是4B。
則整個內存可以被劃分成2GB/4KB=512K個頁面。
頁表的長度=頁表項的長度x頁面的個數=4Bx512K=2M。
內存中用2M的大小來存放頁表。
這下清楚了吧,實際上是取了每一個頁號對應的頁面的起始地址,或許還有對應的物理塊號(應該有)。
TLB就是用來存放當前訪問的那些頁表項的。
看到這裏其實大多數同學是完全不知道這個頁表項長度到底是個什麼玩意。其實來個圖像就明確了:
首先內存被劃分成若干個和頁面大小相等的片。
每個頁表項代表一個頁面的地址,一般很小。
假設內存大小是2GB,頁面大小(物理塊)是4KB,頁表項長度是4B。
則整個內存可以被劃分成2GB/4KB=512K個頁面。
頁表的長度=頁表項的長度x頁面的個數=4Bx512K=2M。
內存中用2M的大小來存放頁表。
這下清楚了吧,實際上是取了每一個頁號對應的頁面的起始地址,或許還有對應的物理塊號(應該有)。