我试图了解程序中分配的变量(例如 C++ 中的 new 关键字)如何转换为虚拟页面。
我的理解是,每个进程都会有自己的虚拟内存空间,并且这个空间会被分割成若干个固定大小(比如64字节)的页面。当我们在程序中分配内存时,我们从第一个地址开始向下移动。因此,如果我们分配 128 字节,我们将消耗两个页面,这两个页面都将被放入 MMU 页表中。
我难以理解的部分如下:
我假设它基本上从 0 -> 内存地址开始计数,并将其除以固定页面大小(64 字节)。然后就可以用这个数字访问页表了。
我知道其中很大一部分取决于系统,但我只是想掌握对其的一般理解。 谢谢!
我找到了这篇文章。它很好地解释了幕后发生的事情。它是用 C 语言编写的,有点旧,但它可以帮助您大致了解它是如何工作的。