首页 > 解决方案 > QEMU 在哪里映射来宾操作系统的内核页面?

问题描述

我正在阅读一些 QEMU 的源代码(在 3.1.0 版本上,但也接受其他版本的提示)并且我试图理解/查找 QEMU 在源代码中的哪个位置映射来宾的操作系统内核内存主机的机器内存?

标签: linuxmemorykernelmappingqemu

解决方案


QEMU 并没有专门映射来宾操作系统内核本身。它只是为虚拟机提供模拟 RAM(并且这个模拟 RAM 是通过在 qemu_anon_ram_alloc() 中执行普通匿名 mmap 来创建的——它同样可以通过调用 malloc() 来完成)。来宾二进制文件可以通过 QEMU(各种 hw/core/loader.c 函数执行此操作)或来宾本身将其从模拟磁盘加载到 RAM 中。

对于 x86 来宾,通常 QEMU 仅将来宾 BIOS ROM 映像加载到来宾内存中。来宾 BIOS 然后将实际的来宾内核加载到内存中(从模拟磁盘或通过来宾可以用来从模拟外部访问文件的“fw_cfg”QEMU 特定设备),QEMU 不知道也不关心在哪里它碰巧放了它。


推荐阅读