答案 0 :(得分:3)
kmalloc分配物理上连续的内存,内存 页面连续放在物理RAM中。 vmalloc分配 在内核虚拟内存空间中连续的内存(意思是 以这种方式分配的页面在RAM中不是连续的,而是内核 将它们视为一个块。)
kmalloc是优先的方式,只要你不需要很大 区域。麻烦的是,如果你想从/向某些硬件做DMA 设备,你需要使用kmalloc,你可能需要更大 块。解决方案是尽快分配内存 记忆变得支离破碎。
如果您只分配小块(页面或几页),只需使用kmalloc并且不用担心细节。 :)
以上答案已从源文件中复制 - http://kerneltrap.org/node/4020
答案 1 :(得分:1)
kmalloc返回物理上连续的内存, kmalloc内存是保留的 锁定,它无法交换,内存 如果你,可能会碎片化 不需要连续的映射 内核空间,你可以使用vmalloc来 避免碎片问题。