Linux内存API接口

更多Linux内核驱动开发教程,《Linux内核编程》1~12期,请点击:王利涛老师个人淘宝店:Linux内核编程

在Linux开发中,经常需要申请和释放各种内存。

  • 应用开发:一般使用malloc/free、brk、mmap等申请内存
  • 内核驱动开发:一般使用内核提供的各种接口申请内存,比如kmalloc、vmalloc、alloc_pages、kmem_cache_alloc

在实际开发中,我们申请的内存有大有小,小的几十个字节,大的100KB、4MB、8MB…
内核提供的这些接口,分配的内存,支持的内存大小是不一样的,有的是物理连续的,有的物理不连续。内存分配和释放的开销也是不一样的,内存的利用率和浪费开销也是不一样的。
在实际内核驱动开发中,如何选择合适的函数,申请满足自己需求的内存,是一个非常重要的问题。
本教程将会给大家分享Linux内核中,内存的申请和释放常用的20多个接口函数,掌握他们的使用、参数设置、出错处理等。这些参数接口包括:

用户空间内存的申请和释放:

  • malloc/free
  • calloc
  • realloc
  • mmap/munmap
  • brk/sbrk

内核空间内存的申请和释放:

  • kmalloc/kfree
  • kcalloc
  • krealloc
  • vmalloc/vfree
  • kmap
  • kmem_cache_alloc/kmem_cache-create
  • alloc_page/free_page
  • alloc_pages
  • free_pages

本教程是Linux内核编程13期:内存管理的补充,掌握了Linux内核中内存管理的基本框架和关键知识点后,就可以很清楚地知道这些接口函数背后的来龙去脉和底层实现机制了。然后再掌握这些接口的使用,就可以在实际的工作中游刃有余地去使用这些函数了。

驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程