QEMU/KVM源码解析与应用(第一章)

第一章 QEMU与KVM概述

1.1虚拟化简介

1.1.1 虚拟化思想

虚拟化的主要思想:通过分层将底层的复杂、难用的资源虚拟抽象成简单、易用的资源,提供给上层使用。其本质是一个不断虚拟的过程,将底层复杂的接口转换成上层容易使用的接口。

虚拟化思想的内核:底层的资源或者通过空间的分割,或者通过时间的分割,将下层的资源通过一种简单易用的方式转换为另一种资源,提供给上层使用。

汇编语言C语言
使程序员能够比较简单地实现CPU的执行和内存访问进一步方便了程序员,使得程序员可以从具体CPU架构指令脱离出来,大部分情况下只需考虑业务即可
1.1.2 虚拟机简介

虚拟机从理论上提供一个执行环境,完成用户指定任务的对象都可以叫做机器。

虚拟机种类具体
最简单的额虚拟机——进程进程可以看做是一组资源的集合,有自己独立的进程地址空间以及独立的CPU和寄存器,执行程序员编写的指令,完成一定的任务。操作系统可以创建很多个进程,每一个进程都可以看做是一个独立的虚拟机。
另一种形式的虚拟机——模拟器可以使为一种硬件指令集编译的程序运行在另一种硬件指令集上。应用程序在源ISA上被编译出来,在模拟器的帮助下,运行在不同的目标ISA上,完全由软件实现。典型的模拟器有QEMU的用户态模拟。
高级语言虚拟机将源ISA和目标ISA完全分离开。任何需要运行这种虚拟ISA指令的物理ISA平台都需要实现一个虚拟机,该虚拟机能够执行虚拟机ISA指令到物理ISA指令的转化。
1.1.3 系统虚拟化的历史

典型的系统虚拟化解决方案包括VMware Workstation、QEMU、VirtualBox和HyperV。

1.2 QEMU和KVM架构介绍

1.2.1 QEMU与KVM历史

早期的QEMU都是软件模拟的,很明显其在性能上是不能满足要求的。
以色列公司Qumranet基于新的虚拟化指令集实现了KVM,并推广到Linux内核社区。KVM本身是一个内核模块,导出一系列的接口到用户空间,用户空间可以使用这些接口创建虚拟机。

1.2.2 QEMU与KVM架构

KVM本身基于硬件辅助虚拟化,仅仅实现CPU和内存的虚拟化,但一台计算机不仅仅有CPU和内存,还需要各种各样的I/O设备,不过KVM不负责这些。这个时候,QEMU就和KVM搭上了线,经过改造后的QEMU,负责外部设备的虚拟,KVM负责底层执行引擎和内存的虚拟,两者彼此互补,成为新一代云计算虚拟化方案的宠儿。相关引用.

VMX root 宿主机模式
VMX non-root 虚拟机模式
VT-x 支持硬件虚拟化的指令集

CPU虚拟化
内存虚拟化
外设虚拟化
中断虚拟化

1.3 KVM API使用实力

KVM导出了一系列接口供用户态创建、配置、启动虚拟机,典型的用户态软件是QEMU。

ASCII码对应表
在这里插入图片描述
KVM通过一组ioctl向用户空间导出接口,这些接口能够用于虚拟机的创建、虚拟机内存的设置、虚拟机VCPU的创建和运行等。可分为以下三类:

类别功能
系统全局的ioctl作用对象是KVM模块本身,比如全局的配置项,创建虚拟机的ioctl也在此例
虚拟机相关的ioctl作用对象是一台虚拟机,比如设置虚拟机的内存布局、创建虚拟机VCPU也在此例
虚拟机VCPU相关的ioctl作用对象是一个虚拟机的VCPU,比如说开始虚拟机VCPU的运行
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值