读书频道 > 系统 > 其他综合 > 虚拟化技术原理与实现
5.3.3 vm ioctl系统调用
2012-10-19 11:45:32     我来说两句 
收藏    我要投稿   

本文所属图书 > 虚拟化技术原理与实现

本书对云计算中关键技术之一的虚拟化技术进行了深入的分析,从x86 计算机体系结构以及操作系统的工作原理出发,介绍了虚拟化技术原理以及业界主流虚拟化软件产品,并以Xen、KVM 开源软件为例分析了虚拟化软件的...  立即去当当网订购

vm ioctl系统调用实现了对虚拟机的控制。vm ioctl控制指令的参数大多需要从KVM_CREATE_VM中返回的fd文件描述符来进行操作,涉及的操作主要针对某一个虚拟机进行控制,如配置内存、配置VCPU等。其主要指令如表5-3所示。

表5-3  vm ioctl指令字


指令字 功能说明
KVM_CREATE_VCPU 为已经创建好的VM添加VCPU
KVM_GET_DIRTY_LOG 返回经过上次操作之后,改变的内存页的位图
KVM_CREATE_IRQCHIP 创建一个虚拟的APIC,并且随后创建的VCPU都将连接到该APIC
KVM_IRQ_LINE 对某虚拟的APIC引发中断信号
KVM_GET_IRQCHIP 读取APIC的中断标志信息
KVM_SET_IRQCHIP 写入APIC的中断标志信息
KVM_RUN 根据kvm_run结构体的信息,启动VM虚拟机
 

KVM_RUN和KVM_CREATE_VCPU是vm ioctl系统调用的两个重要指令字。在通过KVM_CREATE_VCPU为VM虚拟机创建VCPU,并且获得VCPU对应的fd文件描述符之后,可以进行KVM_RUN启动虚拟机的操作。

KVM_RUN指令字虽然没有任何参数,但是在调用KVM_RUN启动了虚拟机之后,可以通过mmap()系统调用映射VCPU的fd所在的内存空间来获得kvm_run结构体信息。该结构体位于内存偏移量0,结束位置在KVM_GET_ VCPU_MMAP_SIZE指令所返回的大小中。

kvm_run结构体的定义在include/linux/kvm.h中,通过读取该结构体可以了解KVM内部的运行状态,可以类比为计算机芯片中的寄存器组。其中主要的字段及说明如表5-4所示。

表5-4  kvm_run结构体的重要字段


字段名 功能说明
request_interrupt_window 往VCPU中发出一个中断插入请求,让VCPU做好相关的准备工作
ready_for_interrupt_injection 响应request_interrupt_windows中的中断请求,当此位有效时,说明可以进行中断
if_flag 中断标识,如果使用了APIC,则不起作用
hardware_exit_reason 当VCPU因为各种不明原因退出时,该字段保存了失败的描述信息(硬件失效)
io 该字段为一个结构体。当KVM产生硬件出错的原因是因为I/O输出时(KVM_EXIT_IO),该结构体将保存导致出错的I/O请求的原因
mmio 该字段为一个结构体。当KVM产生出错的原因是因为内存I/O映射导致的(KVM_ EXIT_MMIO),该结构体中将保存导致出错的内存I/O映射请求的数据
 
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:5.3.2 system ioctls调用
下一篇:5.3.4 vcpu ioctl系统调用
相关文章
图文推荐
2.7.12 使用仿真器查
2.7.11 栈和寄存器组
2.7.8 出栈
2.7.7 压栈
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站