gpt4 book ai didi

linux - 在 Linux 中如何处理小于 PAGE_SIZE 的内存分配?

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:17 25 4
gpt4 key购买 nike

假设一个进程要求 mmap 仅 50 字节的内存。是否会为此进程分配整个页面?剩下的就这么浪费了吗?另外,这在 kmalloc 等内核分配函数中是如何处理的?

最佳答案

来自 man 3p mmap:

The implementation performs mapping operations over whole pages. Thus, while the argument len need not meet a size or alignment constraint, the implementation shall include, in any mapping operation, any partial page specified by the range [pa,pa+len).

因此,实际上,当您mmap 50 个字节时,您实际上会映射整个页面。

关于内核情况,有一个页面分配器(get_free_pages()/alloc_pages() 或类似的东西),但它们是低级函数,主要用于内存管理代码。

正常kmalloc()功能有点类似于用户空间 malloc():它将在内部分配整个页面,然后将它们分成更小的部分以供调用者使用。

关于linux - 在 Linux 中如何处理小于 PAGE_SIZE 的内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45458732/

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