版本 43493e509f858a22160144e77e49932cc5c0cd31
xvisor
協作者
- 2015 年春季
- 沈宗穎, 李育丞, 蘇誌航, 張仁傑, 鄧維岱
Hackpad
xvisor<https://mycpp.hackpad.com/xvisor-xQUUkRHWwmm>_design doc整理<https://mycpp.hackpad.com/Xvisor--WzicRuv3qqf>_
虛擬化技術 (Virtualization)
以下簡介虛擬化技術,並以Xvisor on Armv8 為例探討虛擬化技術的實作
Hypervisor (virtual machine monitor)
Hypervisor (Virtual Machine Monitor)的功用是去管理Virtual Machine (VM)
Host Machine: 運行Hypervisor的實體主機,但有時運行在Hypervisor之上
Guest Machine: 運行在Hypervisor之上的虛擬主機
.. image:: http://electronicdesign.com/site-files/electronicdesign.com/files/archive/electronicdesign.com/files/29/20211/fig_01.jpg
使用時機:
- 工作負載整合 (Workload Consolidation)
- 支援舊有軟體 (Legacy Software)
- 啟用多核 (Multicore Enablement)
- 提高可靠性 (Improved Reliability)
- 安全監控 (Secure Monitoring)
Hypervisor的類型
- Type-1: 本地(native)、裸機(bare-metal) hypervisors
- Hypervisor直接運行在host的硬體上,並直接控制硬體及管理Guest作業系統,此時host把Guest作業系統當成一個process
- 如:
XenServer<http://en.wikipedia.org/wiki/Xen>_ 、Hyper-V<http://en.wikipedia.org/wiki/Hyper-V>_ 、Xvisor
- 如:
- Hypervisor直接運行在host的硬體上,並直接控制硬體及管理Guest作業系統,此時host把Guest作業系統當成一個process
- Type-2: 託管(hosted) hypervisors
- Hypervisor運行在host的作業系統上,再去提供虛擬化服務
- 如:
VMware<http://en.wikipedia.org/wiki/VMware_Workstation>、VirtualBox<http://en.wikipedia.org/wiki/VirtualBox>
- 如:
- Hypervisor運行在host的作業系統上,再去提供虛擬化服務
- 比較:
- Type-1: 有較高的安全性及可靠性,但因直接運行於硬體上,所以時常為single purpose
- Type-2: 支援較多的I/O device及服務,且較易安裝及使用,但效能較Type-1低,常應用於效率較不重要的客戶端
虛擬化指令(ARM)
虛擬化定理 (Virtualization theorems) …………………………………………………………………….. - 定理:對於任何傳統的第三代計算機,只要其敏感指令是特權指令的一個子集,就可以為其建立VMM (from Wiki) - 原本由OS在kernel mode執行的敏感指令,因OS被移到user mode而無法正常執行,所以需要被trap 給 hypervisor來執行。
特權指令 (Privileged instructions): 若執行在user mode 會觸發trap
控制敏感指令 (Control sensitive instructions): 會改變處理器組態或模式的指令
行為敏感指令 (Behavior sensitive instructions): 其行為取決於處理器的狀態
問題指令(Problematic Instructions) ……………………………… - Type I: 在user mode執行會產生未定義的指令異常 - MCR、MRC: 需要依賴協處理器(coprocessor)
- Type II: 在user mode執行會沒有作用
- MSR、MRS: 需要操作系統暫存器
- Type III: 在user mode執行會產生不可預測的行為
- MOVS PC, LR: 返回指令,改變PC並跳回user mode,在user mode執行會產生不可預測的結果
CPU virtualization
Xvisor ……………………………
Memory virtualization
“virtual” virtual memory ………………………..
ARM Virtualization extension ……………………………
Xvisor ……………………………
device virtualization
virtio ………………………..
設計文件整理
原文: https://github.com/xvisor/xvisor/blob/master/docs/DesignDoc
Modeling Virtual Machine
- 何謂VM(virtual machine),通常分為兩種
- system virtual machine: support the execution of a complete OS
- process virtual machine: support a single process
- Xvisor為硬體系統的虛擬化軟體,可直接運行於主機機器,為Native/Type-1的Hypervisor/VMM
system virtual machine通常稱為guest,而guest裏的CPU稱為VCPU(Virtual
CPU),VCPU又可分為兩種
- 屬於Guest的稱為 Normal VCPU
- 不屬於任何Guest的稱為 Orphan VCPU (Orphan VCPU是為了不同的背景程序及運行中的管理daemon而建立的)
- 當今CPU至少有兩種privilege mode:
- User mode為最低特權,運行Normal VCPUs
- Supervisor mode為最高特權,運行Orphan VCPUs
- Xvisor當執行various background process和執行management daemons使用Orphan VCPUs
下圖為Xvisor的System Virtual Machine Model
.. image:: /embedded/xvisor_model.png
reference
- http://www.slideshare.net/jserv/xvisor
- https://github.com/xvisor/xvisor/blob/master/docs/DesignDoc
- https://samlin.hackpad.com/Xvisor–chtGSqPYWG8
- http://www.slideshare.net/badaindonesia/linux-on-arm-64bit-architecture?related=1
ARMv8-A_Architecture_Reference_Manual_(Issue_A.a) (需登入)<http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0487a.e/index.html>_A Virtualization Infrastructure that Supports Pervasive Computing.<http://165.193.233.120/files/pdf/partners/academic/vmware-pervasive-computing_LRudolph-en.pdf>_A Choices Hypervisor on the ARM architecture<http://www.russellgreenspan.com/software/A%20Choices%20Hypervisor%20on%20the%20ARM%20Architecture.pdf>_Extensions to the ARMv7-A architecture<http://www.hotchips.org/wp-content/uploads/hc_archives/hc22/HC22.23.220-1-Brash-ARMv7A.pdf>_前瞻 資訊科技 - 虛擬化 (1) - Virtualization( V12N ). 薛智文 教授<http://www.slideserve.com/quynn-dickson/cwhsueh-csie-ntu-tw-csie-ntu-tw-cwhsueh>_前瞻 資訊科技 - 虛擬化 (2) - Virtualization( V12N ). 薛智文 教授<http://www.slideserve.com/candid/cwhsueh-csie-ntu-edu-tw-http-www-csie-ntu-edu-tw-cwhsueh-100-fall-nov-4-fri-678-dth-104>_An Overview of Microkernel, Hypervisor and Microvisor Virtualization Approaches for Embedded Systems, Asif Iqbal, Nayeema Sadeque and Rafika Ida Mutia, Lund University, Sweden<http://www.eit.lth.se/fileadmin/eit/project/142/virtApproaches.pdf>_Hardware accelerated Virtualization in the ARM Cortex™ Processors<http://www-archive.xenproject.org/files/xensummit_seoul11/nov2/2_XSAsia11_JGoodacre_HW_accelerated_virtualization_in_the_ARM_Cortex_processors.pdf>_Popek and Goldberg virtualization requirements<http://en.wikipedia.org/wiki/Popek_and_Goldberg_virtualization_requirements>_
