题目
一个计算机使用32位虚拟地址[1],页面为4KB。程序和数据都位于最低的页面(0~4095),堆栈位于最高的页面。如果使用一级分页[2],页表[3]中需要多少个表项?如果使用二级分页,每部分有10位,需要多少个页表项?
一个计算机使用32位虚拟地址[1],页面为4KB。程序和数据都位于最低的页面(0~4095),堆栈位于最高的页面。如果使用一级分页[2],页表[3]中需要多少个表项?如果使用二级分页,每部分有10位,需要多少个页表项?
题目解答
答案
根据题目给出的信息,一共有2^32个虚拟地址,而每个页面大小为4KB,即2^12字节。由于使用一级分页,每个页表项对应一个页面,故需要的表项数量为总地址数除以页面大小。计算得到,需要2^32 / 2^12 = 2^20个表项。
如果使用二级分页,每部分有10位,则第一部分可表示的页表项数量为2^10 = 1024个。同样地,第二部分也可表示1024个页表项。因此,总共需要的页表项数量为1024 * 1024 = 2^20个。
解析
步骤 1:计算一级分页所需的页表项数量
- 32位虚拟地址可以表示的地址范围为2^32个地址。
- 每个页面大小为4KB,即2^12字节。
- 一级分页中,每个页表项对应一个页面,因此需要的表项数量为总地址数除以页面大小。
- 计算得到,需要2^32 / 2^12 = 2^20个表项。
步骤 2:计算二级分页所需的页表项数量
- 如果使用二级分页,每部分有10位,则第一部分可表示的页表项数量为2^10 = 1024个。
- 同样地,第二部分也可表示1024个页表项。
- 因此,总共需要的页表项数量为1024 * 1024 = 2^20个。
- 32位虚拟地址可以表示的地址范围为2^32个地址。
- 每个页面大小为4KB,即2^12字节。
- 一级分页中,每个页表项对应一个页面,因此需要的表项数量为总地址数除以页面大小。
- 计算得到,需要2^32 / 2^12 = 2^20个表项。
步骤 2:计算二级分页所需的页表项数量
- 如果使用二级分页,每部分有10位,则第一部分可表示的页表项数量为2^10 = 1024个。
- 同样地,第二部分也可表示1024个页表项。
- 因此,总共需要的页表项数量为1024 * 1024 = 2^20个。