计算32位虚拟机中页面的NO

问题描述 投票:0回答:1

考虑32位虚拟和物理地址空间,物理页面大小为4KB。假设刚创建了一个进程并将其程序复制到内存中。程序大小为1 KB。存储此进程的页表需要多少内存?

我这样做了:。

PTE size for 32bit physical address = 32 bits = 4 bytes. no of PTEs in single level page table = virtual pages= virtual address space / page = 2^32 / 2^ = 2^20

所以没有页面= 2 ^ 20。

但在解决方案中,他们也写道:

"#Pages in single level page table = #PTEs x PTE size / page size = 2^20 x 4 bytes / 2^12 bytes = 2^10. " 据我所知,页表是一个页表项数组,每个虚拟页一个。因此,页表条目中的任何一个都不应等于Pages。那么为什么#Pages等于2 ^ 10 ??

另一件事是“物理页面大小为4KB”。 ??页面是虚拟地址所以这意味着一个页面在物理内存上占用4KB的空间?

任何形式的帮助将不胜感激。

memory-management operating-system computer-science
1个回答
0
投票

对于单级页表;虚拟地址空间为4 GiB,页面为4 KiB,因此您需要“4 GiB / 4 KiB = 1048576页= 1048576页表条目”。这就是你提出的答案(2 ^ 20页表项)。

如果有1048576页表条目,并且您不知道页表条目有多大,则所有页表条目所需的内存总量将为“1048576 * unknown = unknowable”。

但是,对于32位物理地址空间大小和4 KiB页面大小,我们知道地址的12位将用于“页内偏移”,而地址的其余20位将用于“页码”;因此我们知道页表项必须至少为20位,因此我们知道所有页表项所需的内存总量至少为“1048576 * 20位= 20971520位= 2560 KiB”。

如果我们做出随机可能错误的假设(基于有根据的猜测)并确定页表条目可能是4个字节,我们可以说所有页表条目所需的内存总量可能是“1048576 * 4 bytes = 4 MIB”。

如果所有页表项所需的内存总量为4 MiB且物理页为4 KiB;然后你将需要“4 MiB / 4 KiB = 1024页”来存储所有页表条目。这是他们提出的答案(2 ^ 10页)。

另一件事是“物理页面大小为4KB”。 ??页面是虚拟地址所以这意味着一个页面在物理内存上占用4KB的空间?

页面不是虚拟地址;并且有虚拟页面和物理页面。

基本思想是将虚拟地址分成两部分(使用屏蔽/ AND和移位),以便“(virtual_page_number << K)+ offset_within_page = virtual_address”,然后使用“virtual_page_number”(和页面表)来查找“physical_page_number” ,然后执行“physical_address =(physical_page_number << K)+ offset_within_page”。

为此,虚拟页面的大小必须与物理页面的大小相同;因此,“页面大小”一词用于指代虚拟页面大小和物理页面大小。

© www.soinside.com 2019 - 2024. All rights reserved.