为什么要用VMALLOC

原创文章,转载请注明出处.转载自: Li Haifeng's Blog
本文链接地址: 为什么要用VMALLOC

用伙伴系统,slab分配器分配的内存在物理地址上都是连续的。然而,有些时候,每次请求内存时,系统都分配物理地址连续的内存块是不合适的,可以运用小块内存连接成大块可运用的内存。
这在操作系统设计中也被称为内存拼接,显然,内存拼接在须要较大内存,而内存访问相比之下不是很频繁的情况下是比较有效的
linux内核中用来管理内存拼接的接口是vmalloc/vfree.vmalloc分配得到的内存在线性地址是平滑的,但是物理地址上是非连续的
VMALLOC的虚拟地址范围:

图片来自:ULK

注1:虽然Vmalloc有如此优点,但应该尽量减少使用,因为,如果这些非连续物理内存被vmalloc使用后,即使与这些非连续物理内存相邻的伙伴区域被释放,也无法再组成大的区域了,这不利于伙伴管理系统组合成更大的连续物理页框。

注2:VMALLOC除了上述用途外,Machine specific static mappings are also located here through iotable_init().


Note:
1. 内容来自:http://ericxiao.cublog.cn/
2. 2012.8.30添加了vmalloc的使用弊端。
3. 2013.9.13添加了注2.注二引用自:Documentation/arm/memory.txt

From Li Haifeng's Blog, post 为什么要用VMALLOC

Post Footer automatically generated by wp-posturl plugin for wordpress.

分享到: