kmalloc和vmalloc的区别
时间: 2023-08-07 12:28:55 浏览: 148
kmalloc()和vmalloc()的区别
kmalloc和vmalloc都是Linux内核中用于动态分配内存的函数,它们的主要区别在于内存分配的位置和可用大小。
kmalloc用于在内核空间中动态分配小块内存(通常小于4KB),它使用物理内存,内存位于内核的数据段或内核堆栈中。kmalloc分配的内存块不一定是连续的,但是它们是物理上连续的。
vmalloc用于在内核空间中动态分配大块内存(通常大于4KB),它使用虚拟内存,内存位于内核的代码段或内核线性映射区域中。vmalloc分配的内存块不一定是物理上连续的,但是它们是虚拟上连续的。
因此,kmalloc适用于需要小块内存的情况,vmalloc适用于需要大块内存的情况。另外,由于vmalloc使用的是虚拟内存,所以它可以分配比物理内存更大的内存块,但是分配的大块内存不能用于DMA操作。
阅读全文