JAN*_*JAN 0 memory-management process virtual-memory
我有如下页表的process1:

假设寻呼系统使用16bit地址和页面大小4k
我想将逻辑地址16000转换为物理地址.
我对这个话题有点新意,所以对我很轻松:
部分解决方案:地址16000适合3页表中的单元格编号,所以我想我需要处理该单元格及其存储的框架 - 2.
我现在如何找到偏移量和物理地址?
谢谢
在您的情况下,进程1当前可以访问最多4*4k字节的虚拟内存.
通常,进程可以访问高达4gb的虚拟内存(具体取决于实现).
现在,您提供的表将虚拟内存映射到实际物理地址(在RAM上).页表的每个条目都将4k内存从虚拟空间映射到物理空间.
因此,地址16000对应于页表的第3个条目的物理地址被映射到从中开始的物理地址8192(3*4096) till 12288 (8192+4096).
16000 mod 4096 = 3712(offset).
Run Code Online (Sandbox Code Playgroud)
在虚拟页面2中的3172字节偏移处,即在物理页面3中的偏移量3172处(在地址8192处),您找到对应于地址16000的数据.
所有这些映射由MMU(存储器管理单元)为每个映射完成.地址访问过程.
理解这个概念的好链接就在这里.
干杯:)