分页机制详述
对于4GB线性地址而言,每个页4KB,则总共可以分成1024*1024=1048576个页面。
要表示每个页面的物理地址,需要4个字节。那么总共需要4MB的空间来存储分页相关的信息
程序可以独享4GB的线性地址。所以每个程序都需要维护一个分页信息。那么每个程序都要4M的空间用来存储分页信息,这是不可接受的
重点理解每个页面的物理地址。也就是说 每个页面的地址 是需要告诉CPU的,CPU根据这个地址 去寻找实际的物理页面
那么这地址是几位呢,也就是物理地址总线的长度,32位的就是 4个字节。
一个页面4K
做个简单的数学计算,假设虚拟地址空间为32位(即4GB)。每个页面映射4KB以及每条页表项占4B:一级页表:进程需要1M个页表项(4GB / 4KB = 1M, 2^20个页表项),即页表(每个进程都有一个页表)占用4MB(1M * 4B = 4MB)的内存空间。二级页表:一级页表映射4MB(2^22)、二级页表映射4KB,则需要1K个一级页表项(4GB / 4MB = 1K, 2^10个一级页表项)、每个一级页表项对应1K个二级页表项(4MB / 4KB = 1K),这样页表占用4.004MB(1K * 4B + 1K * 1K * 4B = 4.004MB)的内存空间。