所以我真的不明白这个。谁能解释如何解决这些问题?
假设我们有一个带有基于分页的内存系统的 32 位 CPU。页面大小为 4KB(2^12)。现在 CPU 生成一个虚拟地址 0x0000AAA
1.) 这个虚拟地址的虚拟页号是多少?什么是页面偏移量?
2.) 使用下面的页表,将上述虚拟地址转换为物理地址 - 以十六进制表示。页表显示前 5 个条目。
0 - 0xAAAAA 1 - 0xBBBBB 2 - 0xCCCCC 3 - 0xDDDDD 4 - 0xEEEEE
所以我真的不明白这个。谁能解释如何解决这些问题?
假设我们有一个带有基于分页的内存系统的 32 位 CPU。页面大小为 4KB(2^12)。现在 CPU 生成一个虚拟地址 0x0000AAA
1.) 这个虚拟地址的虚拟页号是多少?什么是页面偏移量?
2.) 使用下面的页表,将上述虚拟地址转换为物理地址 - 以十六进制表示。页表显示前 5 个条目。
0 - 0xAAAAA 1 - 0xBBBBB 2 - 0xCCCCC 3 - 0xDDDDD 4 - 0xEEEEE
如果一个页面的大小是 4KB(= 4096 字节),这意味着从 0 到包括 4095 (0x00000fff) 的所有地址都在第一页中。
0x0000aaa 小于 0x00000fff,所以这仍然在第一页(第 0 页)。
要获取与虚拟地址 0x00000aaa 对应的物理地址,请查找页面 #0 的前缀,即 0xAAAAA。
由于给定页面大小为 4 KB,这意味着一个页面有 4K 个地址。因此,我们需要 12 位来到达页面中的每个地址。
因此,页偏移量 = 12 位。
由于系统是 32 位的,因此 20 位将用作页码。
由于页面大小等于帧大小,因此帧偏移量 = 12 位。
现在,使用页表来获取物理地址。