How can I tell Windows to keep a page and not evict it?

孤街浪徒 提交于 2019-12-08 09:21:36

问题


I want to allocate a chunk of memory in Windows and be sure that it will get no #GP or #PF faults. Regarding #GP, it's my responsibility as a programmer to ensure that I do not exceed any bounds. However, #PF are the the responsibility of the OS, since it can choose whether or not to evict a page.

I imagine that if I use the same page frequently, the OS will be smart enough not to evict it. However, if I want to allocate a large block of memory, then it'll take me a while to reach some of the pages, and I don't want the OS to evict it in the meanwhile.

Is there any way to tell Windows to keep a page present so that I never get a page fault?

ote: This is similar to to the question How can I tell Linux to keep a page and not evict it? except that this one is about Windows


回答1:


Have a look at the VirtualLock function:

Locks the specified region of the process's virtual address space into physical memory, ensuring that subsequent access to the region will not incur a page fault.

There's an example in this page: Creating Guard Pages.



来源:https://stackoverflow.com/questions/7242148/how-can-i-tell-windows-to-keep-a-page-and-not-evict-it

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!