【发布时间】:2021-07-21 12:46:20
【问题描述】:
我正在了解 Linux 中的内存分配,并为我的实验对伙伴分配器 (__alloc_pages_nodemask) 进行了一些更改。我在struct page->flags 中创建了一个新标志(通过在page-flags.h 中的enum pageflags 中添加一个新标志。我在 __alloc_pages_nodemask 中永久设置了这个位(一旦设置就不会被清除,并且在所有进一步的分配和释放中仍然存在。我修改 PAGE_FLAGS_CHECK_AT_PREP以确保它)。但我无法看到预期的行为。
我猜这是因为 Linux 也在使用一些不同的路径来分配内存(可能在引导期间)。我的假设正确吗?
除了buddy allocator之外还有什么不同的内存分配路径吗?我在哪里可以找到它?
【问题讨论】:
-
您看到的行为是什么?让我想起了不久前的my own question。
标签: c linux memory memory-management linux-kernel