今天继续给大家介绍Linux运维相关知识,本文主要内容是KVM的基础知识。

一、虚拟化简介

(一)虚拟化概述

在计算机中,虚拟化技术是一种资源管理技术,可以将计算机的各硬件资源(包括CPU、内存、磁盘、网络)等予以抽象,转换后呈现出来,以供用户更好的使用。系统虚拟化可以将底层物理设备、上层操作系统和软件之间分离,可以在一台物理设备上划分出多台机器。
虚拟化技术种类有很多,包括软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、虚拟机等等。

(二)虚拟化分类

对于在计算机上运行虚拟机而言,一个非常重要的问题时硬件的操控,计算机程序的运行离不开CPU、内存、磁盘等硬件的调用。在现代计算机体系结构中,这些对硬件的直接调用离不开操作系统的操控。一般情况下,不允许应用程序直接调用硬件。操作系统上一般运行着很多程序,当多个应用程序都要调用硬件时,为了防止之间的冲突与相互干扰,因此当应用程序向调用硬件资源服务时,必须通过操作系统。在硬件结构上,现代的CPU可以工作在两种模式上,即用户模式内核模式,计算机操作系统和计算机应用软件在本质上都是代码,也可以称之为指令。为了区别计算机操作系统和计算机应用软件,CPU将操作系统的指令设置为内核模式,将应用软件的操作指令设置为用户模式。对于CPU而言,会拒绝处于用户模式的指令对硬件的直接调用,这是从底层硬件上实现的,CPU将运行状态分为了ring0到ring3,ring0就代表了内核模式,ring3就代表了用户模式。
那么如果应用程序在执行过程中,如果要调用硬件,就会产生中断,此时该应用程序会放弃对CPU的接管,转而由操作系统控制CPU,这样,CPU就处于内核模式下了,这样就可以调用硬件了。总之,应用程序是处于用户模式的,对应用系统的调用要通过操作系统。
虚拟机对宿主机而言,在本质上也是一种应用程序,运行在虚拟机上的程序,要调用系统硬件时,就相当于虚拟机这个应用程序要调用硬件,这就带来了虚拟化技术的一个重要问题,根据虚拟化技术对这个问题的解决,我们把虚拟化技术分为了三种:
1、仿真虚拟化
仿真虚拟化的思想是借助虚拟机这一平台,将虚拟机操作系统要执行的内核态指令进行“翻译”,最后返回到虚拟机操作系统上。这一套过程需要异常捕捉和异常处理机制,因此速度较慢。虚拟机操作系统认为自己的特权指令执行正常,并不知道自身处于一个虚拟的环境中。在全虚拟化中,虚拟机的用户态执行具有和系统指令执行一样的速度,但是内核态的指令由于要进行处理,因此要花费较多的时间。
2、半虚拟化
半虚拟化的思想是修改虚拟机操作系统,使其指令运行在用户态模式上,将原来的内核态质量采用其他的方式代替。这样一来,虚拟机操作系统就明白自己是在虚拟系统上运行。这样做的缺点是需要修改虚拟机操作系统的内核,与其原有的内核等价,但是能够在用户态模式上运行。XEN是一种典型的半虚拟化技术,但是由于微软的windows操作系统没有这种修改后的内核,因此XEN只支持Linux,不支持Windows。
3、硬件虚拟化
硬件虚拟化,这需要CPU硬件厂商的支持,例如Intel的Intel-VT技术。CPU厂商需要将自己的CPU进行改变,在用户态和内核态的基础上,增加专门用于虚拟机运行的模式,使得虚拟机运行在这种模式上,从而可以直接执行内核态的程序。KVM就是处于硬件虚拟化的模式。

二、KVM简介

KVM,Kernel Virtual Machine的简写,即基于内核的虚拟机。自Linux2.6.20后集成在Linux的各种发行版本中,现已成为学术界的主流虚拟机之一。
KVM的虚拟化实现是使用Linux自身的调度器进行管理,核心源码较少。在KVM中,每一个虚拟机都是由Linux调度程序管理的标准进程。但是KVM虚拟化的实现需要硬件支持(比如Intel的VT技术和AMD的V技术),是基于硬件的完全虚拟化。
KVM官网网址为:https://www.linux-kvm.org/,其主页面如下所示:

三、QEMU简介

由于KVM使用了类似QEMU的仿模拟处理器,因此在最后我们再介绍一下QEMU。QEMU是由Fabrice Bellard所编写的一款模拟处理器软件,遵循GPL协议,在Linux平台上被广泛使用。QEMU具有跨平台、高速度的特性,其运行速度能够接近真实计算机的速度。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

