系统虚拟化原理 虚拟机 上交现代操作系统

即将保研上交的大佬推荐了一个操作系统的网课,里面有系统虚拟化部分。听得半知半懂,在这里做一个总结。如有疏漏,还请指出。
上海交通大学 现代操作系统

什么是虚拟 virtualization

我个人以为,虚拟就是制造假象。我们虚拟化一台机器,就是利用软件的技术(常常配合硬件的支持)把机器的实际接口包裹成一个fake接口,用户可以使用fake接口而不必使用原有接口操作机器,fake接口往往更加容易被用户使用
比如我们虚拟化内存:物理实在的内存就是一块块dram,计算机通过地址总线选定内存单元,记住一个内存地址对程序员来说是很难的。而虚拟之后的内存,变成了程序员(这里主要指汇编程序员)眼中连续编址的内存空间。而这两个地址之间的转换,就由一个虚拟化层负责实现。

与抽象(abstraction)做对比:虚拟是改造原有的接口使其易于使用,抽象是打造接口或者提供新的接口给上层使用者。

虚拟化是云计算的核心实现技术

云计算的初衷是,数据处理和数据存储可以通过互联网访问的大型计算和存储系统集群上更加有效的完成。我们使用的电脑运行一个个进程,远程主机运行的是来自多租客的虚拟机(或者是轻度虚拟化的容器)。借助虚拟化技术,这些虚拟机直接相互隔离,而且不必考虑底层硬件架构的不同以及操作系统的不同。

通过虚拟化,数据中心大量的、性能参差不齐的计算机群仿佛一个大型计算机。用户可以按需订阅这台大型计算机的资源。云服务商也受益于虚拟化技术,可以更好的进行资源的集中管理与调度。

云计算概念与模型 什么样的应用适合云计算

操作系统的接口层次

要理解什么事系统虚拟化,首先要明白这个图。
在这里插入图片描述
计算机说白了,就是运行程序的机器。程序的运行就是利用软件的一条条指令去操作硬件。如果我们让所有的进程都可以直接操控硬件,那么会有很大的安全隐患,而且进程直接的调度也难以做到。

于是操作系统应运而生。它对下可以操作一些特权级的硬件指令,对上协调进程并提供系统调用接口。有了操作系统之后,进程的执行模式变成了受限的直接执行

为了方便用户写代码,一些人将已经编好的代码做成一个库,用户可以调用库运行程序。

于是有了这些接口:

  1. ISA——instruction set architecture,与计算机组成原理中的指令集是一样的,指的是机器可以识别的语言。
    用户ISA部分:所有程序都可以执行的指令,比如mov、add等指令。
    系统ISA部分有些指令比如I/O操作需要操作系统代替进程执行,比如修改中断表等。

  2. ABI——application binary interface,比如简单的hello world程序,编译之后是0、1组成的二进制序列(exe文件)。这个exe文件通过ABI接口来运行。

  3. API——application programming interface,比如python中有很多的包,程序调用这些包即可完成相应的功能。

思考下面这些程序调用了哪个接口

  • Web Game: 只需要下载一个浏览器即可正常运行,是API
  • Office Word:只有Windows有,是ABI
  • Windows 10:Windows只能运行在x86架构上,是ISA

定义虚拟机

虚拟机的引入主要就是为了解决不兼容的问题,x86架构与arm架构的应用不兼容,Windows与Linux的应用不兼容。

而云计算等情形下要求我们能在任何硬件上跑任何系统。也就是说我们要把硬件虚拟化,使得硬件接口(ISA)可以被任何软件系统使用。

因此,虚拟机虚拟ISA接口,向下利用宿主机器的ISA,向上提供用户需要的ISA。

