防止Linux内核从进程中获取已分配的内存

时间:2014-06-01 14:04:17

标签: linux memory-management kernel

我想在无限期的时间内使用malloc()分配大部分内存。我可能会长时间触摸记忆,让我说1分钟。我如何阻止内核从进程中取出内存?

我无法重新分配该内存,因为它正被内核控件之外的其他设备使用。

1 个答案:

答案 0 :(得分:0)

在Linux中,您可以在用户空间中分配内存,例如使用mallocmmap,将其传递给内核,然后在内核中获取对内存的引用get_user_pages。这将阻止页面消失,并允许从任何地址空间访问它们struct page *引用(如果kmap生效,则需要kunmapCONFIG_HIGHMEM )。但是,这些页面不是连续的物理内存,并且它们可能不在DMA的适当范围内。

设备访问的内存通常在内核中分配(例如,使用kmallocGFP_DMA。对于大于页面的分配,kmalloc也会查找连续的物理页面。获得的kmalloc - 内存可以使用remap_pfn_range映射到用户空间。