linux - QEMU 在哪里映射客户操作系统的内核页面?

标签 linux memory kernel mapping qemu

我正在阅读一些 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/

相关文章:

c++ - 不良状态登记?

linux - 使用 shell 脚本从 postgreSQL 检索数据并通过邮件发送

asp.net - 安装(和部署)Mono ASP.Net 到 Redhat

c++ - 如果我在返回后声明它,存储数组在哪里?

c++ - 打印数组元素内存地址 C 和 C++,为什么输出不同?

linux - Keepalive,路由问题, "no destination available"

android - 为什么用c源代码调试时GDB是 "jumping back"

linux - 这个 Perl 脚本是如何被调用的?

node.js - `npm start` 给出生命周期错误并以状态 9 退出

Perl:什么时候释放不需要的标量内存而不超出范围?