shmfs
,然后将您的数据存储在该文件系统的文件中,并使用普通的seek/read/write基元进行访问,或者使用mmap
逐个将它们映射到内存中(这与执行自己的分页基本相当)。但无论您做什么,都需要比使用前3GB更多的工作。PAE是硬件地址总线的扩展,需要进行一些页面表修改以处理它。它并不改变指针仍然是32位的事实,这限制了单个进程的地址空间为4G。老实说,在现代世界中,编写需要超过2G(Windows)或3G(Linux)地址空间的应用程序的正确方法是简单地针对64位平台。
指针不能指向大于4G的地址空间,因此需要使用许多技巧。
通过使用mmap将地址空间块在不同的物理页面之间切换应该是可能的;您可以使用mmap将大文件的位映射到内存中,任何时候都可以通过调用另一个mmap来更改文件中的偏移量(以OS页大小的倍数)来更改映射。
但是这是一种非常恶劣的技术,应该避免使用。您打算使用内存做什么?肯定有更简单的方法吧?