2010-12-04 119 views
2

可能重复:
What is the difference between vmalloc and kmalloc?kmalloc和vmalloc之间的主要区别是什么?

详细解释请告诉

+0

科迪格雷,在发布这个问题之前,我不看这是这样的吗? – Muthuraman 2010-12-04 10:20:04

+1

关于你最后的评论,你是说你在搜索这个网站之前发布了这个问题,还是你在问一个问题?如果有任何问题与我未解答的问题有关,请编辑您的问题。否则,我预计这将会很快被重复关闭。 – 2010-12-04 11:01:28

回答

2

的kmalloc分配连续的物理内存,内存这 页面在物理RAM连续铺设。 vmalloc分配内核虚拟内存空间中连续的内存(这意味着 分配的页面在RAM中不是连续的,但内核 将它们视为一个块)。

kmalloc是优先的方式,只要你不需要非常大的 区域。麻烦的是,如果你想从一些硬件 设备执行DMA,你需要使用kmalloc,你可能需要更大的 块。解决方案是尽快分配内存,然后 内存碎片化。

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

上面的回答已经从源复制 - http://kerneltrap.org/node/4020

1

kmalloc的回报物理连续的内存, kmalloc的保留内存和 锁定,不能被交换,存储 受到碎片,如果你 不需要连续映射 内核空间,可以使用vmalloc至 避免碎片问题。

相关问题