什么是hypervisor

hypervisor为操作系统提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。hypervisor之于操作系统类似于操作系统之于进程。

虚拟化和hypervisor

关于什么是虚拟化,请参考我的另一篇博客《虚拟化技术介绍》,有更详细的讲解。

虚拟化就是隐藏底层物理硬件,让多个操作系统可以透明地使用和共享硬件资源的一种技术手段。这种架构的另一个更常见的名称是平台虚拟化。

在典型的虚拟化分层架构中,提供平台虚拟化的层称为 hypervisor (有时称为虚拟机管理程序或 VMM)。虚拟操作系统称为虚拟机(VM)。下图展示了常用硬件虚拟化的简单分层架构,当然并不是所有虚拟化解决方案都是一样的。

可以看到,hypervisor是提供底层机器虚拟化的中间软件层。操作系统将对机器的底层资源的访问虚拟化为进程。hypervisor 也做一样的事情,但其对象不是进程,而是整个虚拟机操作系统。

Hypervisor的两种类型

hypervisor 可以划分为两大类。一种是直接运行在物理硬件之上的,例如基于内核的虚拟机KVM,它本身是一个基于操作系统的hypervisor。另一种是运行在另一个操作系统中,例如QEMU 和 WINE。

hypervisor的构成

hypervisor仅是一个从其虚拟操作系统抽象机器硬件的分层应用程序。通过这种方式,每个虚拟操作系统看到的仅是一个VM而不是真实的硬件机器。

在较高级别上,hypervisor需要少量设施启动虚拟操作系统:一个需要驱动的内核映像、一个配置(比如 IP 地址和所需的内存量)、一个磁盘和一个网络设备。磁盘和网络设备通常映射到机器的物理磁盘和网络设备(如图所示)。最后,需要使用一组虚拟操作系统工具启动和管理虚拟操作系统。

然后,一个简化的hypervisor架构实现最后的关键功能,从而使虚拟操作系统可以和宿主操作系统同时运行。实现这个功能需要一些特定的要素,如图所示。

首先,类似于将用户空间应用程序和内核函数连接起来的系统调用,一个通常可用的虚拟化调用(hapercall,hypervisor对操作系统进行的系统调用)层允许虚拟系统向宿主操作系统发出请求。可以在内核中虚拟化I/O,或通过虚拟操作系统的代码支持它。故障必须由 hypervisor 亲自处理,从而解决实际的故障,或将虚拟设备故障发送给虚拟操作系统。hypervisor 还必须处理在虚拟操作系统内部发生的异常。(毕竟,虚拟操作系统发生的错误仅会停止该系统,而不会影响 hypervisor 或其他虚拟操作系统)。hypervisor的核心要素之一是页映射器,它将硬件指向特定操作系统(虚拟OS或 hypervisor)的页。最后,需要使用一个高级别的调度器在hypervisor和虚拟操作系统之间传输控制。

转载于:https://blog.51cto.com/changfei/1672125

hypervisor简介相关推荐

  1. Hypervisor 简介

    单词解释 Hypervisor:超级监督者,管理程序 虚拟化技术 概念 一种运行在基础物理服务器和操作系统之间的中间软件层,可以访问服务器上包括磁盘和内存在内的所有物理设备.Hypervisor协调着 ...

  2. QNX操作系统和QNX Hypervisor简介

    概述 QNX操作系统和QNX Hypervisor是由QNX Software Systems开发的两个重要的嵌入式技术.它们在嵌入式系统领域具有广泛的应用和卓越的表现. QNX OS是一个实时操作系 ...

  3. 操作系统研究:面向软硬件协同的车载操作系统驶入快车道

    已剪辑自: https://mp.weixin.qq.com/s?__biz=MzA4NTcwMDQwMg==&mid=2650818860&idx=1&sn=06f15812 ...

  4. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  5. 渗透Xen hypervisor

    BLUEPILL和Vitriol都是目前比较流行的软件项目,可以在运行时给系统安装上恶意的hypervisor(系统管理程序).原本系统是 纯净的,什么都没有,但是这些软件可以即时的向系统中插入一段恶 ...

  6. 剖析 Linux hypervisor

    KVM 和 Lguest 简介 Linux® 的最重要创新之一就是转变为hypervisor(或运行其他操作系统的操作系统).现在涌现许多使用 Linux 作为内核的 hypervisor 解决方案. ...

  7. Docker:Docker的简介、安装、使用方法之详细攻略

    Docker:Docker的简介.安装.使用方法之详细攻略 目录 Docker的简介 0.1.知乎对Docker的理解-Docker就是集装箱 0.2.简书对Docker的理解-Docker带来标准化 ...

  8. 【KVM系列01】KVM简介及安装

    第一章 KVM简介及安装 1. KVM 介绍 1.0 虚拟化简史 1.1 KVM 架构 2. KVM 的功能列表 3. KVM 工具集合 4. RedHat Linux KVM 安装 4.1 在安装  ...

  9. Docker学习一:Docker简介与安装

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

最新文章

  1. Windows快捷键集锦
  2. 教你在微信头像上加皇冠,很漂亮!
  3. [GWCTF 2019]pyre.pyc [CISCN2018]2ex
  4. C# 删除指定目录下具有某后缀的全部文件
  5. android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态
  6. SpringBoot→初始化项目just run@SpringBootApplication、请求处理@RequestMapping、属性配置yml
  7. 3个阶段 项目征名_中资企业新签的3个海外项目开工
  8. Oracle手工创建数据库
  9. win10 系统Docker搭建设备共享平台stf(三)
  10. GoldVideo-基于Web Assembly的H265播放器实现
  11. 【FPGA教程案例66】硬件开发板调试6——基于FPGA的UDP网口通信和数据传输
  12. 云服务器选择、腾讯云轻量应用服务器面板介绍
  13. 二维数组—小学二年级班级座位表
  14. 计算机二级考试word论文,office二级考试之word
  15. 《Visual Basic.Net 循序渐进》
  16. kubeadm升级k8s
  17. Redis---Redis三种常用数据结构
  18. 博雅互动 php 是否加班,【博雅互动工资|博雅互动待遇怎么样】-看准网
  19. getchar 和 getch区别
  20. 小技巧-用Python发送邮件

热门文章

  1. html整体垂直居中,htmlcss垂直水平居中
  2. Ajax+SpringBoot+Thymeleaf使用中遇到的跳转页面问题
  3. ubuntu 在线安装mysql_Ubuntu下安装MySQL5.6
  4. 【jsp】通过get和post传值的区别
  5. echarts datazoom 显示的位置设置
  6. 如何获取URL中的参数
  7. php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
  8. iOS App 连接外设的几种方式
  9. 项目管理深入理解08--成本管理
  10. Hive 按某列的部分排序 以及 删列操作