Chinaunix首页 | 论坛 | 认证专区 | 博客
  • 博客访问: 1227353
  • 博文数量: 578
  • 博客积分: 161
  • 博客等级: 入伍新兵
  • 技术积分: 5084
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-01 07:37
个人简介

只有偏执狂才能生存

文章分类

全部博文(578)

文章存档

2016年(10)

2015年(116)

2014年(88)

2013年(335)

2012年(29)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

发布时间:2015-06-19 12:13:06

kernel 3.10代码分析--KVM相关--KVM_SET_USER_MEMORY_REGION流程
1、基本原理
如之前分析,kvm虚拟机实际运行于qemu-kvm的进程上下文中,因此,需要建立虚拟机的物理内存空间(GPA)与qemu-kvm进程的虚拟地址空间(HVA)的映射关系。
虚拟机的物理地址空间实际也是不连续的,分成不同的内存区域(slot),因为物理地址空间中通常还包括BIOS、MMIO、显存、ISA保留等部分。
qemu-kvm通过ioctl vm指令KVM_SET_USER_MEMORY_REGION来为虚拟机设置内存。主要建立guest物理地址空间中的内存区域与qemu-kvm虚拟地址空间中的内存区域的映射,从而建立其从GVA到HVA的对应关系,该对应关系主要通过kvm_mem_slot结构体保存,所以实质为设置kvm_mem_slot结构体。......【阅读全文】

阅读(918) | 评论(0) | 转发(0)

发布时间:2015-06-19 12:12:51

KVM虚拟机通过字符设备/dev/kvm的ioctl接口创建和运行,相关原理见之前的文章说明。
虚拟机的运行通过/dev/kvm设备ioctl VCPU接口的KVM_RUN指令实现,在VM和VCPU创建好并完成初始化后,就可以调度该虚拟机运行了,通常,一个VCPU对应于一个线程,虚拟机运行的本质为调度该虚拟机相关的VCPU所在线程运行。虚拟机(VCPU)的运行主要任务是要进行上下文切换,上下文主要包括相关寄存器、APIC状态、TLB等,通常上下文切换的过程如下:
1、 保存当前的上下文。
2、 使用kvm_vcpu结构体中的上下文信息,加载到物理CPU中。
3、 执行kvm_x86_ops中的run_vcpu函数,调用硬件相关的指令(如VMLAUNCH),进入虚拟机运行环境中。
虚拟机运行于qemu-kvm的进程上下文中,从硬件的角度看,虚拟机的运行过程,实质为相关指令的执行过程,虚拟机编译后的也就是相应的CPU指令序列,而虚拟机的指令跟Host机的指令执行过程并没有太多的差别,最关键的差别为“敏感指令”(通常为IO、内存等关键操作)的执......【阅读全文】

阅读(554) | 评论(0) | 转发(0)

发布时间:2015-06-17 17:58:41

引:本文多处使用以下术语,声明如下: GVA,Guest Virtual Address 客户机进程的线性地址
GPA,Guest Physical Address 客户机的物理地址
HVA,Host Virtual Address 宿主机进程的线性地址
HPA,Host Physical Address 宿主机的物理地址
......【阅读全文】

阅读(463) | 评论(0) | 转发(0)

发布时间:2015-06-01 18:42:53

KVM基本原理及架构三(CPU虚拟化)......【阅读全文】

阅读(657) | 评论(0) | 转发(0)

发布时间:2015-05-26 15:50:06

http://blog.csdn.net/fanwenyi/article/details/11865625......【阅读全文】

阅读(855) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册