地址的大小是否与条目数,总条目大小或两者都有关系?

时间:2016-12-06 03:08:53

标签: memory operating-system virtual-memory page-tables

如果虚拟内存有32位地址,那么有2 ^ 32个条目还是总条目大小为2 ^ 32个字节?或两者兼而有之?

我问的原因是因为我认为它只意味着2 ^ 32个人。

执行以下问题后,我不确定:

  1. 假设一台机器有48位虚拟地址和32位物理地址。如果页面是4KiB,如果它只有一个级别,那么页面表中有多少条目?
  2. 解决方案:2 ^ 48/2 ^ 32 = 2 ^ 16页。

    但是,页数/页面大小!=页数。

    总条目大小/页面大小=页数。

    所以,我想知道32位地址是否意味着有2 ^ 32个条目,或者总条目是否等于2 ^ 32个字节或两者。

1 个答案:

答案 0 :(得分:1)

济南,我觉得你在linux内存相关的东西很困惑。

你的问题:

如果虚拟内存有32位地址,那么有2 ^ 32个条目还是总条目大小为2 ^ 32个字节?或两者兼而有之?

页表条目不仅仅依赖于虚拟地址空间,页面大小和物理内存也需要计算条目。

我举了你的例子: -

假设一台机器有48位虚拟地址和32位物理地址。如果页面是4KiB,如果只有一个级别,页面表中有多少条目?

页面表中的条目数将为= 2 ^ 36。

页面条目用于获取物理内存的地址。在这里,我们假设正在发生单一级别的分页。因此,生成的页表将包含虚拟地址空间的所有页面的条目。

Number of entries in page table = 
                  (virtual address space size)/(page size)  

Virtual address = 48 Bit
Page size is = 12 bit ((2^12) is equal to 4KB).

Using above formula we can say that there will be 2^(48-12) = 2^36 entries in page table.

页面大小表

没有。寻址32位物理内存所需的位数= 32。 因此物理内存中将有2 ^(32-12)= 2 ^ 20个页面帧。并且页表需要存储所有这些2 ^ 20页帧的地址。因此,每个页表条目将包含页面帧的32位地址。 因为内存是字节可寻址的。因此我们认为每个页表项是32位,即4个字节长。

Size of page table = 
  (total number of page table entries) *(size of a page table entry) 
   = (2^36 *4) = 256GB