没有合适的资源?快使用搜索试试~ 我知道了~
KVM 源代码分析-虚拟机创建和运行流程代码分析.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 147 浏览量
2022-07-11
13:09:43
上传
评论 2
收藏 341KB PDF 举报
温馨提示
试读
8页
KVM 源代码分析-虚拟机创建和运行流程代码分析.pdf 学习资料 复习资料 教学资源
资源推荐
资源详情
资源评论
KVM 源代码分析-虚拟机创建和运行流程代码分析
源自:
(
wenku.baidu /view/c956c82ef12d2af90242e6cc
)
摘 要:该文首先对 KVM 的创建和运行虚拟机流程进行了概述,并给出了 KVM 虚拟机创
建流程图。最后对虚拟机创建和运行主要函数进行了分析。
关键词:KVM;KVM 创建;KVM 运行虚拟机流程;运行函数分析
1 KVM 创建和运行虚拟机流程
KVM虚拟机创建和运行虚拟机分为用户态和核心态两个部分,用户态主要提供应用程序接口
为虚拟机创建虚拟机上下文环境,在libkvm中提供访问内核字符设备/dev/kvm的接口;内核态为
添加到内核中的字符设备/dev/kvm,模块加载进内核后即可进行接口用户空间调用创建虚拟机。
在创建虚拟机过程中,kvm字符设备主要为客户机创建kvm数据机构,创建该虚拟机的虚拟机文
件描述符及其相应的数据结构以及创建虚拟处理器及其相应的数据结构。Kvm创建虚拟机的流程
如图4所示。
首先申明一个kvm_context_t变量用以描述用户态虚拟机上下文信息,然后调用kvm_init()
函数初始化虚拟机上下文信息;函数kvm_create()创建虚拟机实例,该函数通过ioctl系统调用创建
虚拟机相关的内核数据结构并且返回虚拟机文件描述符给用户态kvm_context_t数据结构;创建完
内 核 虚 拟 机 数 据 结 构 后 , 再 创 建 内 核 p i t以 及 m m i o等 基 本 外 设 模 拟 设 备 , 然 后 调 用
kvm_create_vcpu()函数来创建虚拟处理器,kvm_create_vcpu()函数通过ioctl()系统调用向由vm_fd
文件描述符指向的虚拟文件调用创建虚拟处理器,并将虚拟处理器的文件描述符返回给用户态程
序,用以以后的调度使用;创建完虚拟处理器后,由用户态的QEMU程序申请客户机用户空间,
用以加载和运行客户机代码;为了使得客户虚拟机正确执行,必须要在内核中为客户机建立正确
的 内 存 映 射 关 系 , 即 影 子 页 表 信 息 。 因 此 , 申 请 客 户 机 内 存 地 址 空 间 后 , 调 用 函 数
kvm_create_phys_mem()创建客户机内存映射关系,该函数主要通过ioctl系统调用向vm_fd指向的
虚拟文件调用设置内核数据结构中客户机内存域相关信息,主要建立影子页表信息;当创建好虚
拟处理器和影子页表后,即可读取客户机到指定分配的空间中,然后调度虚拟处理器运行。调度
虚拟机的函数为kvm_run(),该函数通过ioctl系统调用调用由虚拟处理器文件描述符指向的虚拟文
件调度处理函数kvm_run()调度虚拟处理器的执行,该系统调用将虚拟处理器vcpu信息加载到物理
处理器中,通过vm_entry执行进入客户机执行。在客户机正常运行期间kvm_run()函数不返回,只
有发生以下两种情况时,函数返回:1,发生了I/O事件,如客户机发出读写I/O的指令;2,产生
了客户机和内核KVM都无法处理的异常。I/O事件处理完毕后,通过重新调用KVM_RUN()函数继
续调度客户机的执行。
KVM 源代码分析-虚拟机创建和运行流程代码分析
资源评论
努力搬砖的小王
- 粉丝: 16
- 资源: 7706
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功