分页——虚拟地址、物理地址、映射——注意事项

pagination - virtual addresses, physical addresses, mapping - considerations

Pagination in some processor make it possible to map virtual address (A2345678) to physical address (823C5678). However, it is not possible to map virtual address (345678) to (2ABC678). What can we conclude about size of frame, page, size of virtual memory, size of physical memory.

我的看法:
(A2345678) -> (823C5678)
所以,size offset最多19位。我们知道页面(和框架)的大小最多为 219,

当涉及到虚拟内存和物理内存的大小时,我无法得出任何结论。

同理,不知道是什么告诉我关于非可能映射地址的信息。

你能帮我解释一下吗?

我确实看到了一些我们可以得出结论的东西:

如果可以映射到物理地址 0x823C5678,则物理内存至少有那么大。 (假设物理地址 space 中没有任何漏洞;这在实际硬件上不是一个好的假设,但无论如何。我们可以说物理地址 space 至少有那么大,即使它没有t 都映射到 DRAM 或 MMIO)。

同样,有效的虚拟地址 0xA2345678 为我们提供了虚拟地址大小的下限。推测所有的虚拟地址位都可以是1,所以最高可能的虚拟地址至少是0xFFFFFFFF。即虚拟地址至少为 32 位,但可以是任何更大的大小。

此推理适用于物理地址 space,但不适用于物理内存的大小。 (例如,在具有 19GiB RAM 的计算机中,最高有效物理地址不是 2n-1。)


无法将 0x345678 映射到 0x2ABC678 的事实告诉我们页面大小大于 212。物理地址低于可映射的地址,因此我们可以排除映射不可能的可能原因。我认为太高和未对齐是无法映射的唯一可能原因。

(0xc = 0b1100,而0x5是0b0101,所以公共位只有0x678。)


我们可以假设物理内存是整数页,所以我们可以将物理内存的最低端四舍五入到下一个213的倍数。