代码之家  ›  专栏  ›  技术社区  ›  jinan

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

  •  1
  • jinan  · 技术社区  · 8 年前

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

    在做了以下问题后,我不确定:

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

    解决方案:2^48/2^32=2^16页。

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Sumit Gemini    8 年前

    济南,我想你对linux内存相关的东西感到困惑。

    你的问题是:

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

    我以你为例:-

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

    页面表中的条目数将为=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位,即4字节长。

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