分页 - 虚拟地址,物理地址,映射 - 考虑因素

时间:2016-08-10 17:09:38

标签: memory x86 paging memory-address cpu-architecture

  

某些处理器中的分页可以映射虚拟地址   (A2345678)到物理地址(823C5678)。但是,这是不可能的   将虚拟地址(345678)映射到(2ABC678)。 我们可以得出什么结论   关于框架的大小,页面,虚拟内存的大小,物理的大小   存储器

我对此的看法:
(A2345678) - > (823C5678)
因此,大小偏移最多为19位。我们知道页面(和框架)的大小最多为2 19 like in my previous question

当涉及到虚拟内存和物理内存的大小时 - 我什么都不做。

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

你可以试着解释一下吗?

1 个答案:

答案 0 :(得分:-1)

我确实看到了我们可以得出的结论:

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

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

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

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

(0xc = 0b1100,而0x5为0b0101,因此公共位仅为0x678。)

我们可以假设物理内存是一个整数页面,因此我们可以将物理内存的最低可能末端四舍五入到2 13 的下一个倍数。