2011-08-30 20 views
0

我想在Windows中分配一大塊內存,並確保它不會得到#GP或#PF錯誤。關於#GP,作爲程序員我有責任確保我沒有超出任何界限。但是,#PF是操作系統的責任,因爲它可以選擇是否驅逐一個頁面。如何告訴Windows保留一個頁面而不是驅逐它?

我想如果我經常使用相同的頁面,操作系統將足夠聰明,不會驅逐它。但是,如果我想分配一大塊內存,那麼需要一段時間才能訪問某些頁面,而我不希望操作系統在此期間將其驅逐出去。

有什麼辦法可以告訴Windows保持一個頁面,讓我永遠不會出現頁面錯誤?

OTE:這是類似的問題How can I tell Linux to keep a page and not evict it?只不過這一次是有關Windows

+0

這是不恰當的,只有設備驅動程序應該擔心這一點。您應該允許操作系統確定何時需要RAM來執行另一個進程或文件系統緩存。這些不是你自己可能做出的正確決定。您可以使用VirtualLock,但鎖定頁面的配額很小。 –

+0

@Hans:這不適用於生產代碼。這是我爲我的碩士建立的一個探查器。它不會隨時隨地寄給任何人! –

回答

2

看一看的VirtualLock功能:

鎖定進程的虛擬地址空間的指定區域成物理內存,確保隨後訪問該區域不會導致頁面錯誤。

這裏有一個例子:Creating Guard Pages

相關問題