論文學習筆記(一): 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的半虛擬化接口列表
    在這裏插入圖片描述

  • 內存管理

    • 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發送非同步消息。
    • 非同步消息的頻繁喚起會極大的造成資源消耗。
      在這裏插入圖片描述

Detailed Design

在這裏插入圖片描述 本文介紹到此爲止,更多的詳細介紹,比如性能比較,詳細設計請參考原文