2013-02-22 136 views
1

我可以編寫一個程序,它會啓動其他小程序留在物理內存中,並避免交換到磁盤?我很好奇Linux和Windows的答案。有沒有辦法強制一個程序留在內存中

+3

爲什麼要用今天的技術來做到這一點?需求的理由是什麼? – 2013-02-22 01:31:13

+0

當然,釘住它。當然,要做到這一點,你需要做一些低級別的系統調用。 – 2013-02-22 01:31:28

+0

對於Windows,一個指針和一些警告:http://stackoverflow.com/questions/1039017/can-i-tell-windows-not-to-swap-out-a-particular-processes-memory – 2013-02-22 01:32:22

回答

9

POSIX系統可以使用mlock/munlock將內存鎖定到RAM中。在Windows上,您可以使用VirtualLock完成相同的操作。

在幾乎所有情況下,您都希望讓操作系統處理這類事情。

編輯:爲了說明一下,如果您想要做到這一點的原因是性能或響應能力,不要。絕大多數情況下,您想要這樣做的唯一原因就是阻止密碼或加密密鑰意外地寫入磁盤,攻擊者可能會將其寫入磁盤。

1

Similar topic

引用的用戶之一:

是的,有:具有程序調用VirtualLock功能:進程已鎖定

頁保留在物理內存中,直到 過程解鎖它們或終止。這些頁面被保證不會被 鎖定時寫入頁面文件。

我相信SetProcessWorkingSetSize函數也可能有幫助。

對於這些人的想法我是一個異教徒甚至暗示這 可能是有用的:

注意,有可能在 內存鎖定頁面的正當理由。一個正當的原因可能是用戶正在運行CD刻錄機, 並且CD刻錄機不斷頁出,並因此導致緩衝區運行不足,從而創建了一個過山車。在這種情況下, 將鎖定內存緩衝區,以便它們不會被分頁,即使這種情況意味着計算機的其他部分也會減慢抓取速度,因爲這仍然是 優於爲用戶提供過山車。還可以有其他有效的 原因 - 我的觀點是,雖然通常不建議在內存中鎖定 頁,但有效情況仍然存在,並且我不認爲 這個想法會幫助此處的OP。

更新:看看Process Hacker的Reduce Working Set菜單 選項。

相關問題