- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 qemu内存模型(3) 内存布局初始化
以i386为例static void memory_map_init(void){ system_memory = g_malloc(sizeof(*system_memory)); memory_region_init(system_memory, NULL, "system", UINT64_MAX); address_space_init(&addr...
2019-09-28 15:08:28 2167
原创 qemu内存模型(2) 实现说明
在分析qemu的内存模型具体代码前我们先来说明一下qemu要实现的内存管理是什么?主要是两部分功能1 gva->gpa->hva, gva代表guest的虚拟内存地址, gpa代表guest的物理地址, 而hva代表宿主机的虚拟地址, qemu使用宿主机的虚拟地址模拟guest的物理地址, gva->gpa 的转换主要模拟mmu实现。 而gpa->hva的转换是q...
2019-09-28 14:08:55 1375
原创 qemu 内存模型(1)---文档
首先阅读qemu的memory.txt文档, 大概有如下信息可知1 首先AddressSpace是cpu可以看到的地址空间,一般就是cpu地址总线宽度的可寻址范围主要包括两个地址空间 1 ram 空间 , 通过mov等指令直接访问 2 I/O空间, 通过out in等io指令访问2 MemoryRegion 用于记录连续内存/io空间和host 虚拟地址的关系, 和这段连续空间的设备...
2019-09-28 12:56:34 2853
原创 qemu tcg mmp分析
tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr){ int mmu_idx, index, pd; void *p; MemoryRegion *mr; CPUState *cpu = ENV_GET_CPU(env); CPUIOTLBEntry *iotlbe...
2019-09-08 13:55:34 545
原创 关于qemu的一些思考
qemu已经看了四五个周末,主要分析了主事件循环和qom系统相关的一些基础知识,这些都是qemu的边缘部分,真正核心部分是内存管理和指定的翻译执行(cpu和外设的模拟),所以接下来如何学习,应该进行下思考。思考下模拟器执行的整个过程其实模拟器只需要把目标指令转换成host指令,然后执行相应的操作,基本上是模拟计算操作和io操作。对于如何转换,其实最关键的地方就是cpu执行的流和内存之间的关系。...
2019-09-08 13:30:07 463
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人