我正在客户操作系统中实现设备驱动程序。为此,我需要分配一个需要连续物理内存的缓冲区空间。在来宾操作系统中使用 kmalloc 分配缓冲区是否保证连续的物理地址?如果没有,我怎样才能做到这一点?
问问题
234 次
1 回答
1
kmalloc()
将保证连续的物理内存,并且应该用于小对象,如函数文档中所述:
* kmalloc is the normal method of allocating memory
* for objects smaller than page size in the kernel.
对于更大的物理连续分配,您应该alloc_pages()
改用。
但是,由于您在来宾操作系统中,因此您将分配的物理内存是来宾看到的,而不是虚拟机管理程序(“真实”的)。分配的内存是否实际上在物理上是连续的,取决于您的管理程序如何将内存公开给客户操作系统。
于 2018-08-14T14:20:56.620 回答