pde - 页目录 pte - 页表
http://linux.chinaunix.net/bbs/thread-1029871-1-1.html
问:
书上的解释是“二级模式通过只为实际使用的那些虚拟内存区请求页表来减少内存容量”
不是很理解这句话的意思?一级页表不可以这样做吗?
答:
比如对于4G的空间,4K页
那需要2^20 == 1M个页标项(无论用不用都需要,系统不知道哪个地址是否会被访问)
1M * 4 == 4M
每个进程都需要4M的页表
而如果2级
只需要一个页目录 + 1个页表(比如只使用4M的情况)就足够了
-----------------------------------------------------------------------------------------------------
这个帖子也不错:
http://www.ajaxstu.com/neiheyuanma/298024.html
问:
ULK上说:
使用二级分页模式的目的在于减少每个进程页表所需的RAM数量,如果使用一级页表
将需要2的20次方个表项来表示每个进程的页表。
但我认为使用二级分页模式不仍然需要2的20次方的表项来表示每个进程的页表吗?(4GB)
2的10次方(页目录)*2的10次方(页表)
然后ULK上又说:
二级分页模式通过只为进程实际使用的那些虚拟内存区请求页表来减少页表使用的内存。
我想问的是一级页表不同样可以通过只为进程实际使用的那些虚拟内存区来请求页表吗?
答:
(1)二级页表并不用全分配的,除非你用全了4G 地址空间,因为它可以分配 pde(4K)+ number of pte, not all process uses 1024*pte?
one level page table you have to do full allocate or hash to allocate less space.
power pc is using hash.
(2)页目录空间是必须要分配的,页目录指向的页表如果那段线性地址没有使用可以不分配,达到节省内存的效果
(3)X86上不开启PAE,使用4K的页表:
如果页表只有一级,那么2^20个页表要线性排列,即在连续的空间上排列,即使某项为空也要留下页表项的位置
如果有两级页表,那么第一级的空间仍然要分配,但第二级的页表可以以1024(4K/4)项为单位不连续分布,这样的话如果页表使用的空间基本与进程使用的空间呈线性,如果进程使用的内存空间小,就可以大大减少页表所占空间。
最后,如果进程使用所有的线性地址空间,用二级页表的空间比用一级页表的空间大0.1%左右。