![页表的大小和条目数](https://linux22.com/image/1446284/%E9%A1%B5%E8%A1%A8%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%92%8C%E6%9D%A1%E7%9B%AE%E6%95%B0.png)
假设在 32 位操作系统上,我们有 4 GB 的可用虚拟地址空间。这意味着我们需要映射 2^32 = 4,294,967,296 个地址。
如果计算在地址空间中存储所有 4,294,967,296 个地址的大小,并且每个地址为 4 个字节,则应该占用:
所有地址的内存大小 = 4,294,967,296 个地址 x 4 字节
我的问题是:
单个页表是否能够在其条目中存储那么多地址?如果是这样,那么为什么页表的大小只有 4 MB?这里?
答案1
虚拟内存不是以单个字节为单位的。您可以分配、共享、映射、交换、锁定等的最小内存单位是 (通常) 4096 字节的页面。
整个地址空间(4GB)被划分为 1Mi 个这样的页面。这就是为什么整个表包含 1Mi 个条目,每个条目 4 个字节,也就是 4 MB。