kmalloc() 和 vmalloc() 是 Linux 内核中用于分配内存的两个函数。

kmalloc() 用于分配较小的内存块,一般不超过 128 KB。它是在内核的堆中分配内存,所以它的分配和释放都比较快,但是它分配的内存是物理上连续的,因此可能会受到内存碎片的影响。

vmalloc() 则用于分配较大的内存块,它可以分配大于 128 KB 的内存,甚至可以分配几十 GB 的内存。它是在内核的虚拟地址空间中分配内存,因此它分配的内存可以是非连续的,不受内存碎片的影响。但是,由于它是在虚拟地址空间中分配内存,因此它的分配和释放都比较慢,而且它分配的内存需要通过页表映射到物理地址空间中,因此会占用一定的内存页表空间。

因此,kmalloc() 和 vmalloc() 在内存分配方面各有优缺点,应根据实际情况选择使用哪个函数。

kmalloc和 vmalloc有何不同

原文地址: https://www.cveoy.top/t/topic/ewWH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录