我怎样才能告诉Windows保留一个页面而不是驱逐它?

发布于 2024-12-02 08:22:35 字数 513 浏览 1 评论 0原文

我想在 Windows 中分配一块内存,并确保它不会出现 #GP 或 #PF 错误。关于#GP,作为一名程序员,我有责任确保我不超出任何界限。然而,#PF 是操作系统的责任,因为它可以选择是否驱逐页面。

我想,如果我经常使用同一页面,操作系统将足够聪明,不会驱逐它。但是,如果我想分配一大块内存,那么我需要一段时间才能到达某些页面,并且我不希望操作系统同时驱逐它。

有没有办法告诉Windows保持页面存在,这样我就不会出现页面错误?

注意:这类似于问题 我怎样才能告诉 Linux 保留一个页面而不驱逐它?< /a> 除了这个是关于窗户

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黯淡〆 2024-12-09 08:22:35

看一下 VirtualLock 函数:

将进程虚拟地址空间的指定区域锁定到物理内存中,确保后续访问该区域不会引发页面错误。

此页面中有一个示例:创建保护页面

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文