在编写LINUX驱动的过程中涉及到内存分配的问题,此时不是用应用层用到的malloc,而是内核专用的内存分配函数vmalloc和kmalloc,释放他们相应的函数分别是vfree和kfree。
kmalloc和vmalloc的区别在与分配的内存在硬件上是否连续,前者分配的是连续内存,对于进行DMA的设备是非常必要的,但是它分配的内存范围很小,为128k -16个字节;
后者用于分配线性连续的地址空间,但是物理地址不一定连续,即在虚拟空间上是连续的,显然,kmalloc的分配速度比vmalloc的速度快。