参考:What Is the Difference between QEMU and KVM?

注意:上面参考文章有个错误,他把KVM算成类型一虚拟化,应该是类型2虚拟化。

关于类型一虚拟化和类型二虚拟化参考:Type 1 and Type 2 Virtualization

前言

QEMU和KVM之间的差异三言两语说不清楚。你无法说出他们是不同的,或者他们就是一个东西。或者他们都是Hypervisor

QEMU

QEMU本身并不是KVM的一部分,其本身就是以一个著名的开源虚拟机软件。QEMU是在用户空间运行的类型2 Hypervisor,用于执行硬件虚拟化,例如磁盘,网络,VGA,PCI,USB,串行/并行端口等。 它的灵活性在于它可以通过动态二进制转换(DBT)模拟CPU,允许为给定处理器编写的代码在另一个处理器上执行。 尽管QEMU可以独立运行 并 模拟虚拟机运行所需要的所有资源,但由于所有仿真都是在软件中执行的,因此速度非常慢。

与KVM关系

KVM是Linux内核的一个模块。 它是类型1型Hypervisor,仅支持硬件虚拟化(Intel VT或AMD-V)。上面说到QEMU运行速度慢,主要原因是Hypervissor模拟CPU的话(vCPU),针对vCPU的指令 与 针对物理CPU的指令 之间存在转换关系,这个转换关系必须有Hypervisor来做。可以想象这会对性能产生巨大影响。KVM仅支持硬件虚拟化,Intel VT 或 AMD-V 使vCPU的指令直接运行在物理CPU。这部分功能如果给QEMU的话,就会对QEMU的虚拟机提供硬件加速功能。事实上,KVM与QEMU的确这么做了,早期QEMU下面新建个了分支,QEMU-KVM,主要就是加入KVM给QEMU硬件加速特性。后来这两个分支合并了,现在你直接下载QEMU的代码就是支持KVM的,因此现在QEMU是加上是含有以前QEMU-KVM特性的。

QEMU简介的更多相关文章

  1. KVM和QEMU简介

    KVM/QEMU简介 KVM虚拟机是基于linux内核虚拟化,自linux2.6.20之后就集成在linux的各个主要发行版本中.它使用linux自身的调度器进行管理,所以相对于xen,其核心源码很少 ...

  2. Qemu事件处理机制简介

    Qmeu 采用了基于事件驱动的架构,所有的事件都在一个事件循环(event loop)中被处理,系统中默认的事件循环是在main-loop.c 中的主循环(main loop).我们也可以使用 –ob ...

  3. qemu 参数简介

    参数 示例 说明 -hda -hda /data/windows.img 指定windows.img作为硬盘镜像 -cdrom -cdrom /data/windows.iso 指定windows.i ...

  4. kvm/qemu/libvirt学习笔记 (1) qemu/kvm/libvirt介绍及虚拟化环境的安装

    kvm简介 kvm最初由Quramnet公司开发,2008年被RedHat公司收购.kvm全称基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux的一个内核模块 ...

  5. 云计算之KVM简介(一)

    云计算之KVM简介(一) 因为很多人会将云计算和虚拟化弄混,我下面为大家介绍一下 云计算指的是资源使用和交互的一种模式 虚拟化指的是技术,可以将物理计算机虚拟成多个逻辑计算机(VMware)  他俩是 ...

  6. 剖析 Linux hypervisor--KVM 和 Lguest 简介

    慢慢弄清楚..   M. Tim Jones, 顾问工程师, Emulex Corp. M. Tim Jones 是一名嵌入式软件工程师,他是 Artificial Intelligence: A S ...

  7. KVM架构及模块简介

    1.简介 2.架构 3.KVM模块及QEMU 一.简介 KVM(Kernel Virtual Machine)基于内核的虚拟机.阿维·齐维迪(Avi Kivity)在一家名为Qumranet的初创企业 ...

  8. 001.Ceph简介概述

    一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...

  9. KVM虚拟化技术(一)虚拟化简介

    一 .虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个 ...

随机推荐

  1. [AWS] Cloud Server

    一元课程:AWS云计算——AWS操作指南系列课程 AWS 入门指南 1.1 Create one account 1.2 Create IAM Users Create 'group' firstly ...

  2. 【翻译】Flink Table Api & SQL — SQL

    本文翻译自官网:SQL https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html Flink Tab ...

  3. (obj) error: LNK2019: 无法解析的外部符号解决方法

    利用VS2010 C++ 调用 labview生成的动态库编程时无法生成exe 报错信息: Cjj_32.obj : error LNK2019: 无法解析的外部符号 _GetPXIResource@ ...

  4. WinSock2.0通信的一个例子(基于VC++6.0开发测试)

    实验目的: 掌握Winsock2.0套接字编程技术的基本方法. 实验要求: 运用TCP/IP Winsock2.0套接字编程技术,使用VC编写一个面向连接通信的服务端程序与客户端程序,服务器先与端口3 ...

  5. 使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)

    Fiddler工具是一个http协议调试代理工具,它可以帮助程序员测试或调试程序,辅助web开发. Fiddler工具可以发送向服务端发送特定的HTTP请求以及接受服务器回应的请求和数据,是web调试 ...

  6. elasticsearch的数据写入流程及优化

    Elasticsearch 写入流程及优化 一. 集群分片设置:ES一旦创建好索引后,就无法调整分片的设置,而在ES中,一个分片实际上对应一个lucene 索引,而lucene索引的读写会占用很多的系 ...

  7. HSRP 实验

    一.环境准备 1. 软件:GNS3 2. 路由:c7200 二.实验操作 实验要求: 1.理解HSRP的工作原理. 2.掌握HSRP配置方法. 3.理解HSRP的抢占与跟踪作用. 实验拓扑: 实验过程 ...

  8. QT_QML_常见问题

    1. qml文件中,如果要添加信号连接,如果与控件x有丁点关联,则将Connections{}最好放到该控件的{}内部,不这样做曾经遇到接受不到信号的奇葩问题. 2. 使用TabView时,在每个Ta ...

  9. C++学习笔记 之 循环

    循环 循环语句允许我们多次执行一个语句或者语句组.(插入流程图) 循环类型 C++为我们提供的循环类型如下: 循环类型 描述 while循环 当给定条件为真时,重复语句或语句组.它会在执行循环主体之前 ...

  10. docker-compose命令使用说明

    Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file conf ...