什么是页表条目大小?

时间:2014-04-11 16:05:45

标签: operating-system paging

我找到了这个例子。

  

考虑具有32位逻辑地址空间的系统。如果页面   这样的系统中的大小是4 KB(2 ^ 12),然后页表可以包含   最多100万个条目(2 ^ 32/2 ^ 12)。假如说   每个条目由4个字节组成,每个进程可能只需要4 MB的物理地址空间用于页面表。

每个条目包含4个字节的含义是什么?为什么每个进程最多可能需要4 MB的页表空间

7 个答案:

答案 0 :(得分:5)

页表是从虚拟地址到物理地址的转换表,操作系统使用这些地址来人为增加系统中可用的主内存总量。

物理内存是位于内存(DRAM)中的地址的实际位,虚拟内存是操作系统所处的位置,用于告诉它们所处的位置,以便执行诸如允许2 ^ 64位地址空间之类的操作,尽管事实上,2 ^ 34位是通常使用的最大RAM。 (2 ^ 32位是4千兆字节,所以2 ^ 34是16 GB。) 每个进程的大多数默认页表大小为4096 kb,但如果进程需要更多进程空间,则页表条目的数量可能会增加。页表大小最初也可以分配更小或更大的数量或内存,只需4 kb通常是大多数进程的最佳大小。

请注意,页表是页面条目表。两者都可以有不同的大小,但页表大小最常见的是4096 kb或4 mb,并且通过添加更多条目来增加页表大小。

答案 1 :(得分:4)

1)因为4字节(32位)恰好是在32位地址空间中保存任何地址的正确空间量。

2)因为1百万个4个字节的条目各占4MB。

答案 2 :(得分:4)

关于PTE(页表项)为何为4个字节的原因:

几个答案说这是因为地址空间是32位,而PTE需要32位来保存地址。

但是PTE不包含字节的完整地址,而仅包含物理页号。其余位包含标志或未使用。不必完全是4个字节。

答案 3 :(得分:3)

  1. 您的第一个疑问是,“页表条目中的每个条目,也称为PTE,由4个字节组成”。要理解这一点,首先让我们讨论页表包含什么内容?“,答案将是PTE。因此,这4个字节是每个PTE的大小,包括虚拟地址,偏移量,(如果需要,可能还有1-2个其他字段)的/所需的)

  2. 所以,现在您知道页面表包含什么,您可以轻松计算它将占用的内存空间,即:总数。 PTE的数量乘以PTE的大小。 这将是:1m * 4字节= 4MB 希望这能清除你的怀疑。 :)

答案 4 :(得分:1)

因此,条目引用页表条目(PTE)。存储在每个条目中的数据是物理存储器地址(PFN)。这里的基本假设是物理内存也使用32位地址空间。因此,PTE将至少为4个字节(4 * 8 = 32位)。

在内存页面大小为4KB(2 ^ 2 * 2 ^ 10 B)的32位系统中,进程可以拥有的最大页数为2 ^(32-12)= 1M。每个进程认为它可以访问所有物理内存。为了将所有1M虚拟内存地址转换为物理内存地址,进程可能需要存储1 M个PTE,即4 MB。

答案 5 :(得分:1)

页表条目是获取任何帧编号所需的位数。例如,如果你有一个2 ^ 32帧的物理内存,那么你需要32位来表示它。这32位以4个字节(32/8)存储在页表中。

现在,由于页数是100万,所以页表的总大小= 页表条目*页数 = 4B * 100万 = 4MB。

因此,需要4mb来存储将表存储在主存储器(物理存储器)中。

答案 6 :(得分:0)

老实说,这对我本人来说有点新鲜,但是为了简短起见,看起来4MB的原因是有100万个条目(每个PTE都存储一个物理页号,假设它存在);因此,有100万个PTE,即2 ^ 20 = 1MB。 1MB * 4字节= 4MB,因此每个进程的页表都需要它。