Memory management kmallc和vmalloc返回逻辑地址?

Memory management kmallc和vmalloc返回逻辑地址?,memory-management,linux-kernel,linux-device-driver,kmalloc,vmalloc,Memory Management,Linux Kernel,Linux Device Driver,Kmalloc,Vmalloc,虽然有很多线程已经在kmalloc和vmalloc上运行,但我没有得到确切的答案,所以我把它放在这里 据我所知 kmalloc:它是一个内核API,它分配物理上和实际上连续的内存 vmalloc:它是内核API,用于分配物理上不连续但实际上连续的内存 现在我的问题是:在这两种情况下(kmalloc或vmalloc),地址或者说两个API返回的指针是逻辑地址正确的吗 在linux内核中,内存管理一直是我的灰色部分,因此如果我的理解有误,请纠正我。是的,可以在代码中取消指针引用以访问分配的内存 那些

虽然有很多线程已经在kmalloc和vmalloc上运行,但我没有得到确切的答案,所以我把它放在这里

据我所知

kmalloc:它是一个内核API,它分配物理上和实际上连续的内存

vmalloc:它是内核API,用于分配物理上不连续但实际上连续的内存

现在我的问题是:在这两种情况下(kmalloc或vmalloc),地址或者说两个API返回的指针是逻辑地址正确的吗


在linux内核中,内存管理一直是我的灰色部分,因此如果我的理解有误,请纠正我。

是的,可以在代码中取消指针引用以访问分配的内存

那些返回另一种内存引用的函数不会返回
void*
。它们通常返回
无符号long
或typedef'd类型。

术语“逻辑地址”可能会引起一些混淆。将它们简单地看作虚拟地址(在问题中,在内核虚拟地址空间内)。