linux中常见内存分配函数(kmalloc,vmalloc等)

 

分配原理

可以分配的最大内存

其他

__get_free_pages

直接对页框进行操作

4MB

适用于分配较大量的连续物理内存

kmem_cache_alloc

基于slab机制实现

128KB

适合需要频繁申请释放相同大小内存块时使用

kmalloc

基于kmem_cache_alloc实现

128KB

最常见的分配方式,需要小于页框大小的内存时可以使用

vmalloc

建立非连续物理内存到虚拟地址的映射

 

物理不连续,适合需要大内存,但是对地址连续性没有要求的场合

dma_alloc_coherent

基于__alloc_pages实现

4MB

适用于DMA操作

ioremap

实现已知物理地址到虚拟地址的映射

 

适用于物理地址已知的场合,如设备驱动

alloc_bootmem

在启动kernel时,预留一段内存,内核看不见

 

小于物理内存大小,内存管理要求较高

 

转载自:https://blog.csdn.net/wzhwho/article/details/4996510

上一篇:MariaDB主从复制搭建


下一篇:开发成长之路(9)-- C++从入门到开发(C++知名库:STL入门·空间配置器)