计算页面大小

时间:2013-05-01 18:15:21

标签: memory-management paging

我正在阅读页面表的示例,只是发现了这个:

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

我真的不明白这4MB结果代表什么。它是否代表实际页面表占用的空间?

5 个答案:

答案 0 :(得分:56)

由于我们的虚拟地址空间 2 ^ 32 且每个页面大小 2 ^ 12 ,我们可以存储(2 ^ 32/2 ^ 12)= 2 ^ 20页。由于此页表中的每个条目都有一个大小为4字节的地址,因此我们有 2 ^ 20 * 4 = 4MB 。因此页面内存占用4MB

答案 1 :(得分:12)

我的解释使用了帮助我理解的基本构建块。注意我正在利用@Deepak Goyal's answer above,因为他提供了清晰度:

我们获得了一个逻辑32位地址空间(即我们有一台32位计算机)

  

考虑具有32位逻辑地址空间的系统

我们也被告知

  

每个页面大小为4 KB

  • 1 KB(千字节)= 1 x 1024字节= 2 ^ 10字节
  • 4 x 1024字节= 2 ^ 2 x 2 ^ 10字节=> 4 KB(即2 ^ 12字节)
  • 每页的大小为4 KB (Kilo 字节 NOT kilo )。

正如Depaak所说,我们使用以下公式计算页面表中的页数:

Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size 
Num_Pages_in_PgTable =         2^32                           /    2^12
Num_Pages_in_PgTable = 2^20 (i.e. 1 million) 

作者继续说明页表中的每个条目占用4个字节的情况。这意味着物理内存中页面表的总大小将为4MB:

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable
Memory_Required_Per_Page =           4                 x     2^20
Memory_Required_Per_Page =     4 MB (Megabytes)

所以是的,每个进程都需要至少4MB的内存才能运行,增量为4MB。

实施例

现在,如果教授想让这个问题比书中的解释更具挑战性,他们可能会询问64位计算机。假设他们想要中的内存。为了解决这个问题,我们将遵循相同的过程,只确保将MB转换为Mbits。

让我们逐步完成这个例子。

吉文斯:

  
      
  • 逻辑地址空间:64位
  •   
  • 页面大小:4KB
  •   
  • Entry_Size_Per_Page:4个字节
  •   

召回:64位条目可以指向2 ^ 64个物理页面帧之一      - 由于页面大小为4 KB,因此我们仍然有 2 ^ 12 字节页面大小

  
      
  • 1 KB(千字节)= 1 x 1024字节= 2 ^ 10字节
  •   
  • 每页的大小= 4 x 1024字节= 2 ^ 2 x 2 ^ 10字节= 2 ^ 12字节
  •   

页面表中有多少页?

`Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size 
Num_Pages_in_PgTable =         2^64                            /    2^12
Num_Pages_in_PgTable =         2^52 
Num_Pages_in_PgTable =      2^2 x 2^50 
Num_Pages_in_PgTable =       4  x 2^50 `  

每页BITS的内存量是多少?

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable 
Memory_Required_Per_Page =   4 bytes x 8 bits/byte    x     2^52
Memory_Required_Per_Page =     32 bits                x   2^2 x 2^50
Memory_Required_Per_Page =     32 bits                x    4  x 2^50
Memory_Required_Per_Page =     128 Petabits

[2]:操作系统概念(第9版) - Gagne,Silberschatz和Galvin

答案 2 :(得分:4)

假设逻辑地址空间为** 32位 ,因此总可能的逻辑条目为 2 ^ 32 另一方面假设每个页面大小为 4字节 ,那么一页的大小为 * 2 ^ 2 * 2 ^ 10 = 2 ^ 12 ...... * < /强> 现在我们知道没有。页表中的页面是 pages =可能的逻辑地址条目/页面大小 所以 pages = 2 ^ 32/2 ^ 12 = 2 ^ 20 现在假设页表中的每个条目占用4个字节,那么 *物理内存中页表的总大小将为= 2 ^ 2 * 2 ^ 20 = 2 ^ 22 = 4mb ***

答案 3 :(得分:3)

由于逻辑地址空间为32位长,这意味着程序大小为2 ^ 32字节,即4GB。 现在我们的页面大小为4KB ie2 ^ 12 bytes。因此程序中的页数是2 ^ 20。(程序中的页数=程序大小/页面大小)。现在页面表项的大小是4字节因此页表的大小是2 ^ 20 * 4 = 4MB(页表的大小=程序*页表项大小中的页数)。因此,内存中需要4MB空间来存储页表。

答案 4 :(得分:2)

在32位虚拟地址系统中我们可以有2 ^ 32个唯一地址,因为给定的页面大小是4KB = 2 ^ 12,我们在页面中需要(2 ^ 32/2 ^ 12 = 2 ^ 20)个条目表,如果每个条目是4Bytes那么页面表的总大小= 4 * 2 ^ 20字节= 4MB