linux - QEMU 在哪里映射来宾操作系统的内核页面?
问题描述
我正在阅读一些 QEMU 的源代码(在 3.1.0 版本上,但也接受其他版本的提示)并且我试图理解/查找 QEMU 在源代码中的哪个位置映射来宾的操作系统内核内存主机的机器内存?
解决方案
QEMU 并没有专门映射来宾操作系统内核本身。它只是为虚拟机提供模拟 RAM(并且这个模拟 RAM 是通过在 qemu_anon_ram_alloc() 中执行普通匿名 mmap 来创建的——它同样可以通过调用 malloc() 来完成)。来宾二进制文件可以通过 QEMU(各种 hw/core/loader.c 函数执行此操作)或来宾本身将其从模拟磁盘加载到 RAM 中。
对于 x86 来宾,通常 QEMU 仅将来宾 BIOS ROM 映像加载到来宾内存中。来宾 BIOS 然后将实际的来宾内核加载到内存中(从模拟磁盘或通过来宾可以用来从模拟外部访问文件的“fw_cfg”QEMU 特定设备),QEMU 不知道也不关心在哪里它碰巧放了它。
推荐阅读
- php - Netsuite PHP Toolkit - 保存的搜索返回所有数据,而不是选定的列
- bash - 如何在 ssh pkill bash 命令中正确转义双引号?
- npm - 使用 Inquirer 时,“List”和“Rawlist”有什么区别
- laravel - Laravel 性能:数据透视表
- tomcat8 - 使用stock http的tomcat8 - 错误读取请求,被忽略
- sap - 如何在 HANA 脚本计算视图中检查多个值的输入参数的值
- javascript - d3.js v5 - 从 SVG 读取元素
- javascript - 在单独的对象中查找匹配值
- .net - 如何在 Azure 部署的应用程序中应用数据库代码优先迁移?
- python - 运行exe时无法加载mkl_init_thread.dll