0

我有以下process1表:

在此处输入图像描述

假设分页系统使用16bit地址和页面大小为4k

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

我对这个话题有点陌生,所以请放轻松:

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

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

谢谢

4

1 回答 1

6

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

16000 mod 4096 =  3712(offset).

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

干杯:)

于 2012-07-26T04:49:42.573 回答