比较malloc()、kmalloc()和vmalloc()函数
时间: 2024-06-05 15:04:44 浏览: 184
Linux内存管理之malloc、vmalloc、kmalloc
malloc()、kmalloc()和vmalloc()都是在内核中分配内存空间的函数,但它们的实现方式和使用场景有所不同:
1. malloc()函数:是C语言标准库中的内存分配函数,用于在用户空间中动态分配内存空间。在内核中也可以使用该函数,但需要注意的是,由于内核空间和用户空间是隔离的,因此使用malloc()分配内存时,必须使用kmalloc()函数将物理地址映射到内核空间中。
2. kmalloc()函数:是在内核中分配小块连续内存空间的函数。它在内核代码中广泛使用,可以用于分配小于2MB的内存空间,通常用于分配缓冲区、数据结构等。kmalloc()会将申请到的物理地址映射到内核空间中,并返回虚拟地址。
3. vmalloc()函数:是在内核中分配大块非连续内存空间的函数。它可以用于分配大于2MB的内存空间,但由于是非连续的,因此访问速度较慢。vmalloc()会在内核虚拟地址空间中寻找可用的地址块,并返回虚拟地址。
阅读全文