gpt4 book ai didi

linux - Linux 内核中的 Buddy 系统分配器

转载 作者:太空狗 更新时间:2023-10-29 12:40:13 25 4
gpt4 key购买 nike

我对 Linux 内核中的伙伴系统分配器有疑问。

考虑这个例子:

enter image description here

假设伙伴系统正在分配 128KB RAM。如果我使用 kmalloc 分配 32KB,我的理解是,

128KB在第1步被拆分为两个64KB,第一个64KB被拆分为两个32KB。然后前32KB分配给我。

显然还有 96KB 的连续内存可用。

现在如果我在这个阶段分配 90KB,会发生什么?kmalloc 会失败还是 buddy(甚至 slab)分配器会处理这个问题并成功分配请求的内存?

最佳答案

在第一个 32KB 之后,您不能分配任何大于 64KB 的东西。 kmalloc() 在这种情况下返回 nullptr

这对于伙伴分配器来说是正确的。 slab 分配器的工作方式不同,但这是题外话。

关于linux - Linux 内核中的 Buddy 系统分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47855402/

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