Linux kernel 即使在释放内存后,内存也不可用

Linux kernel 即使在释放内存后,内存也不可用,linux-kernel,Linux Kernel,我正在为我的应用程序编写一个简单的内存管理器,它将释放模块使用的任何多余内存,以便再次使用。我的模块使用alloc_page和kmem_cache_alloc分配内存,因此内存管理器分别使用put_page和kmem_cache_free来释放未使用的内存 我面临的问题是,即使在使用put_page&kmem_cache_free释放内存后,我的模块也无法获得可用内存。我已经编写了一个测试代码,它在循环中分配大量内存,当内存不足时,在内存管理器上休眠以释放内存。内存管理器成功执行空闲代码并唤醒休

我正在为我的应用程序编写一个简单的内存管理器,它将释放模块使用的任何多余内存,以便再次使用。我的模块使用alloc_page和kmem_cache_alloc分配内存,因此内存管理器分别使用put_page和kmem_cache_free来释放未使用的内存


我面临的问题是,即使在使用put_page&kmem_cache_free释放内存后,我的模块也无法获得可用内存。我已经编写了一个测试代码,它在循环中分配大量内存,当内存不足时,在内存管理器上休眠以释放内存。内存管理器成功执行空闲代码并唤醒休眠进程,因为内存现在应该可用。有趣的是,alloc_page/kmem_cache_alloc调用仍然无法分配内存。现在,我不知道为什么会发生这种情况,所以寻求帮助。

我发现了问题所在,这是我使用的API造成的。如果我使用 __用free_page代替put_page来释放内存页,一切
非常好。

如果您已经回答了自己的问题,您应该接受您的答案。剩下的问题最好再问一个。