将逻辑(虚拟)地址转换为物理地址

时间:2012-07-25 17:14:09

标签: memory-management process virtual-memory

我有process1页面表

enter image description here

假设寻呼系统使用16bit地址且页面大小为4k

我想将逻辑地址16000转换为物理地址。

我对这个话题有点新意,所以对我很轻松:

部分解决方案:地址16000符合网页表格中的单元格编号3,所以我猜 我需要使用该单元格及其存储的框架 - 2

如何找到偏移量和物理地址?

谢谢

1 个答案:

答案 0 :(得分:6)

在您的情况下,进程1当前可以访问最多4 * 4k字节的虚拟内存 通常,进程可以访问高达4gb的虚拟内存(具体取决于实现) 现在,您提供的表将虚拟内存映射到实际物理地址(在RAM上)。页表的每个条目都将4k内存从虚拟空间映射到物理空间。
因此,地址16000对应于页表的第3个条目的物理地址被映射到从8192(3*4096) till 12288 (8192+4096)开始的物理地址。

16000 mod 4096 =  3712(offset).

虚拟页面2中的偏移量为3172字节,即物理页面3(地址8192)的偏移量为3172时,您会找到与地址16000相对应的数据。
所有这些映射都由MMU(内存管理单元)完成,用于进程进行的每个地址访问 了解这一概念的良好链接是here

干杯:)