在linux内核中选择内存分配api来频繁分配大量内存

时间:2015-04-27 06:16:51

标签: c linux memory linux-kernel linux-device-driver

我必须经常在内核驱动程序中分配大量内存。哪种内存分配api更好用,为什么?

1 个答案:

答案 0 :(得分:1)

如果您需要大量分配,kmalloc()不是一个好主意,因为一旦物理地址空间变得碎片化,大kmalloc()次分配将经常失败。

所以vmalloc() / vfree()很可能是要走的路 - 除非你需要与硬件设备共享缓冲区,在这种情况下查看CMA(连续内存分配器),{{ 1}} / dma_alloc_from_contiguous()