understanding_qemu
  • Introduction
  • 设备模型
    • 设备类型注册
    • 设备类型初始化
    • 设备实例化
    • DeviceClass实例化细节
    • 面向对象的设备模型
    • 接口
    • 类型、对象和接口之间的转换
    • PCDIMM
      • PCDIMM类型
      • PCDIMM实例
      • 插入系统
      • 创建ACPI表
      • NVDIMM
  • 地址空间
    • 从初始化开始
    • MemoryRegion
    • AddressSpace Part1
    • FlatView
    • RAMBlock
    • AddressSpace Part2
    • 眼见为实
    • 添加MemoryRegion
  • APIC
    • 纯Qemu模拟
    • Qemu/kernel混合模拟
    • APICV
  • Live Migration
    • 从用法说起
    • 整体架构
    • VMStateDescription
    • 内存热迁移
    • postcopy
  • FW_CFG
    • 规范解读
    • Linux Guest
    • SeaBios
  • Machine
    • MachineType
    • PCMachine
  • CPU
    • TYPE_CPU
    • X86_CPU
  • MemoryBackend
    • MemoryBackend类层次结构
    • MemoryBackend初始化流程
Powered by GitBook
On this page
  • 从初始化开始
  • MemoryRegion
  • AddressSpace Part1
  • FlatView
  • RAMBlock
  • AddressSpace Part2
  • 眼见为实
  • 添加MemoryRegion

Was this helpful?

地址空间

PreviousNVDIMMNext从初始化开始

Last updated 6 years ago

Was this helpful?

地址空间(address space)是qemu内存虚拟化的重要组成部分。不过这个模拟起来还真实有点复杂,也涉及到多个在qemu中关键的数据结构。

让我们一点点探索把。

从初始化开始

地址空间比较抽象,那我们就从初始化的地方开始吧。

MemoryRegion

初始化时首先遇到的一个数据结构是MemoryRegion,那就以这个为切入点看看地址空间的模拟方式。

AddressSpace Part1

初始化时第二个遇到的数据结构就是AddressSpace了。可以说这是整个qemu地址空间模拟的中枢。

也正是因为这个是中枢,所以一次估计讲不完,咱就先讲一节。

FlatView

随着细节的展开,又遇到了一个和AddressSpace相关的数据结构 -- FlatView。

RAMBlock

前几个数据结构都是用来描述地址空间的,现在就来看看虚拟的地址空间和真实的内存之间的对应关系 -- RAMBlock。

AddressSpace Part2

讲完了FlatView和RAMBlock,这下可以回来补充AddressSpace的内容了。可以看看有了这两者后地址空间的样子。

眼见为实

是时候亲眼看一看地址空间中这些数据结构的样子了。

添加MemoryRegion

现在我们对重要数据结构已经有了基本的概念,是时候动态得看看添加一个MemoryRegion时都发生了些什么了。

从初始化开始
MemoryRegion
AddressSpace Part1
FlatView
RAMBlock
AddressSpace Part2
眼见为实
添加MemoryRegion