gpt4 book ai didi

c - 使用 mmap API 时内存映射长度的意义是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:38 24 4
gpt4 key购买 nike

在 POSIX 中,你有这个漂亮的 mmap()应用程序接口(interface)。文档不清楚 length 的值是否对内存/性能有影响。请指教!

void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);

考虑一个 10 MB 的文件,我只需要映射其中的一个子集,例如 2 MB。此外,假设我们从不尝试访问 2 MB 范围之外的内存。 (这样做显然有影响。)


问:length 设置为 2 MB 还是 10 MB 有关系吗?

最佳答案

length 参数表示从offset 开始的连续空间有多少应该映射到内存中。与映射 10M 相比,仅映射长度为 10M 的文件的前 2M 应该不会有不利的性能特征,除非您稍后需要更改映射以读取其他部分。

使用长度参数的一个原因是为了避免访问您不想访问的部分,即使是意外访问也是如此。另一个原因是,如果您有一个 6G 文件并且在 32 位处理器上,那么尝试将所有 6G 映射到 2-4G 用户空间时祝您好运。

关于c - 使用 mmap API 时内存映射长度的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887977/

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