美文网首页
Qemu内存虚拟化

Qemu内存虚拟化

作者: mqddb | 来源:发表于2017-06-29 19:39 被阅读0次

内存虚拟化源码分析1

内存虚拟化源码分析2

内存虚拟化原理很难懂,我要是搞清楚了就牛逼大发了!

首先要找到一个切入点,我觉得KVM_SET_USER_MEMORY_REGION这个ioctl就很好,这个是用来修改Guest的内存空间的,以这个为基点,往上看Qemu的代码,可以看到整个内存的刷新机制,往下可以看看kernel里面的内存虚拟化机制。

首先往上看Qemu的代码:

可以看到ioctl的触发函数:kvm_set_user_memory_region最终由结构体MemoryListener的回调函数触发,这个结构体的实例化是在函数:kvm_memory_listener_register中。

可以看到Qemu就虚拟了两个地址空间:address_space_memory,address_space_io。

下一步,Qemu是如何通知这个MemoryListener调用回调函数的呢?

memory.txt说了什么?

经过多天的代码阅读,现在对Qemu的Memory机制有了一个大体的框架认识,首先是几个关键的结构体:

AddressSpace,故名思议就是Qemu用来虚拟地址空间用的比较主要的就是上面提到的两个地址空间:address_space_memory,address_space_io。MemoryRegion都会映射在这个地址空间上,地址空间上的地址就是GPA(Guest Physic Address)。

MemoryRegion,是对地址空间上不同功能的内存块的抽象,有好几种不同类型的MemoryRegion,具体可以看memory.txt。

ioctl往下做了什么?

相关文章

  • Qemu内存虚拟化

    内存虚拟化源码分析1 内存虚拟化源码分析2 内存虚拟化原理很难懂,我要是搞清楚了就牛逼大发了! 首先要找到一个切入...

  • qemu内存管理以及vhost-user的协商机制下的前后端内存

    概括来说,qemu和KVM在内存管理上的关系就是:在虚拟机启动时,qemu在qemu进程地址空间申请内存,即内存的...

  • 网络虚拟化技术

    网络虚拟化技术 数据包从虚拟机到物理机过程: 虚拟机 -> QEMU虚拟网卡 -> 虚拟化层 -> 内核网桥 ->...

  • 虚拟化技术总结

    虚拟化是云计算的基石实现虚拟化的技术主要是:1 软件模拟。如qemu,bochs等2 虚拟化层翻译。软件捕获翻译改...

  • LXC

    容器是轻量级的虚拟化技术。它们更像增强的 chroot,而不是完整的虚拟化,比如 Qemu 或 VMware,因为...

  • QEMU 4.2发布 针对Linux虚拟化进行了许多改进

    QEMU 4.2 已正式发布,它是开源 Linux 虚拟化堆栈的关键部分。 QEMU 是一个纯软件实现的通用模拟器...

  • libvirt

    libvirt 支持的虚拟化KVM XEN Qemu LXC OpenVZ 安装 virt-install br...

  • KVM网络虚拟化(一)

    KVM与QEMU 网络虚拟化属于IO虚拟化,KVM模块本身不提供任何设备模拟,模块在初始化的时候会创建特殊设备文件...

  • CentOS 7上安装qemu kvm进行虚拟化

    查看是否支持虚拟化 egrep -o '(vmx|svm)' /proc/cpuinfo 安装qemu和virt系...

  • kvm虚拟化

    KVM 虚拟化技术 CPU虚拟化技术 内存虚拟化技术 IO虚拟化技术 网络IO虚拟化技术 磁盘IO虚拟化技术 虚拟...

网友评论

      本文标题:Qemu内存虚拟化

      本文链接:https://www.haomeiwen.com/subject/jqrvcxtx.html