轉自:https://zhidao.baidu.com/question/335974047.html
如果一個頁面的大小為4K,頁表項大小為4B,那么為什么可以存2^10個頁表項?我的意思就是問為什么要拿4K/4B=2^10?頁表項不應該是存在於內存里面的?和頁面大小有什么關系?
我有更好的答案
推薦於2017-11-02 20:44:25 最佳答案
理解這樣一個概念,操作系統為了方便管理內存,將內存划分成很若干個頁,每個頁表項就代表一個頁的地址(頁的地址,不是內存地址)。
4B大小的頁表項,意味着支持最大的頁表數是2的32次方=4294967296 (4B=32bit),一個頁的大小4K,那么4B大小的頁表項,表示操作系統支持4294967296*4K = 16GB大的內存。
現在問題是頁表占用一定的內存。
現在假設有2GB(一定要小於16GB)內存。
那么它一共有2GB/4KB=512K個頁,也就是說頁表項有512K項,而每個頁表項的大小4B,那么頁表在內存中占用的大小是:512K*4B=2MB,意味着,只要2MB就可以表示512K個頁(每個頁是4KB,總內存大小是2G),它頁表本身占用了2MB/4K=512個頁。
這一題 就是問你1個頁可以表示多少個頁表項,4KB/4B=1024個頁表項。頁面大小與頁表項沒有絕對的關系,但它們有這樣關系:
1.頁面大小 * 2 ^(頁表項大小)=操作系統最大支持內存大小(虛擬內存),本題是 4K * 2^(4B) = 16GB
2.頁表占用內存 = 操作系統內存/頁面大小 * 頁表項大小,本題是,假設操作系統內存為2GB。 2GB/4KB*4B = 2MB
3.頁表占用的頁數是=頁表占用內存/頁面大小,這題同上假設2MB/4K=512個頁。
