初识虚拟化技术「建议收藏」

初识虚拟化技术

大家好,又见面了,我是全栈君。

(一)虚拟化技术概述

虚拟化技术可针对详细应用目的创建特定目的的虚拟环境,安全、效率高,快照、克隆、备份、迁移等方便。系统虚拟化是将一台物理计算机虚拟成一台或多台虚拟计算机系统,每一个都有自己的虚拟硬件,其上的操作系统任觉得自己执行在一台独立的主机上,计算机软件在一个虚拟的平台上而不是真实的硬件平台上执行。虚拟化技术能够扩大硬件的容量。简化软件的又一次配置过程。当中CPU的虚拟化能够单CPU模拟多CPU并行执行,同意一个平台同一时候执行多个操作系统,而且应用程序能够在相互独立的空间内执行而互不影响。

虚拟化技术在减少硬件成本的同一时候。还能够显著提高系统的工作效率和安全性。

虚拟化系统的实现一般是在操作系统和硬件之间增加一个虚拟机监控程序,称为Hypervisor(如图1所看到的)。由Hypervisor主要负责各个操作系统之间的硬件资源协调。虚拟机监控程序是一种特殊操作系统,直接在裸机上执行(针对全然虚拟化技术)。虚拟机监控程序创建一个底层硬件平台抽象。一个或多个虚拟机(VM)共享这个底层硬件平台。在这样的环境中。VM 仅仅是操作系统及其应用程序的容器。一个 VM 与虚拟机监控程序上执行的其它 VMs 隔离。这支持多个操作系统或多个配置不同的相似操作系统。

    初识虚拟化技术「建议收藏」

图1  虚拟化系统结构

1。虚拟计算机系统三层含义-同质、高效、资源受控。

同质-本质上虚拟机和物理机是同样的、表现上有所差异,如一个物理核虚拟多个核。

高效-虚拟机效能接近物理机。

资源受控-虚拟机对系统资源有全然的控制能力。包含分配、管理、回收。

2,虚拟化分不同层面的虚拟化

硬件抽象层的虚拟化-客户机与宿主机硬件相似,指令集相似。

操作系统层虚拟化-内核能够提供多个相互隔离的用户态,其拥有独立的文件系统、网络、系统设置和库函数。

库函数层初始化-是不同的操作系统能够拥有共同的库函数接口,应用程序不需改动。

编程语言层虚拟化-编的程序执行在一个虚拟机上,与详细硬件无关。如Java。

3。虚拟机的长处

良好的封装,虚拟机的执行环境保持便捷。便于随时抓取状态、备份、克隆、挂起和恢复。

多实例-最大限度降低物理资源,提高利用率。便于管理。

隔离-每一个应用程序能够再独立的操作系统中执行。互不干涉。崩溃也不会影响其它任务。

硬件无关性-仅仅要拥有同样的硬件抽象层,虚拟机就能够无缝迁移,因此维护和升级简单。

安全-便于控制訪问权利,病毒入侵检測等。

4,虚拟化分类

依照虚拟化程度分全然虚拟化和类虚拟化。全然虚拟化-客户及操作系统不须要不论什么改动就可以执行,分软件辅助全然虚拟化和硬件辅助全然虚拟化,全然虚拟化可以模拟全部CPU指令。类虚拟化-操作系统须要做出适应性改动。回避那些难以模拟的指令。

依照宿主机是否存在独立操作系统分为hypervisor模型和宿主模型,前者需支持全部的物理资源管理(系统启动、内存管理、设备驱动等)。效率高、复杂。后者仅仅需调用宿主操作系统API实现虚拟化,宿主操作系统能够是windows、linux,效率低、简单。第三类是两者的混和,VMM位于硬件层之上,但让出部分IO设备管理权给一个执行在特权虚拟机上的特权操作系统。VMM负责处理器和内存虚拟化。

(二)虚拟化技术框架

虚拟环境组成:硬件、VMM、虚拟机。物理机中操作系统直接管理硬件(通过硬件抽象层HAL),虚拟环境中VMM管理硬件(会构建一个或多个逻辑HAL)。操作系统执行在VMM 逻辑HAL之上,执行在非CPU最高特权。

对物理资源虚拟的三个主要任务:处理器虚拟化、内存虚拟化和I/O虚拟化。若硬件直接支持虚拟化技术则CPU辅助完毕虚拟化过程。在CPU、芯片组以及IO设备等增加专门针对虚拟化的支持,从而高easy、高效的实现虚拟化。

    初识虚拟化技术「建议收藏」

    图2 虚拟化环境组成

1,VMM介绍

虚拟机VMM(虚拟机监控器)执行在物理CPU的最高特权级。VMM向下管理宿主机物理资源,包含处理器管理、内存管理、外设管理、中断管理、系统时间管理等。向上则管理虚拟环境资源,包含:

i 虚拟物理资源-处理器、内存、IO设备等。

ii 多个独立虚拟环境的调度-类似于进程调度。

iii 虚拟环境间的通信机制–VMM提供VMM与虚拟环境之间、虚拟环境之间的通信API。通信方式能够是共享内存、事件通知等。

iv 虚拟环境的管理-创建、删除、暂停等。

2,硬件辅助虚拟化

i 处理器虚拟化:

