一个页表项是 2B,所以一个表项可以指向 2^16 个物理页之一。那是 2*16 kiB(因为页面是 1kB)。因此内核可以使用多达 65536 kiB (64MiB) 的物理内存。
这假定整个页表条目 (PTE) 是一个物理页号。如果 PTE 在页表中的位置将其与虚拟地址相关联,则可以使用。即,虚拟地址的 9 位用作 PT 的索引,以选择 PTE。
我们不能假设机器确实以这种方式工作,但同样我们也不能假设它没有,直到我们获得更多信息。
仅考虑问题中的信息,我们可以得出结论:
- 可用物理内存最高可达 65536kiB。
- 一次最多可以映射 512 个虚拟页面 (512kiB)。
- 别的不多!许多可能性是开放的。
更有可能的设计在每个 PTE 中都有一个有效/无效位。
如果 PTE 的内容(而不是它的位置)指示它映射的虚拟页面,则可以将大的虚拟地址空间映射到很少的物理页面上。这个地址空间必然是稀疏映射的,但是内核可以通过保留一个单独的映射表来给进程一种拥有大量活动映射的错觉。
所以在页面错误时,内核会检查页面是否应该被映射。如果是这样,它将映射放入 PTE 并恢复该过程。(这种事情发生在真实的操作系统中,它被称为次要页面错误。)
在这种设计中,内核使用页表来保存实际映射的子集类似于软件管理的 TLB。(当然,这种架构可能有一个不连贯的 TLB,需要在每次 PTE 修改后失效,所以这可能会执行得很糟糕)。