高效虚拟化的定义

  • 为虚拟机内程序提供与该程序原先执行的硬件完全一样的接口(运行在虚拟机内的程序不应该能发现自己运行在虚拟机上
  • 虚拟机只比在无虚拟化的情况下性能略差一点
  • 虚拟机监控器控制所有物理资源

引入虚拟机需要什么代价

我们使用虚拟机技术,显然是要在一台机器上同时运行多个计算机系统,也就是说有在操作系统之间做切换的需求。

类似于进程的上下文切换,我们要把用户的寄存器全部保存起来然后再恢复。当我们切换操作系统时,也需要把操作系统的状态信息做记录然后恢复。

因此,我们引入虚拟机监控器层(VMM/Hypervisor)直接接触硬件。得到效果是这样的:
在这里插入图片描述

虚拟机的两种模式

Type 1

上图所示即为Type 1结构。VMM直接包裹硬件。
在这里插入图片描述
VMM直接运行在硬件之上,所以它需要提供操作系统的功能,如虚拟机调度、硬件驱动、内存管理等。

这种方式的好处就是效率高。坏处就是VMM需要的功能太多,定制化程度高。而且VMM始终运行,不如Type 2灵活。

Type 1 代表有VM Ware、Xen。

Type 2

在这里插入图片描述
Type 2 复用主机的操作系统,因此VMM的任务会减轻很多。此外,Type 2 模式下,机器可以正常运行进程,VMM只是宿主机器的一个进程而已。

Type 2 相比Type 1 最大的好处就是灵活,代表是QEMU/KVM。

如何实现虚拟化

完整实现虚拟化需要三部分,虚拟处理器、虚拟内存和虚拟设备。前面我们提到虚拟机虚拟ISA接口即为虚拟处理器。
在这里插入图片描述

Trap and Emulate

我们以Type 1 为例。

上图中,EL0与EL1权限不同,EL1可以执行特权指令,EL0只能执行用户态指令

我们的解决思路是Trap and Emulate。

Trap: 在用户态EL0执行特权指令将陷入EL1的VMM中。
Emulate:这些指令的功能都由VMM内的函数实现

当虚拟机内正常执行用户态进程时,其实也是直接操作硬件的。但是当用户态进程执行特权指令时,就将Trap进入EL1的VMM,由VMM通过硬件或者软件的方法,实现该特权指令执行后应有的效果。

这里还有一个问题,VM内的进程如何切换到操作系统呢?不同于普通机器,虚拟机进程需要先进入VMM,然后VMM运行虚拟机操作系统。

还有一个问题

我们虚拟机内的操作系统与正常运行在硬件上的操作系统是一样的,没有任何代码修改,而平时我们操作系统是运行在EL1特权级上,虚拟机操作系统则需要运行在EL0特权级上。

这会引入一个问题:操作系统在设计时有些指令如果在EL1执行,就会变成nop,换言之,有些特权指令不能被trap,自然也不能被Emulate。

私以为这个问题的解决是通过操作系统让步(不让其变成nop)或者硬件增加支持(例如x86的硬件虚拟化方法使得虚拟机操作系统运行在non-root模式下的EL1)实现的。

Emulate的方法

解释执行/二进制翻译

解释执行即使用软件方法一条条对虚拟机代码进行模拟。

二进制翻译引入了一些加速方法, 一是在执行前批量翻译虚拟机指令,二是 缓存已翻译完成的指令。(实际上跟指令Cache很相近)

硬件虚拟化

x86专门给VM提供了non-root模式,使得虚拟机内的操作系统可以直接运行在non-root模式下的EL1,如果虚拟机与宿主机器是同种架构,那么虚拟机的操作系统可以直接操纵硬件,取得与非虚拟机下同等的运行效果。

arm为VMM提供了EL2特权级。

硬件虚拟化在相同架构环境下运行效果杰出。

Type 2有了哪些变化?

在这里插入图片描述

文字大家可以先略过
type 1下,VMM相当于操作系统,VM相当于一个进程。 type 2下,VMM相当于一个进程,那么VM内的进程就相当于宿主机器的一个线程。

我的理解是,type2的VMM(EMNU)其实远没有type1强大,它更多的是起到KVM的一个接口的作用。反而是Host OS 配合 KVM完成虚拟化CPU、虚拟化内存的工作。

因此我个人认为,Type 2与Type 1并没有本质区别。

VM包含哪些内容

在这里插入图片描述
vCPU是虚拟的CPU,虚拟机以为它运行的vCPU在真实的CPU上,但实际上是用线程模拟出的CPU(VMM相当于宿主机器的一个进程,那么VM内的进程就相当于宿主机器的一个线程)。虚拟寄存器对应物理寄存器,类似于OS的上下文切换。
虚拟机的内存相当于从堆中malloc出的独占内存。

从这里我们其实就可以感受到为什么虚拟机是安全隔离的了。即使虚拟机内部胡搞,对于宿主机器来说它就是一个普通的线程(type 2)。如果想要该虚拟机抢占更多物理资源,就要配置更多的vCPU,因此就有更多的VM线程。

此外,不同虚拟机的内存地址空间是完全隔离的。访问设备则需要VMM进一步提供设备调度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统虚拟化:原理与实现pdf》是一本介绍系统虚拟化的相关理论和实践的书籍。在计算机技术快速发展的今天,系统虚拟化这一概念已经成为了一种重要的技术手段,可以有效提高计算机的利用率、降低管理成本,为云计算、大数据等新兴领域的发展提供支持。 该书主要介绍了系统虚拟化的概念、原理和实现方法。首先,它介绍了虚拟化技术的发展历程和背景,说明了为什么需要虚拟化技术以及虚拟化技术的优点。接着,它详细介绍了系统虚拟化的两种实现方法:全虚拟化和半虚拟化,分析了它们的优缺点,同时也讲解了其他虚拟化技术的特点。 在具体实现方面,该书详细介绍了系统虚拟化的基础技术,包括虚拟化的CPU、内存、磁盘、网络等硬件资源的管理方法,虚拟机的创建、启动和销毁等操作。此外,还介绍了虚拟机监控器(VMM)的工作原理虚拟机的调度策略。 除了基础技术,该书还介绍了针对特定应用场景的系统虚拟化技术,如云计算、容器化等。通过对各种实际应用场景的案例分析,读者可以更加深入地理解系统虚拟化的实际应用。 总之,《系统虚拟化:原理与实现pdf》是一本非常实用和具有参考价值的书籍,介绍了系统虚拟化技术的基础知识和实现方法,对于从事虚拟化相关研究和应用的从业人员以及对虚拟化技术感兴趣的读者都具有很高的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值