我有process1
的页面表:
假设寻呼系统使用16bit
地址且页面大小为4k
我想将逻辑地址16000
转换为物理地址。
我对这个话题有点新意,所以对我很轻松:
部分解决方案:地址16000
符合网页表格中的单元格编号3
,所以我猜
我需要使用该单元格及其存储的框架 - 2
。
如何找到偏移量和物理地址?
谢谢
答案 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。
干杯:)