gpt4 book ai didi

linux - 虚拟到物理内存映射如何工作

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:49 25 4
gpt4 key购买 nike

我目前正在尝试了解 Linux 的系统编程,但很难理解虚拟内存到物理内存的映射是如何工作的。

据我所知,P1P2 这两个进程可以引用相同的虚拟地址,例如 0xf11001。现在这个内存地址被分成两部分。 0xf11 是页码,0x001 是该页内的偏移量(假设使用 4096 页大小)。为了找到物理地址,MMU 具有将页码映射到物理地址的硬件寄存器,可以说 0xfff。最后一步是将 0xfff0x001 结合起来,找到物理 0xfff001 地址。

但是这种理解毫无意义,相同的虚拟地址仍会指向相同的物理位置???为了使我的理解正确,我缺少哪一步???

最佳答案

您在这里错过了一个(关键的)步骤。通常,MMU 没有带映射的硬件寄存器,而是一个寄存器(页表基址指针),它指向当前运行进程的页表(带映射)的物理内存地址(每个过程都是唯一的)。在上下文切换时,内核会更改此寄存器的值,因此对于每个正在运行的进程,将执行不同的映射。

这里有关于这个主题的精彩介绍:http://www.eecs.harvard.edu/~mdw/course/cs161/notes/vm.pdf

关于linux - 虚拟到物理内存映射如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32776089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com