定义
void *kmalloc(size_t size, int flags);size要分配内存的大小. 以字节为单位.flags要分配内存的类型。在设备驱动程序或者内核模块中动态开辟内存,不是用malloc,而是kmalloc ,vmalloc
释放内存用的是kfree,vfree
区别
kmalloc函数返回的是虚拟地址(线性地址). kmalloc特殊之处在于它分配的内存是物理上连续的,这对于要进行DMA的设备十分重要. 而用vmalloc分配的内存只是线性地址连续,物理地址不一定连续,不能直接用于DMA
补充
get_free_pages直接申请页
free_pages 释放
详细介绍参考:
https://baike.baidu.com/item/kmalloc/2298613?fr=aladdin