如何计算 2 级页面 table 大小?

How to calculate 2 level page table size?

给定: 32位虚拟地址, 每页 4KiB, 4B - 页面 table 条目的大小, 1 - 地址的 GiB 大小 space

对于使用 1GiB 地址的进程 space,找出 1 级页面 table 和 2 级页面 table 的大小,当页面 table 目录时有 1024 个条目。 对于 2 级页面 table - 页面的最大和最小大小是多少 table?

所以...我知道页面偏移量是 12 位,页码是 20 位。所以我们得到了 2^20 个条目,所以 1 级页面 table 的总页面 table 大小应该是 4.2 MB table。

但是如何计算 2 级页面的大小 table?有什么建议吗?

二级案例可以这样考察:

  1. 一级会有一页。
  2. 二级所需的地址 space 将有足够的页面。

现在每个 2 级页面可以映射 2^10 * 2^12 字节,因为它有 2^10 个条目,每个条目都指向一个 2^12 字节的页面。这会产生 2^22 个字节。

现在您的目标地址 space 是 2^30 (1GB),因此您需要 2^30/2^22 或 2^8 个 2 级页面。另外,你需要一级一页。

总共使用了 1 + 2^8 或 257 页或 1028 KB