memory-management - 在 Guest 上使用 kmalloc 的连续物理内存
问题描述
我正在客户操作系统中实现设备驱动程序。为此,我需要分配一个需要连续物理内存的缓冲区空间。在来宾操作系统中使用 kmalloc 分配缓冲区是否保证连续的物理地址?如果没有,我怎样才能做到这一点?
解决方案
kmalloc()
将保证连续的物理内存,并且应该用于小对象,如函数文档中所述:
* kmalloc is the normal method of allocating memory
* for objects smaller than page size in the kernel.
对于更大的物理连续分配,您应该alloc_pages()
改用。
但是,由于您在来宾操作系统中,因此您将分配的物理内存是来宾看到的,而不是虚拟机管理程序(“真实”的)。分配的内存是否实际上在物理上是连续的,取决于您的管理程序如何将内存公开给客户操作系统。
推荐阅读
- php - 如何在使用 laravel 进行 PayPal 付款后插入数据
- react-native - react-native 支付无法调用 React 原生支付
- python - 使用 pandas 一次将多个城市名称格式化为每个城市的通用名称
- python - 如何根据图像标签在python中创建图像子文件夹
- java - 在 Generic Generator 原生策略中设置 AllocationSize
- reactjs - React ES6 类方法不会渲染到 html 表中,而是在它之外。为什么?
- c# - 在 wpf c# 中使用桌面屏幕显示 MetroDialog 消息
- node.js - 使用passport.js访问用户
- c - 如何使用 STM32 HAL I2C 从 PCT2075 获取温度
- angular - 显示动态嵌套数据