虚拟地址空间(VAS)中的内存映射

时间:2016-05-21 17:20:16

标签: virtual-memory memory-mapping

这个关于虚拟内存的[wiki article]说:

  

然后,该进程开始在exe文件中执行字节。然而   只有这个过程可以使用或设置' - ' VAS中的值是要问的   操作系统将它们映射到文件中的字节。使用VAS的常用方法   这种方式的内存是将它映射到页面文件。

图表如下:

           0                                            4GB
VAS        |---vvvvvvv----vvvvvv---vvvv----vv---v----vvv--|
mapping        |||||||    ||||||   ||||    ||   |    |||
file bytes     app.exe    kernel   user   system_page_file

我不理解values in its VAS is to ask the OS to map them to bytes from a file.

部分

这里的系统页面文件是什么?

1 个答案:

答案 0 :(得分:1)

首先,我无法想象维基百科中存在如此糟糕的文章。在能够理解所描述的内容之前,必须是熟悉该主题的专家。

假设您理解了本文的其余部分,“ - ”部分表示进程可用的4GB地址空间内的未分配虚拟地址。所以句子“进程可以在其VAS中使用或设置' - '值的唯一方法是要求操作系统将它们映射到文件中的字节”意味着分配虚拟内存地址,例如在调用VirtualAlloc()的Windows本机程序中,或调用malloc()的C程序分配一些内存来存储程序数据,而这些内存尚未存在于当前进程的虚拟地址空间中。

当Windows将内存分配给进程地址空间时,它通常会将这些内存与硬盘中的页面文件相关联。 c:\ pagefile.sys是这个页面文件,它是文章中提到的 system_page_file 。当没有足够的物理页面来满足需求时,内存页面将被换出到该文件。

希望澄清