KVM详解(一)——KVM基础知识相关推荐

  1. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  2. 从0到1详解推荐系统的基础知识与整体框架

    猜你喜欢 0.淘宝首页猜你喜欢推荐建模实践 1.[免费下载]2022年6月份热门报告 2.[实践]小红书推荐中台实践 3.微信视频号实时推荐技术架构分享 4.对比学习在宽狩推荐系统中的应用实践 5.微 ...

  3. java类与接口思维导图_详解java接口基础知识附思维导图

    接口: 官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合 疑问: 那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果 ...

  4. 详解FC交换机基础知识

    谈起FC交换机,大家就会想到它是数据中心贵族的象征,也是保证核心业务性能和可靠性的技术基石,但近年来,随着数据中心软件定义,IP化潮流的推进,FC交换机的市场份额有所收缩,但截至目前为止,FC技术仍然 ...

  5. 计算机基础知识及其详解,计算机基础知识详解:计算机入门基础知识

    能力训练网权威发布计算机基础知识详解,更多计算机基础知识详解相关信息请访问少儿综合素质训练网. [导语]以下是大范文网整理的计算机基础知识详解,欢迎阅读! 1.第一台计算机-ENIAC 大家只要知道第 ...

  6. 安装python步骤-从0到1,Python安装步骤详解(附基础知识简介)!

    Python下载安装步骤 python解释器,在Linux中可以内置安装,而在windows中则需要去下载.具体步骤如下: 第一步:通过Web浏览器,访问http://www.python.org官网 ...

  7. python安装步骤-从0到1,Python安装步骤详解(附基础知识简介)!

    Python下载安装步骤 python解释器,在Linux中可以内置安装,而在windows中则需要去下载.具体步骤如下: 第一步:通过Web浏览器,访问http://www.python.org官网 ...

  8. 详解异构计算FPGA基础知识

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 浩仔 责编 | 阿秃 随着云计算,大数据和人工智能技术应用,单靠CPU已经无法满足各行各业的算力需求.海量数据分析.机器学习和边缘计 ...

  9. 电池pack结构_详解锂电池pack基础知识,18650锂电池pack工艺技巧总结分析

    电池pack工艺 导线锡焊工艺 连接工艺 电芯.保护板通过导线锡焊连接,然后装配胶壳 使用设备.工具:锡焊台 缺点:以产生锡珠.脱焊,有安全隐患 三.电池pack工艺 镍片锡焊工艺 连接工艺 电芯.保 ...

  10. linux kvm安装win7,详解在 KVM 上安装 Win7 虚拟机

    详解在 KVM 上安装 Win7 虚拟机 发布时间:2017-04-04 21:09 来源:互联网 当前栏目:web技术类 之前都是在用Linux 虚机,现在有需要用到Win7 虚机,才发现在 KVM ...

最新文章

  1. 在此iphone上尚未受信任_苹果中国官网开启限购!每款iphone每人限购两部
  2. source insight(SI)怎么显示全路径?(不显示省略路径)(关闭Trim long path names with ellipses)
  3. AcWing 831. KMP字符串(模板)
  4. 功能测试工具Selenium IDE
  5. java学jdk几_Java系列学习(一)-JDK下载与安装
  6. 服务器 mysql iis 内存_windows服务器iis配置php和mysql环境图文教程
  7. linux下如何添加一个用户并且让用户获得root权限
  8. python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)
  9. 为研究自动驾驶卡车上路可行性,英政府出资810万英镑
  10. 程序员们平时常逛的论坛
  11. 计算机科学名词,计算机科学中的术语(1)
  12. Android 解决GreenDao:Failed to notify project evaluation listener
  13. 贴吧怎么发帖,发防删图出现审核怎么办?
  14. 表单下的botton如何禁止提交
  15. JavaScript blog式日历控件
  16. PXE自动安装Linux系统
  17. 10.2.2.7 -DHCP 和 DNS 服务
  18. 椭圆型变分问题理论及数值方法
  19. No input file specified 出现的原因及解决方法
  20. 聊一聊HTTPS双向认证的简单应用

热门文章

  1. 每日算法系列【LeetCode 810】黑板异或游戏
  2. 每日算法系列【LeetCode 881】救生艇
  3. python—scipy.stats.multivariate_normal
  4. 指尖初体验之手指的舞蹈
  5. 自制简易JTAG下载烧写工具
  6. 二分法08:寻找旋转排序数组中的最小值
  7. multisim安装后无法连接数据库_Kepserver连接Mysql教程(一)MySQL5.5数据库安装
  8. HarmonyOS 开发App详细步骤
  9. MyEclipse安装包
  10. Android MediaPlayer 实现音乐播放器