1. 问题
What is the difference between vmalloc and kmalloc?
2. 大致观点
- 涉及到DMA的话,需要物理上连续的内存;
- 内核之所以偏好分配物理上连续内存,并不是必须的,
而主要是考虑性能:- kmalloc()比vmalloc()效率高,想也知道,vmalloc()需要逐页把离散的物理空间重新映射到连续的虚拟空间上;
- kmalloc()对TLB更友好;
- 内核的页不会被swapped,而是常驻内存中,无论kmalloc()分配还是vmalloc()分配;
本文探讨了Linux内核中vmalloc与kmalloc两种内存分配函数的区别。主要从物理内存连续性、性能、TLB友好性和内存驻留特性等方面进行了对比。kmalloc因分配物理上连续的内存而在性能上优于vmalloc,且对TLB更友好。
1080

被折叠的 条评论
为什么被折叠?



