出一道二级页表的题
假设一个进程的虚拟地址空间大小为32位(4GB),物理地址空间大小为36位(64GB),使用二级页表管理虚拟地址空间。每个页的大小为4KB,页表条目大小为4Byte。第一级页表有1024个条目,每个条目指向一个第二级页表。第二级页表也有1024个条目,每个条目指向一个物理页帧。现在给出以下虚拟地址和物理地址的映射情况:
虚拟地址 0x00000000 ~ 0x003FFFFF 映射到物理地址 0x40000000 ~ 0x403FFFFF
虚拟地址 0x00400000 ~ 0x007FFFFF 映射到物理地址 0x20000000 ~ 0x203FFFFF
虚拟地址 0x00800000 ~ 0x00BFFFFF 映射到物理地址 0x80000000 ~ 0x803FFFFF
请回答以下问题:
- 二级页表的大小是多少?
- 这个进程最多能使用多少个物理页帧?
- 给出虚拟地址0x00C00000映射到的物理地址。
答案:
- 第一级页表有1024个条目,每个条目占用4Byte,因此第一级页表的大小为1024*4=4096Byte=4KB。第二级页表也有1024个条目,每个条目占用4Byte,因此第二级页表的大小也为4KB。因此,二级页表的总大小为4KB+4KB=8KB。
- 每个页的大小为4KB,因此一个物理页帧可以存放一个页。这个进程的虚拟地址空间大小为4GB,共有2^32/2^12=2^20个虚拟页。由于使用了二级页表,因此需要2^10个第一级页表条目来指向2^10个第二级页表。每个第二级页表条目可以指向一个物理页帧,因此最多需要2^10*2^10=2^20个物理页帧。也就是说,这个进程最多能使用2^20个物理页帧。
- 虚拟地址0x00C00000的前20位为0x00C00,表示需要查找第一级页表的第0x00C00个条目。查找到这个条目后,得到第二级页表的物理地址为0x80300000。接下来,需要查找第二级页表的第0x00000个条目,即物理页帧的编号为0x00000。由于该进程所使用的物理页帧大小为4KB,因此物理页帧的起始地址为0x00000*4KB=0x00000000。因此,虚拟地址0x00C00000映射到的物理地址为0x80300000+0x00000000=0x80300000。
原文地址: https://www.cveoy.top/t/topic/bjOL 著作权归作者所有。请勿转载和采集!