处理器使用2级页表进行虚拟到物理地址的转换。这两个级别的页表都存储在主存储器中。虚拟和物理地址均为32位宽。存储器是字节可寻址的。对于虚拟到物理地址的转换,虚拟地址的10个最高有效位用作第一级页面表的索引,而后10位用作第二级页面表的索引。虚拟地址的12个最低有效位用作页面内的偏移量。假定两个级别的页表中的页表项均为4字节宽。此外,处理器具有转换后备缓冲器(TLB),命中率为96%。 TLB缓存最近使用的虚拟页号和相应的物理页号。该处理器还具有一个物理寻址的高速缓存,命中率为90%。主存储器访问时间为10 ns,缓存访问时间为1 ns,TLB访问时间也为1 ns。
假设一个进程在其虚拟地址空间中只有以下页面:从虚拟地址0x00000000开始的两个连续代码页,从虚拟地址0×00400000开始的两个连续数据页,以及从虚拟地址0×FFFFF000开始的堆栈页。存储此过程的页表所需的内存量为:
(A) 8 KB
(B) 12 KB
(C) 16 KB
(D) 20 KB答案: (C)
解释:
Breakup of given addresses into bit form:-
32bits are broken up as 10bits (L2) | 10bits (L1) | 12bits (offset)
first code page:
0x00000000 = 0000 0000 00 | 00 0000 0000 | 0000 0000 0000
so next code page will start from
0x00001000 = 0000 0000 00 | 00 0000 0001 | 0000 0000 0000
first data page:
0x00400000 = 0000 0000 01 | 00 0000 0000 | 0000 0000 0000
so next data page will start from
0x00401000 = 0000 0000 01 | 00 0000 0001 | 0000 0000 0000
only one stack page:
0xFFFFF000 = 1111 1111 11 | 11 1111 1111 | 0000 0000 0000
Now, for second level page table, we will just require 1 Page
which will contain following 3 distinct entries i.e. 0000 0000 00,
0000 0000 01, 1111 1111 11.
Now, for each of these distinct entries, we will have 1-1 page
in Level-1.
Hence, we will have in total 4 pages and page size = 2^12 = 4KB.
Therefore, Memory required to store page table = 4*4KB = 16KB.
这个问题的测验