Chinaunix首页 | 论坛 | 博客

发布时间:2016-05-04 09:26:00

kernel 3.10代码分析--KVM相关--VCPU创建
1、基本原理
?如之前的文章分析,在KVM虚拟化环境中,硬件虚拟化使用VCPU(Virtual CPU)描述符来描述虚拟CPU,VCPU描述符与OS中进程描述符类似,本质是一个结构体,其中包含如下信息:
VCPU标识信息,如VCPU的ID号,VCPU属于哪个Guest等。
虚拟寄存器信息,在VT-x的环境中,这些信息包含在VMCS中。
VCPU状态信息,标识白VCPU当前所处的状态(睡眠、运行等),主要供调度器使用。
额外的寄存器/部件信息,主要指未包含在VMCS中的寄存器或CPU部件,比如:浮点寄存器和虚拟的LAPIC等。
其他信息:用户VMM进行优化或存储额外信息的字段,如:存放该VCPU私有数据的指针。
当VMM创建虚拟机时,首先要为虚拟机创建VCPU,整个虚拟机的运行实际上可以看做VMM调度不同的VCPU运行。
?虚拟机的VCPU通过ioctl VM指令KVM_CREATE_VCPU实现,本文简单分析VCPU创建过程,qemu-kvm用户态实现部分暂不包括。......【阅读全文】

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

发布时间:2016-05-04 09:25:33

kernel 3.10代码分析--KVM相关--虚拟机创建
1、基本原理
如之前分析,kvm虚拟机通过对/dev/kvm字符设备的ioctl的System指令KVM_CREATE_VM进行创建,本文简单解释及分析在3.10版本内核代码中的相关流程,用户态qemu-kvm部分暂不包括。......【阅读全文】

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

发布时间:2016-03-13 20:25:19

KVM内核模块中重要数据结构......【阅读全文】

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

发布时间:2016-03-13 20:25:12

KVM的API是通过/dev/kvm设备访问的,/dev/kvm是一个标准的字符设备,可以使用常用的open、close、ioctl接口操作,但是kvm的实现中,没有提供read和write接口,所有对KVM的所有操作都是通过ioctl接口操作的。KVM提供给上层的API功能上分,可分为3中类型:
1、 system指令,针对虚拟化系统的全局性参数设置和控制。
2、 VM指令,针对VM虚拟机进行控制,如:内存设置、创建VCPU等。
3、 VCPU指令,针对具体的VCPU进行参数设置。如:相关寄存器的读写、中断控制等。
通常对于KVM的操作都是从open /dev/kvm设备文件开始的,open后,会获得相应的文件描述符(fd),然后通过ioctl系统指令对该fd进行进一步的操作,比如通过KVM_CREATE_VM指令,可以创建一个虚拟机并返回虚拟机对应的文件描述符,然后根据该描述符来进一步控制虚拟机的行为,比如通过KVM_CREATE_VCPU指令来为该虚拟机创建VCPU。......【阅读全文】

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

发布时间:2016-03-13 20:24:54

KVM基本原理及架构四(内存虚拟化) 影子页表 EPT......【阅读全文】

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

登录 注册