KVM虚拟化源代码详解.pdf

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
KVM 虚拟机源代码分析 1 , KVM 结构及工作原理 1.1KVM 结构 KVM 基本结构有两部分组成。一个是 KVM Driver ,已经成为 Linux 内核的一个模块。 负责虚拟机的创建,虚拟内存的分配,虚拟 CPU 寄存器的读写以及虚拟 CPU 的运行等。另 外一个是稍微修改过的 Qemu ,用于模拟 PC 硬件的用户空间组件,提供 I/O 设备模型以及 访问外设的途径。 用户模式 客户模式 内核模式 Qemu LibKvm Linux 用户 ioctl 模式 KVM fd /dev/kvm Kvm-vm fd Kvm-vcpu fd Linux 内核 VMM(Linux 内核+ KVM Driver) 模式 图 1 KVM 基本结构 KVM 基本结构如图 1 所示。 其中 KVM 加入到标准的 Linux 内核中, 被组织成 Linux 中标准的 字符设备 (/dev/kvm) 。Qemu 通 KVM 提供的 LibKvm 应用程序接口,通过 ioctl 系统调用创建 和运行虚拟机。 KVM Driver 使得整个 Linux 成为一个虚拟机监控器。并且在原有的 Linux 两 种执行模式 ( 内核模式和用户模式 )的基础上,新增加了客户模式,客户模式拥有自己的内核 模式和用户模式。在虚拟机运行下,三种模式的分工如下: 客户模式:执行非 I/O 的客户代码。虚拟机运行在客户模式下。 内核模式:实现到客户模式的切换。处理因为 I/O 或者其它指令引起的从客户模式的退出。 KVM Driver 工作在这种模式下。 用户模式:代表客户执行 I/O 指令 Qemu 运行在这种模式下。 精选文库 在 KVM 模型中,每一个 Guest OS 都作为一个标准的 Linux 进程,可以使用 Linux 的进程管 理指令管理。 在图 1 中./dev/kvm 在内核中创建的标准字符设备, 通过 ioctl 系统调用来访问内核虚拟 机,进行虚拟机的创建和初始化; kvm_vm fd 是创建的指向特定虚拟机实例的文件描述符, 通过这个文件描述符对特定虚拟机进行访问控制; kvm_vcpu fd 指向为虚拟机创建的虚拟处 理器的文件描述符,通过该描述符使用 ioctl 系统调用设置和调度虚拟处理器的运行。 1.2KVM 工作原理 KVM 的基本工作原理:用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核 模式。 KVM Driver 为虚拟机创建虚拟内存和虚拟 CPU后执行 VMLAUCH 指令进入客户模式。 装载 Guest OS执行。 如果 Guest OS 发生外部中断或者影子页表缺页之类的事件, 暂停 Guest OS 的执行,退出客户模式进行一些必要的处理。然后重新

文档评论(0)

fkh4608 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档