阅读《深入理解LINUX内核》,被各种地址概念搞糊涂了,上网搜索一番,有两篇blog感觉很不错,一位是图文并茂,写得很棒,一位用图来表示,直观方便。
把第二位的图贴上。
在图的最后描述有点混乱,我觉得这样的描述会比较好一点:
*由于linux0.11只用到16MB内存空间,那么它只需要4个页目录项就可以记录;每个页目录项可以记录4MB的内存页面,而每个页目录项占用4个字节,记录一个页面的基地址以及页面属性。虽然linux0.11只用了4个页目录项,但是内核分配页目录表时还是按照页为单位分配,不够的也分配一页的内存(4KB)。
因此一页内存可以存储1024个页目录项,1024项则可以记录1024*4MB=4GB的内存页面。
同理,一个页表项占用4个字节,而一个页表也会占用一页内存(4KB),可以存储1024个页表项,每个页表项可以记录一页内存(4KB),所以一页内存可以记录1024*4KB=4MB内存。
对于linux0.11,管理16MB内存空间,系统仅仅需要5页内存即可记录1个页目录表和4个页表。*