VMM最核心部分,内存、IO虚拟化都赖于处理器虚拟化的正确实现。处理器的虚拟化就是模拟处理器的全部关键环节-指令集、内存訪问。

三个关键概念:虚拟寄存器、虚拟上下文、虚拟CPU,当中虚拟CPU与物理CPU具有一致的功能,其功能由物理CPU和VMM共同完毕(非敏感指令直接物理CPU完毕。敏感指令VMM陷入后再模拟)。处理器虚拟化包含:

(a)指令集模拟:正确模拟指令的行为。操作系统试图訪问关键资源时,VMM会将訪问定位在VMM的虚拟寄存器上。操作系统运行操作时(进程切换等),通过VMM“陷入”再模拟进行。陷入手段包含:处理器保护机制触发异常、VMM主动通过陷阱调用、异步中断(处理器内部中断源和外部中断)。

(b)中断和异常的模拟:模拟硬件中断和软件异常的运行。

(c)对称多处理器的模拟:虚拟处理器个数与物理CPU没有必定联系,向操作系统呈现SMP的存在。

ii 内存虚拟化:核心要求是每一个客户机物理地址从0開始、大粒度地址连续(如256M),基本做法在于引入一层新的地址空间-客户机物理地址空间,使用时由VMM将地址转化为实际物理地址。

iii IO虚拟化:截获客户机操作系统对设备的訪问请求。通过软件模拟真实物理效果,“欺骗客户机”

3,基于软件的全然虚拟化

若硬件在虚拟化支持存在缺陷。可通过软件弥补。两种可行方案-模拟运行(全然虚拟化)和直接源码改写(类虚拟化)。

软件模拟技术是在一种硬件平台上通过软件模拟出第二种硬件平台,从而能够运行其上的操作系统、应用程序。模拟的核心是模拟指令集的运行效果,可模拟同样的硬件体系结构,也可模拟不同的。

i 基于软件的CPU虚拟化

(a)模拟技术最简单的就是解释运行-取指、模拟运行效果、再取指,缺点是性能差。如java即为解释型运行,具有硬件平台无关性。

(b)扫描和修补-大部分指令直接由物理CPU运行,部分操作系统敏感指令通过陷阱陷入到VMM模拟运行。

(c)二进制代码翻译-物理CPU不能直接运行客户机操作系统操作。待运行代码都在VMM缓冲区里。

ii 内存虚拟化:为了实现客户机物理地址到宿主机物理地址的映射,VMM维护了一张映射表。VMM截获客户机内存操作指令,并映射到VMM分配给该客户机的对应宿主机物理地址。翻译过程通过影子页表实现,直接翻译到宿主机物理地址。

iii IO虚拟化:虚拟机中侦測出来的设备是VMM虚拟的设备。能够多于或少于真实设备,功能和型号也可同可不同,模拟设备与操作系统交互的API就可以。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116073.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pandas中的drop函数_pandas replace函数

    pandas中的drop函数_pandas replace函数dropna()函数的作用是去除读入的数据中(DataFrame)含有NaN的行。如下:>>>df=pd.DataFrame({“name”:[‘Alfred’,’Batman’,’Catwoman’],”toy”:[np.nan,’Batmobile’,’Bullwhip’],”born”:[pd.NaT,pd.Timestamp(“1940-04-25”),

    2022年9月18日
    0
  • 什么叫应用程序域?(zhuan)

    什么叫应用程序域?(zhuan) 一:应用程序域介绍:    "域",就是范围,环境,边界的意思,那么什么是应用程序域,官方给出的是这样的解释:操作系

    2022年7月3日
    15
  • eclipse 导入Java项目「建议收藏」

    eclipse 导入Java项目「建议收藏」偶们公司的这个老项目真的是让人头疼,师父们给偶导了N遍,偶还是记不住。俗话说“好记性不如烂笔头”,于是乎,偶决定记下来,便于自己日后查看,同时也可以给同样小白的同胞们一点参考。说的可能有点啰嗦,但是真的很详细,自己一步步来写的。第一步,打开eclipse,选择一个新的workspace,点击“OK”,进入eclipse界面。第二步,新建Java项目:点击file下面的“new”图标,选择“Java…

    2022年7月8日
    23
  • 5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把

    5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把一辈子的手机壁纸都够用了

    2022年6月3日
    29
  • jvm的垃圾回收算法_jvm垃圾回收策略

    jvm的垃圾回收算法_jvm垃圾回收策略前言相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫JVM对象可达性分析算法Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GCRoot对象为起点的引用链找到该对象,找不到表示可以被回收想象一下,对象在什么情况下会被认为是垃圾对象呢?

    2022年9月11日
    0
  • 怎么修改Ubuntu更新源服务器为国内地址

    怎么修改Ubuntu更新源服务器为国内地址 Ubuntu系统安装完默认更新源是国外服务器,总所周知的原因我天朝连接外国的速度那是很有讲究的,如果偶尔用用Ubuntu也就无所谓了,但是经常使用肯定会让你崩溃的,国内国外速度相差十倍都不止。更新源地址也很简单,有两种方法,一种是如果安装了图形界面,通过配置中心来更改是很方便的;还有一种就是纯服务器版,没有图形界面通过更改配置文件来更换源地址,并且命令行的方法可以随意添加任何可用的更新源地址,…

    2022年5月14日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号