【QEMU开发】内存

1、MemoryRegion 类型

QEMU 定义了多种类型的内存区域 memory.rst:30-31 :

  • RAM 区域:简单的主机内存范围,可供客户机使用,memory_region_init_ram() 初始化
  • MMIO 区域:通过主机回调实现的客户机内存范围 ,memory_region_init_io() 初始化,其中MemoryRegionOps包含了这些回调函数
  • ROM 区域:读取时像 RAM,但禁止写入,memory_region_init_rom()初始化
  • 容器区域:包含其他内存区域的容器,memory_region_init()来初始化
  • Alias 区域:用来把同一块内存添加到不同父节点。比如一块外设的内存会被不同的cpu访问,那就需要给这块内存创建alias,然后添加到这些cpu所在的container中。使用memory_region_init_alias()来初始化

2、QEMU 中有两个主要的全局地址空间:

  • address_space_memory:用于内存访问 
  • address_space_io:用于 I/O 端口访问

3、AS与MR关系

AddressSpace 和 MemoryRegion 是 QEMU 内存管理系统中的两个核心概念,它们之间存在层次化的包含关系。

AddressSpace 表示一个完整的地址空间视图,它包含一个根 MemoryRegion

每个 AddressSpace 通过其 root 字段指向一个 MemoryRegion,这个根区域定义了整个地址空间的布局。

MemoryRegion 可以包含子区域,形成树状结构  。

每个 MemoryRegion 都有一个 container 字段指向其父区域  ,以及一个 subregions 队列包含所有子区域

4、FlatView概念

FlatView 是另一个重要概念,它是 AddressSpace 的扁平化视图,用于优化内存访问性能  。

MemoryRegionSection 则描述了 MemoryRegion 的一个片段,包含了在地址空间中的具体位置信

5、AS,MR,FV

AS: AddressSpace,表示一个完整的地址空间视图,包含MemoryRegion空间

MR: MemoryRegion,构成整个内存空间的基本内存区域单元

FV:FlatView,是 AddressSpace 的扁平化视图,用于优化内存访问性能**#

QEMU开发 文章被收录于专栏

qemu开发总结

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务