论文学习笔记(一): Xen and the Art of Virtualization

原文:Xen and the Art of Virtualization

首先说几个名词解释:

  • Xen: 它并不是Virtual Machine(VM),而是Virtual Machine Monitor(VMM),或者叫它supervisor。它是虚拟机的管理者或者监视者,并不是虚拟机本身。
  • VMM:管理虚拟机的内存,CPU和各种资源的调度,与实体机交互。
  • GuestOS:就是虚拟机,Host是主机

剩下的名词边学边解释。


Abstract:

Xen的优势:可允许多个OS共同分享一个常规的硬件,这里的常规指的是不用经过特殊改造,普通的硬件。这种分享是安全的,资源受管理的,并且不牺牲功能或者性能(在Xen出现以前,其他的VMM要不就不安全,要么就会牺牲功能或性能)。

Introduction:

机器分割实现多系统并发操作有几个难点:(机器分割指CPU、内存等的分块,一部分处理一个VM)
1. VM必须相互隔离:不隔离可能会相互影响,性能、安全性等
2. 不同操作系统都需要支持不同流行应用程序的异构性
3. 虚拟化带来的性能开销很小

Xen实现隔离的方法
整个OS粒度上复用物理资源。

XEN: APPROACH & OVERVIEW

  • x86架构不支持 full virturalization

    • 部分超级指令(supervisor instructions)在特权不足时会静默失败,而不会导致陷阱(trap)
    • 有效的虚拟化x86的MMU也很困难
      • MMU:Memory Management Unit, 内存管理单元
    • 上述问题可以被解决,但是要牺牲性能
  • para-virtualization:

    • 通过提供与底层硬件相似但不完全相同的虚拟机抽象,解决了full virtualization的问题。
    • 不对二进制程序接口(application binary interface ,ABI)进行修改,但是对guestOS进行少许修改
    • 设计原则:
    1. 虚拟化现有标准ABI所需的所有架构功能,以达到对应用程序二进制文件的支持。
    2. 完整支持多任务操作系统,这可以让单VM实例虚拟化复杂的服务器配置。
    3. 在x86这种不能协调运行OS的机器架构上,半虚拟化是实现高性能和强隔离的必须条件
    4. 即使在协作机器架构上,将资源虚拟化的效果完全隐藏在guestOS之外也可能会带来正确性和性能风险。
  • Xen和Denali的区别不表。
    x86的半虚拟化接口列表
    论文学习笔记(一): Xen and the Art of Virtualization

  • 内存管理

    • x86没有software TLB(下文称作STLB)
      • Translation Lookaside Buffer, 一块用来存放常用页的缓存区,不用再在内存查找常用地址,以此来提升性能 。
    • x86通过hardware TLB(下文称作HTLB)遍历页表。由于没有STLB的标记,所以切换地址空间都需要完整刷新HTLB。因此,Xen制定了两个规则:
      • 让guestOS管理页表,Xen最小限度的涉及其中,所以能保证安全性和隔离性
      • Xen存在于每页地址空间顶部中,因此避免了在进入和离开管理程序时的TLB刷新(用空间换时间的思想)
    • 每次guestOS有新的页表处理的时候,大概率都是因为有新的进程出现。guestOS会从自己的内存空间分配并初始化页表,并将他们给Xen保留并注册
      • guestOS没有对页表的写权,所有写权需要由Xen认证
    • 分段处理也是相似的虚拟化处理 ,它授权段表的更新。
      • 段表的优先处理权在Xen之下
      • 段表不允许进入Xen保留的内存区域
  • CPU

    • 大部分CPU只支持两个优先级,而x86架构的CPU支持 4个,从0(最高)到3(最低),被称为rings
      • 0被hostOS占用
      • 3被app占用
      • 1,2暂时被空置,所以Xen可以占据1。这样Xen和Apps就相互独立了。
    • 错误处理略。核心思想是错误跑出给Xen,Xen处理这些问题。
  • I/O处理

    • 核心思想是“与硬件中断”相似。给Xen发送非同步消息。
    • 非同步消息的频繁唤起会极大的造成资源消耗。
      论文学习笔记(一): Xen and the Art of Virtualization

Detailed Design

论文学习笔记(一): Xen and the Art of Virtualization
本文介绍到此为止,更多的详细介绍,比如性能比较,详细设计请参考原文