有人可以解释一下操作系统中的分页吗?

时间:2017-06-04 17:05:04

标签: memory-management operating-system paging cpu-architecture

  

通常,在32位CPU上,每个页表项长度为4个字节,   但是这个尺寸也会有所不同。 32位条目可以指向其中一个   2 ^ 32个物理页面框架。如果帧大小是4 KB(2 ^ 12),那么系统   使用4字节条目可以处理2 ^ 44字节(或16 TB)的物理   记忆。我们应该在这里注意一下物理内存的大小   分页内存系统不同于a的最大逻辑大小   过程

分页如何使逻辑内存空间超过物理内存空间? 32位CPU中的帧总数是否等于2 ^(32-12)= 2 ^ 20帧数而不是2 ^ 32帧数?如果是这样,是不是一个4字节条目的系统能够寻址(2 ^ 20)*(2 ^ 12)字节的内存?

2 个答案:

答案 0 :(得分:4)

该文本不是很清楚。我会试着清除它。

将虚拟地址转换为物理地址时,固定数量的低位不会被转换:

+---------------------+----------+
|    High bits        | Low bits |
+---------------------+----------+
         |                  |
         |                  |
         V                  |
   [Page tables]            |
         |                  |
         |                  |
         V                  V
+---------------------+----------+
|        Physical address        |
+---------------------+----------+

低位数与页面大小相关:如果我们假设4KiB页面,那么低12位是固定的而不是翻译的。
我们还假设虚拟地址空间是32位。

如果页表项长度为32位,则可以提供32位作为物理地址的高位部分。
因此,当查找页表时,我们在输入中有20(32 - 12)位,在输出中有32位 利用固定部分的额外12位,这给出了32 + 12 = 44位的物理地址。

更新的数字:

        <---------- 32 bits ----------->
        <---- 20 bit -------> <- 12 b -> 
       +---------------------+----------+
       |    High bits        | Low bits |
       +---------------------+----------+
               |                  |
               | 20 bit           |
               V                  |
         [Page tables]            |
               |                  |
               | 32 bit           |
               V                  V
+----------------------------+----------+
|           Physical address            |
+----------------------------+----------+
 <-------- 32 bits ---------> <- 12 b ->
 <------------- 44 bits --------------->

这不是真正的44位寻址,但指针仍然是32位 应用程序只能直接访问4GiB内存,但操作系统可以映射一个 应用于第一个4GiB,另一个应用于第二个4GiB等等。

这类似于PAE在x86上的工作方式。

假设所有页表条目都用于给出物理地址的较高位是不真实的 其中一些位用于设置帧的属性:缓存能力,访问权限,映射状态等。

物理地址的高位称为页面帧 页面帧数由页表项的结构决定,而不是由虚拟地址空间的大小(物理地址空间的大小)决定。
如果页表条目的帧编号为50位,那么有2个 50 帧 物理地址的下半部分称为页面偏移,它由页面大小(或帧大小,它们在设计上相等)决定。

答案 1 :(得分:-1)

当我们说一个 cpu 是 32 位或 64 位时,它的意思是它可以分别指向 2^32 或 2^64 个物理页帧。现在如果一个页框的大小为 4KB (2^12) 那么可以访问的内存总量是 (2^12)×(2^32)=2^44 字节或 16TB