我有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