我有以下页process1
表:
假设分页系统使用16bit
地址和页面大小为4k
我想将逻辑地址转换16000
为物理地址。
我对这个话题有点陌生,所以请放轻松:
部分解决方案:地址16000
适合3
页表中的单元格编号,所以我想我需要使用该单元格及其存储的帧 - 2
。
我现在如何找到偏移量和物理地址?
谢谢
我有以下页process1
表:
假设分页系统使用16bit
地址和页面大小为4k
我想将逻辑地址转换16000
为物理地址。
我对这个话题有点陌生,所以请放轻松:
部分解决方案:地址16000
适合3
页表中的单元格编号,所以我想我需要使用该单元格及其存储的帧 - 2
。
我现在如何找到偏移量和物理地址?
谢谢
在您的情况下,进程 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。
干杯:)