【问题标题】:Memory mapping in Virtual Address Space(VAS)虚拟地址空间 (VAS) 中的内存映射
【发布时间】:2016-05-21 17:20:15
【问题描述】:

这个关于虚拟内存的[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.部分没看懂

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

【问题讨论】:

  • 那篇文章完全是荒谬的。忽略它所说的一切。
  • @user3344003 :我认为它是,这就是我发布它的原因。它的高时间它需要被删除。感谢您的 f/b。

标签: virtual-memory memory-mapping


【解决方案1】:

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

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

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

希望澄清

【讨论】:

  • pagefile.sys 和 Linux 中的交换功能一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多