gpt4 book ai didi

linux - 更改内存页面大小

转载 作者:太空狗 更新时间:2023-10-29 11:18:51 29 4
gpt4 key购买 nike

我在那里读到,虚拟内存页面的数量等于物理内存帧的数量,帧的大小和页面的大小相等,比如我的 32 位系统,页面大小是 4096。

我在想有没有办法改变页面大小或框架大小?

我正在使用 Linux 操作系统。我搜索了很多,我发现,我们可以更改页面大小,或者实际上我们可以通过切换到大页面来增加页面大小。是否有任何其他方法可以更改(增加或减少)或设置页面大小我们的选择?

(没有编写任何代码,一般性问题)

最佳答案

实际上,(几乎)不可能“改变”内存页面大小,因为 page大小已知并由 MMU 确定硬件,因此操作系统正在考虑这一点。但是,请注意 一些 Linux 系统(和硬件!)有 hugetlbpage和 Linux mmap(2)可能会接受 MAP_HUGETLB(但您的代码应该处理处理器或内核没有大页面支持的情况,例如通过再次调用 mmap 没有 MAP_HUGETLB 当第一个 mmapMAP_HUGETLB 失败时)。

据我了解,在某些 Linux 系统上,您可以使用各种大小的hugetlbpage。但是系统管理员可以限制这些(或者某些内核禁用它),因此您的代码应该始终准备好带有 MAP_HUGETLBmmap 失败。

即使使用那些“大页面”,页面大小也不是是任意的。在 POSIX 系统上使用 sysconf(_SC_PAGE_SIZE) 获取标准页面大小(通常为 4Kbytes)。另见 sysconf(3)

AFAIK,即使在具有hugetlbpage 功能的系统上,mmap 也可以在没有 MAP_HUGETLB 和页面大小的情况下被调用(由 sysconf(_SC_PAGE_SIZE) 报告)仍然是 4Kbytes。也许最近一些具有一些奇怪配置的内核到处都在使用大页面,而 IIRC 一些内核可能配置了 1Mbyte 页面(我不确定,我可能是错的)...

关于linux - 更改内存页面大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246362/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com