我在Windows XP上将虚拟内存大小设置为756 MB。但是当在msdn上阅读时,它表示32位操作系统上每个进程的虚拟内存默认为4 GB。它与我设置的虚拟内存大小有何不同?
**Memory** **range** **Usage**
Low 2GB (0x00000000 through 0x7FFFFFFF) Used by the process.
High 2GB (0x80000000 through 0xFFFFFFFF) Used by the system.
另外,每个过程的范围如何相同?
答案 0 :(得分:3)
您的页面文件设置为756 Mb。页面文件就像额外的RAM,但由磁盘支持。
然而,虚拟内存是不同的,有点复杂。每个进程获得4 Gb的地址空间。这是一个32位指针的范围,所以'很好地工作。其中一半是为内核(操作系统)保留的,并且在每个进程中都是相同的。另一半是流程本身,并且是该流程独有的。
当进程请求时,操作系统将“页面”分配给内存的私有部分。页面在进程的地址空间中有一个插槽,它与物理RAM中的位置没有任何关系。事实上,如果他们目前没有被使用,他们甚至可能不在RAM中。如果操作系统需要一些物理RAM来处理其他内容,操作系统会将页面“交换”到页面文件中。
重要的是要记住,你的进程中的地址0x10000与另一个进程中的0x10000完全不同。
幸运的是,操作系统将所有这些都搞砸了,所以你不必这样做。
答案 1 :(得分:2)
这是一个太大的主题,无法在这里得到充分的答案。你几乎肯定需要读一本书(我推荐Jeffrey Richter为这类题材写的书)。
4 Gb是关于地址空间的。 756 Mb是关于支持商店。
相当多的事情(尤其是可执行文件的内容)使用地址空间而不使用后备存储。执行程序时,该程序的可执行文件(及其使用的所有DLL)将映射到地址空间。然后,在逐页的基础上,根据需要将可执行文件的各个部分放入物理内存中。
756 Mb是用于“扩展”RAM空间的额外存储 - 但这通常仅用于数据,而不是代码;代码已存储在可执行文件中,因此系统会在需要时直接从可执行文件中读取数据。 756 Mb主要用于您在计算机运行时创建或修改的数据(尽管“已修改/创建”的定义可能是模糊的 - 例如,您加载的网页内容将包含在内因为你导致它进入内存,即使你没有创建或改变它。
答案 2 :(得分:1)
Windows中的虚拟内存设置只会影响虚拟内存分页文件的大小,而不会影响分配给进程的虚拟内存总大小。