我有32GB内存的机器,我想模拟尝试了一个用户进程的16GB机中运行。一种方法是让一个微小的用户进程运行并阻止16GB的物理内存,然后进入休眠状态,然后让这个以前的用户进程在可用系统中运行。如何强制用户程序阻止16GB的物理RAM?
的问题是,当我写一个程序,malloc的16GB内存,大部分的内存会从虚拟内存封锁,只有周围的物理内存64MB被阻止。有没有办法强制阻止物理内存?
我有32GB内存的机器,我想模拟尝试了一个用户进程的16GB机中运行。一种方法是让一个微小的用户进程运行并阻止16GB的物理内存,然后进入休眠状态,然后让这个以前的用户进程在可用系统中运行。如何强制用户程序阻止16GB的物理RAM?
的问题是,当我写一个程序,malloc的16GB内存,大部分的内存会从虚拟内存封锁,只有周围的物理内存64MB被阻止。有没有办法强制阻止物理内存?
可以使用MAP_ANONYMOUS
和MAP_LOCKED
使用mmap
(第一标志只是为了避免需要一个文件来创建mmap
,该fd
和offset
参数被忽略)。如果size_t
是不是64位的,你需要做多个mmap
要求达到16 GB。
什么操作系统? – RobH
你需要什么?您始终可以运行带有16GB RAM的虚拟机,或者只需从电脑中拔出16GB。你在做什么似乎非常愚蠢。 –
[m锁(http://linux.die.net/man/2/mlock)或[VirtualLock](http://msdn.microsoft.com/en-us/library/windows/desktop/aa366895(V = vs.85)的.aspx)。 – sehe