内存管理:App真正将内存分配加载到虚拟或物理内存中的位置是什么?还是两者兼有?

问题描述 投票:0回答:1

我很好奇,一步一步知道将管理代码加载到虚拟和物理内存中。因为我对虚拟内存与物理内存处理有些困惑。

这是我认为的工作方式:

1)我们单击.exe文件,然后单击O.S.。指向clr.dll。2)如果这是32位或64TB(64位),则CLR.dll将.exe程序加载到“虚拟内存”(页面文件)中,并分配4gb。现在将其称为工作过程(专用字节内存+共享内存)。3)内存管理单元(MMU)将在物理内存中分配相同的分配大小,以便两端都可以分配数据。4)当应用程序需要加载所需的其他dll,并且当应用程序开始将函数和对象,变量等加载到内存时,它现在指向MMU,这看起来是在“页面表”中,其中有虚拟页面将指向(映射)到物理但是有时如果“页表”为0,则表示内存帧为空,这意味着它将换出到本地虚拟内存存储(页文件)。

历史短:Apps始终使用虚拟内存(页面),其中由于页面表而将其映射到物理内存(帧),或者有时在本地虚拟内存存储区(页面文件)中分配了虚拟内存。因此,所有时间内存都在物理内存和虚拟内存之间进行分页,这表明专用字节将存储在两个位置(不仅存储在物理内存中)。

请帮助我逐步理解这个概念,因为我撰写了很多文章,但是没有一篇从头开始的真实示例,它们真正地加载了程序(分配)的内存。谢谢,

.net memory-management process clr mmu
1个回答
0
投票

这是一个好问题,希望有人帮助您做出详细的答复,因为我也有同样的疑问

© www.soinside.com 2019 - 2024. All rights reserved.