处理器使用 2 级页表进行虚拟地址到物理地址的转换。两个级别的页表都存储在主存储器中。虚拟地址和物理地址都是 32 位宽。内存是字节可寻址的。对于虚拟到物理地址的转换,虚拟地址的最高 10 位用作第一级页表的索引,而接下来的 10 位用作第二级页表的索引。虚拟地址的 12 个最低有效位用作页面内的偏移量。假设两级页表中的页表条目都是 4 字节宽。此外,该处理器具有翻译后备缓冲器 (TLB),命中率为 96%。 TLB 缓存最近使用的虚拟页码和相应的物理页码。该处理器还有一个物理寻址缓存,命中率为 90%。主存访问时间为10 ns,缓存访问时间为1 ns,TLB访问时间也为1 ns。
假设一个进程在其虚拟地址空间中只有以下页面:从虚拟地址 0x00000000 开始的两个连续代码页,从虚拟地址 0×00400000 开始的两个连续数据页,以及从虚拟地址 0×FFFFF000 开始的堆栈页。存储这个进程的页表所需的内存量为:
(一) 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.
这个问题的测验