Linux kernel kmalloc和vmalloc的主要区别是什么?

Linux kernel kmalloc和vmalloc的主要区别是什么?,linux-kernel,Linux Kernel,可能重复: 请详细说明kmalloc分配物理上连续的内存,其中 页面在物理RAM中连续放置。vmalloc分配 在内核虚拟内存空间中连续的内存(即 以这种方式分配的页面在RAM中不是连续的,而是内核 将它们视为一个块) kmalloc是首选方式,只要您不需要很大的 地区。问题是,如果您想在某些硬件之间进行DMA 设备,您将需要使用kmalloc,并且您可能需要更大的 大块解决的办法是尽快分配内存 内存变得支离破碎 如果您只分配小块(一页或几页),只需使用kmalloc,不必担心细节。:) 以上

可能重复:


请详细说明

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

kmalloc是首选方式,只要您不需要很大的 地区。问题是,如果您想在某些硬件之间进行DMA 设备,您将需要使用kmalloc,并且您可能需要更大的 大块解决的办法是尽快分配内存 内存变得支离破碎

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

以上答案已从来源复制-

kmalloc返回物理上连续的内存, kmalloc内存是保留的,并且 已锁定,无法交换内存 如果您认为 在中不需要连续映射 内核空间,您可以使用vmalloc 避免碎片问题


来源:科迪·格雷,在发布这个问题之前,我不看这个iste?关于你最后的评论,你是说你在搜索这个网站之前发布了这个问题,还是你在问一个问题?如果我链接的问题中有什么问题没有回答,请编辑您的问题。否则,我预计这将很快作为一个副本关闭。@Cody Gray:我需要详细的内存分配比较……你能解释一下关于已经发布的两个答案或其他类似问题的答案还有什么不清楚的地方吗?“详细内存分配比较”并没有告诉我任何有用的东西。@Cody Gray:使用kmalloc和vmalloc如何执行内存分配?