kzalloc() - 一次调用的最大大小?

mk.*_*k.. 2 kernel memory-management linux-kernel

我们可以在一次调用中使用 kzalloc() 分配的最大大小是多少?

这是一个非常常见的问题。另外请让我知道我是否可以验证该值。

kai*_*wan 5

上限(可以在单个 kmalloc / kzalloc 请求中分配的字节数)是以下因素的函数:处理器——实际上是页面大小——以及伙伴系统空闲列表的数量 (MAX_ORDER)。

在 x86 和 ARM 上,标准页面大小为 4 Kb,MAX_ORDER 为 11,单个调用的 kmalloc 上限为 4 MB!

详细信息,包括解释和测试代码,在这里:http : //kaiwantech.wordpress.com/2011/08/17/kmalloc-and-vmalloc-linux-kernel-memory-allocation-api-limits/