有人可以解释一下操作系统中的分页吗?
Can someone explain this about paging in operating system?
Frequently, on a 32-bit CPU, each page-table entry is 4 bytes long,
but that size can vary as well. A 32-bit entry can point to one of
2^32 physical page frames. If frame size is 4 KB (2^12), then a system
with 4-byte entries can address 2^44 bytes (or 16 TB) of physical
memory. We should note here that the size of physical memory in a
paged memory system is different from the maximum logical size of a
process.
分页如何让逻辑内存space多于物理内存space? 32 位 CPU 中的总帧数不等于 2^(32-12)=2^20 帧数而不是 2^32 帧数吗?如果是这样,是不是具有 4 字节条目的系统能够寻址 (2^20)*(2^12) 字节的内存?
诚然,该文本不是很清楚。我会尝试清除它。
将虚拟地址转换为物理地址时,不会转换固定数量的低位:
+---------------------+----------+
| High bits | Low bits |
+---------------------+----------+
| |
| |
V |
[Page tables] |
| |
| |
V V
+---------------------+----------+
| Physical address |
+---------------------+----------+
较低的位数与页面大小相关:如果我们假设 4KiB 页面,那么较低的 12 位是固定的,不会被转换。
我们还假设虚拟地址space是32位。
如果页面 table 条目是 32 位长,它可以给出 32 位用作物理地址的高位部分。
因此,在查找页面 tables.
时,我们有 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 的内存,但是 OS 可以映射一个
应用到第一个 4GiB,另一个应用到第二个 4GiB,依此类推。
这类似于 PAE 在 x86 上的工作方式。
所有页面 table 条目都用于提供物理地址的高位的假设是不正确的。
其中一些位用于设置帧的属性:缓存能力、访问权限、映射状态等。
物理地址的高位称为页框。
页框的数量由页面table条目的结构决定,而不是由虚拟地址space(也不是物理地址space)的大小决定。
如果页面 table 条目的帧编号为 50 位,则有 250 帧。
物理地址的较低部分称为页面偏移量,它由页面大小(或帧大小,它们在设计上相等)决定。
当我们说一个cpu是32位或64位时,意思就是它可以分别指向2^32或2^64个物理页框。现在,如果一个页框的大小为 4KB (2^12),那么可以访问的内存总量为 (2^12)×(2^32)=2^44 字节或 16TB
Frequently, on a 32-bit CPU, each page-table entry is 4 bytes long, but that size can vary as well. A 32-bit entry can point to one of 2^32 physical page frames. If frame size is 4 KB (2^12), then a system with 4-byte entries can address 2^44 bytes (or 16 TB) of physical memory. We should note here that the size of physical memory in a paged memory system is different from the maximum logical size of a process.
分页如何让逻辑内存space多于物理内存space? 32 位 CPU 中的总帧数不等于 2^(32-12)=2^20 帧数而不是 2^32 帧数吗?如果是这样,是不是具有 4 字节条目的系统能够寻址 (2^20)*(2^12) 字节的内存?
诚然,该文本不是很清楚。我会尝试清除它。
将虚拟地址转换为物理地址时,不会转换固定数量的低位:
+---------------------+----------+
| High bits | Low bits |
+---------------------+----------+
| |
| |
V |
[Page tables] |
| |
| |
V V
+---------------------+----------+
| Physical address |
+---------------------+----------+
较低的位数与页面大小相关:如果我们假设 4KiB 页面,那么较低的 12 位是固定的,不会被转换。
我们还假设虚拟地址space是32位。
如果页面 table 条目是 32 位长,它可以给出 32 位用作物理地址的高位部分。
因此,在查找页面 tables.
时,我们有 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 的内存,但是 OS 可以映射一个
应用到第一个 4GiB,另一个应用到第二个 4GiB,依此类推。
这类似于 PAE 在 x86 上的工作方式。
所有页面 table 条目都用于提供物理地址的高位的假设是不正确的。
其中一些位用于设置帧的属性:缓存能力、访问权限、映射状态等。
物理地址的高位称为页框。
页框的数量由页面table条目的结构决定,而不是由虚拟地址space(也不是物理地址space)的大小决定。
如果页面 table 条目的帧编号为 50 位,则有 250 帧。
物理地址的较低部分称为页面偏移量,它由页面大小(或帧大小,它们在设计上相等)决定。
当我们说一个cpu是32位或64位时,意思就是它可以分别指向2^32或2^64个物理页框。现在,如果一个页框的大小为 4KB (2^12),那么可以访问的内存总量为 (2^12)×(2^32)=2^44 字节或 16TB