qemu内存管理介绍_above the clouds*的博客-爱代码爱编程
内存管理介绍
-
相关参数配置
QEMU的命令行中有参数:
-m [size=]megs[,slots=n,maxmem=size]
用于指定客户机初始运行时的内存大小以及客户机最大内存大小,以及内存芯片槽的数量(DIMM)。
QEMU可以指定最大内存、槽等参数,是因为QEMU可以模拟DIMM的热插拔,客户机操作系统可以和在真实的系统上一样,检测新内存被插入或者拔出。也就是说,内存热插拔的粒度是DIMM槽,而不是最小的byte。
-
与内存相关的数据结构:PCDIMMDevice和 HostMemoryBackend
PCDIMMDevice和HostMemoryBackend对象都是在QEMU中用户可见的客户机内存。它们能通过QEMU命令行或者QMP监控器接口来管理。
PCDIMMDevice数据结构是使用QEMU中的面向对象编程模型QOM定义的,对应的对象和类的数据结构如下,通过在QEMU进程中创建一个新的PCDIMMDevice对象,就可以实现内存的热插拔。
注意:客户机启动时的初始化内存,可能不会被模拟成PCDIMMDevice设备,也就是说,这部分初始化内存不能进行热插拔。
typedef struct PCDIMMDevice {
/* private */
DeviceState parent_obj;
/* publi