我正在阅读一些 QEMU 的源代码(在 3.1.0 版本上,但对其他版本的提示也被接受)并且我试图了解/找到源代码中的哪一点 QEMU 映射 guest 的操作系统内核宿主机器内存中的内存?
最佳答案
QEMU 并不专门映射 guest 操作系统内核本身。它只是向虚拟机提供模拟 RAM(这个模拟 RAM 是通过在 qemu_anon_ram_alloc() 中执行普通的匿名 mmap 创建的——它同样可以通过调用 malloc() 来完成)。 guest 二进制文件可以通过 QEMU(各种 hw/core/loader.c 函数执行此操作)或由 guest 本身将其从模拟磁盘加载到 RAM 中。
对于 x86 客户机,通常 QEMU 仅将客户机 BIOS rom 镜像加载到客户机内存中。 guest BIOS 然后将实际的 guest 内核加载到内存中(从模拟磁盘,或通过 guest 可以用来从仿真外部访问文件的“fw_cfg”QEMU 特定设备),QEMU 不知道也不关心在哪里它恰好放了它。
关于linux - QEMU 在哪里映射客户操作系统的内核页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56609455/