在Guest上使用kmalloc的连续物理内存

时间:2018-07-24 20:10:03

标签: memory-management linux-kernel virtualization kvm kmalloc

我正在访客操作系统中实现设备驱动程序。为此,我需要分配一个连续的物理内存所需的缓冲区空间。在来宾操作系统中使用kmalloc分配缓冲区是否可以保证连续的物理地址?如果没有,我该如何实现?

1 个答案:

答案 0 :(得分:1)

kmalloc()将保证连续的物理内存,并且应该用于小对象,如功能文档中所述:

* kmalloc is the normal method of allocating memory
* for objects smaller than page size in the kernel.

对于更大的物理连续分配,应该使用alloc_pages()

但是,由于您处于来宾操作系统中,因此要分配的物理内存是来宾看到的,而不是系统管理程序看到的(“实际”)。分配的内存实际上在物理上是连续的,取决于您的管理程序如何将内存公开给客户操作系统。