我的解释使用了帮助我理解的基本构建块。请注意,我正在利用 @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(千字节而不是千位)。
正如德帕克所说,我们用这个公式计算页表中的页数:
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 位计算机。假设他们想要bits的内存。为了解决这个问题,我们将遵循相同的过程,只是确保将 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