微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

虚拟内存的澄清 – 分配大量的连续内存

我有一个应用程序,我必须在Windows上分配(使用新操作符)相当大的内存空间(数百MB)。 该应用程序是32位(我们现在不使用64位,即使在64位系统上),我启用/ LARGEADDRESSAWARE链接器选项能够使用4 GB的用户空间内存。

问题如果我需要分配,比如450 MB的连续内存,进程的虚拟地址空间需要有一个足够大的连续空间,而且物理内存不必在系统上被分割。 我问这个是因为我可以这样做,以便我的应用程序保留足够大的连续空间,但不知道系统上的其他应用程序是否会以这种方式影响我。 OS页面表是否需要将应用程序看到的连续虚拟地址转换为连续的物理地址?

如何检查内存区域是否映射到文件

multithreading进程的内存布局

有没有办法在运行Linux或Windows的台式机上“testing”C语言中“volatile”关键字的使用?

在Windows上的 Device PhysicalMemory上需要说明

OSX / iOS上的虚拟内存与Windows提交/保留行为

如果你的软件只使用了内存,那么你的450MB分配只需要在虚拟空间中有一个450MB的空洞。 它可以满足从内存系统的每个角落的页面[只要系统中至少有450MB可用 – 包括交换空间]。

如果操作系统能够分配每块2MB的连续块(​​每次使用2MB的“大页面”),系统性能会有所提高。 但是如果需要的话,系统将回退到单独的4KB页面

分页内存体系结构的好处之一就是可以将任何物理页面放置在任何虚拟地址上。 在一些系统中,例如调试模式下的Xen虚拟化管理器,页面被意外分配,以便更容易检测系统何时对内存页面进行连续的假设。

你不需要关心物理内存的连续性。 这是虚拟到物理地址转换可以帮助您的一件事情。 只要你可以预留一大块地址空间,并用物理内存来备份它,无论它发生什么,事情都会起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