最小kmalloc()分配与内存页面大小之间的关系

问题描述 投票:1回答:1

this post我意识到:

kmalloc可以处理的最小分配为32或64字节之大

您获得的实际内存取决于系统的体系结构

但是这里和其他站点也提到了内存页面大小。我不知道页面大小与最小的kmalloc()分配有何关系?页面大小通常为4096字节,但最小分配为32或64字节(取决于arch)。

那么最小的kmalloc()分配和页面大小之间是什么关系?为什么最小的分配是32或64字节而不是16(例如)?

c linux memory-management linux-kernel kmalloc
1个回答
0
投票
那么最小的kmalloc()分配和页面大小之间是什么关系?

无。它们是无关的。

您可以从the source code中看到:

#ifdef CONFIG_SLAB // ... #define KMALLOC_SHIFT_LOW 5 #endif #ifdef CONFIG_SLUB // ... #define KMALLOC_SHIFT_LOW 3 #endif #ifdef CONFIG_SLOB // ... #define KMALLOC_SHIFT_LOW 3 #endif // ... #define KMALLOC_MIN_SIZE (1 << KMALLOC_SHIFT_LOW)

最终没有为不同的分配器定义KMALLOC_MIN_SIZE的宏取决于页面大小,因此页面大小与kmalloc()最小分配大小之间没有关系。
© www.soinside.com 2019 - 2024. All rights reserved.