两者区别
1、 vmalloc()分配的内存虚拟地址是连续的,而物理地址无须连续。而kmalloc()确保页在物理地址上是连续的,自然虚拟地址也是连续的。硬件设备用的的任何内存区都必须是物理上连续的块,而不仅仅是虚拟地址连续上的块。
2、 vmalloc()相比较于kmalloc()效率不高,因为获得的页必须转换为虚拟地址空间上连续的页,必须专门建立页表项。
3、 vmalloc()仅在不得已时才使用——典型的就是为了申请大块内存。该函数可能睡眠,因此不能从中断上下文中调用,也不能从其他不允许阻塞的情况下进行调用。
关于vmalloc和kmalloc的区别
最新推荐文章于 2025-04-27 11:43:09 发布