【发布时间】:2011-05-13 18:53:06
【问题描述】:
我正在阅读
当一个进程被创建并被赋予时 它的地址空间,大部分 可用的地址空间是空闲的,或者 未分配。要使用这部分 地址空间,你必须分配 通过调用其中的区域 虚拟分配。 分配一个 区域称为保留。
使用地址的保留区域 空间,你必须分配物理 存储,然后将此存储映射到 保留区域。 这个过程是 称为提交物理存储。
在您预订了一个区域后,您 需要将物理存储提交给 在您可以访问之前的区域 其中包含的内存地址。 系统分配物理存储 致力于从 系统的分页文件。
这里有几个问题:
为什么我们在使用内存时需要遵循reserve-commit 范式?即为什么我们需要遵循这种两步范式,而不是直接分配一些物理内存并使用它?
如果提交给区域的物理存储是从系统的页面文件中分配的,为什么我们需要 RAM(听起来很荒谬)?在我看来,地址空间区域应该映射到 RAM(通过分页机制),并且 RAM 页面应该由分页文件支持。
也许这个问题可以通过解释以下2个方面来回答:
保留有什么作用?
提交有什么作用?
更新 - 2010 年 11 月 23 日下午 1 点 2:48
让我不解的是
...最好考虑物理 存储为存储在分页中的数据 磁盘驱动器上的文件。所以当一个 应用程序提交物理存储 到地址空间的一个区域 调用 VirtualAlloc 函数, 空间实际上是从一个 硬盘上的文件。
在您预订了一个区域后,您 需要将物理存储提交给 在您可以访问之前的区域 其中包含的内存地址。 系统从 系统的分页文件。
那么,内存在哪里?如果我将我的机器配置为没有页面文件怎么办?
【问题讨论】: