kmalloc和vmalloc之间的主要区别是什么?

时间:2010-12-04 09:53:12

标签: linux-kernel

  

可能重复:
  What is the difference between vmalloc and kmalloc?

请详细说明

2 个答案:

答案 0 :(得分:3)

kmalloc分配物理上连续的内存,内存 页面连续放在物理RAM中。 vmalloc分配 在内核虚拟内存空间中连续的内存(意思是 以这种方式分配的页面在RAM中不是连续的,而是内核 将它们视为一个块。)

kmalloc是优先的方式,只要你不需要很大 区域。麻烦的是,如果你想从/向某些硬件做DMA 设备,你需要使用kmalloc,你可能需要更大 块。解决方案是尽快分配内存 记忆变得支离破碎。

如果您只分配小块(页面或几页),只需使用kmalloc并且不用担心细节。 :)

以上答案已从源文件中复制 - http://kerneltrap.org/node/4020

答案 1 :(得分:1)

  

kmalloc返回物理上连续的内存,   kmalloc内存是保留的   锁定,它无法交换,内存   如果你,可能会碎片化   不需要连续的映射   内核空间,你可以使用vmalloc来   避免碎片问题。