Memory 如何翻译虚拟地址?

Memory 如何翻译虚拟地址?,memory,hardware,paging,mmu,Memory,Hardware,Paging,Mmu,我了解(对于英特尔)虚拟地址转换过程是: 1。传入的虚拟地址分为页表号、页号和偏移量 2.CPU中的进程描述器基址寄存器(PDBR)告诉目录从何处开始 3。页表编号乘以4,作为目录的偏移量,并查找目录条目 4.目录条目包含页面表的地址、有效性和保护信息。如果此信息表示内存中不存在页表或保护不正常,则转换将停止并引发异常 5。页码乘以4,用作页表的偏移量,并查找页表条目 6.页面表条目包含页面地址、有效性和保护信息。如果此信息表示页面不在内存中或保护不正常,则转换将停止并引发异常 7。偏移量用作页

我了解(对于英特尔)虚拟地址转换过程是:

1。传入的虚拟地址分为页表号、页号和偏移量

2.CPU中的进程描述器基址寄存器(PDBR)告诉目录从何处开始

3。页表编号乘以4,作为目录的偏移量,并查找目录条目

4.目录条目包含页面表的地址、有效性和保护信息。如果此信息表示内存中不存在页表或保护不正常,则转换将停止并引发异常

5。页码乘以4,用作页表的偏移量,并查找页表条目

6.页面表条目包含页面地址、有效性和保护信息。如果此信息表示页面不在内存中或保护不正常,则转换将停止并引发异常

7。偏移量用作页面的索引

8.数据位于最终到达的地址

这一切在第6步中都是有意义的,因为
表格条目格式仅为物理页面帧地址指定20位,这意味着它最多只能访问1兆字节,或者将其左移12位(乘以4096:页面大小),以便能够访问4千兆字节

这是32位转换过程。每个页表条目为32位,但低12位用于标志。上20位是页面地址。

是的,但这不意味着页面必须在1兆字节的边界内(2^20)?否。所有页面都以4K边界开始,因此没有理由存储低12位。因此,20位确实会向左移动12。如果查看页面表条目,它们已经处于正确的位置。