0
据我所知,(英特尔)虚拟地址转换过程为:如何翻译虚拟地址?
1.传入虚拟地址被分为页表号,页号,和偏移量。
2. CPU中的进程desriptor基址寄存器(PDBR)告诉目录开始的位置。
3.页表号被乘以4以用作目录的偏移量,并且查找目录条目。
4.该目录条目包含页表的地址,以及有效性和保护信息。如果此信息表明页表不在内存中或者保护不正常,则转换停止并引发异常。
5.将页码乘以4以用作页表中的偏移量,并查找页表项。
6.页表项包含页面地址,有效性和保护信息。如果此信息表明页面不在内存中或者保护不正常,则翻译将停止并引发异常。
7.偏移量用作页面的索引。
8.数据在最终到达的地址。
这都有道理高达第6步在那里我感到困惑,因为 表项格式仅指定,这意味着它只能访问最多1兆字节物理页帧地址20位,或者它左移12位(乘以4096:页面大小)才能访问4千兆字节
是的,但这并不意味着页面必须在1兆边界(2^20)内? – 2012-04-06 04:44:43
没有。所有页面从4K边界开始,所以没有理由存储低12位。 – stark 2012-04-06 04:54:29
所以20位确实被左移了12位 – 2012-04-06 04:56:57