当我需要分配超出系统内存限制的虚拟内存时,我有哪些选择?
页面文件是无限制的(受可用磁盘空间限制)所以为什么我不能用它来分配超出物理内存限制或操作系统内存限制的内存?为什么他们用地址空间的边界限制虚拟内存?我知道CPU可以使用物理内存,但是当我访问虚拟内存的某些部分时,OS为什么不为我处理这个?
答案 0 :(得分:3)
操作系统会为您解决此问题。您不必考虑何时充分利用物理内存,因为虚拟内存系统会将此隐藏起来。应用程序地址空间的限制是为在体系结构中存储内存地址而分配的位数的结果。
编辑回复:评论
我认为您可能会将给定进程可用的内存量与操作系统管理的虚拟内存总量混淆,后者在进程间共享。所有进程的提交虚拟内存总量都有限制,但此提交限制与单个进程的地址空间限制不同。总提交限制是松散的物理内存量+页面文件大小。因此,可以调整页面文件大小以增加或减少此数字。
答案 1 :(得分:0)
Bshields有直接的答案。我只是想补充一点,如果你在Windows上工作,那么值得尊敬的Mark Russinovich在这里有一篇关于虚拟内存的非常详细且写得很好的帖子:http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx。
答案 2 :(得分:0)
虚拟内存和地址空间是两个独立的概念。内存分页是另一回事。
地址空间的大小仅限于可以寻址的范围位置。这是CPU及其运行模式的限制。例如,在具有32 GB内存的64位系统上运行的典型32位应用程序仍具有32位地址空间。更多存储可用的事实并没有改变这样的事实(忽略PAE的存在),32位程序只使用32位地址。
虚拟内存实际上只是操作系统可以控制虚拟内存页面和物理内存页面之间的一组映射的概念。
内存分页允许操作系统进行内存分页,以便某些虚拟页面存储在磁盘而不是物理内存中。这可以允许分配比系统上的物理内存更多的虚拟内存。