虛擬主機 - Virtual Machines
QEMU
OpenVZ
TN5250j
VirtualBox
VMWare Player
VMWare Server
Xen
虛擬機器
維基百科,自由的百科全書
虛擬機(virtual machine),在電腦科學中的體系結構裡,是指一種特殊的軟體,他可以在電腦平臺和終端用戶之間建立一種環境,而終端用戶則是基於這個環境來操作軟體。在電腦科學中,虛擬機是指可以像真實機器一樣運行程序的電腦的軟體實現。定義
虛擬機最初由Popek and Goldberg定義為有效的、孤立的真實機器的副本。當前包括跟任何真實機器無關的虛擬機。[1]
例子: 用Java編寫的程序可以通過對Java運行環境(JRE)軟體發命令獲得服務,取得期望的結果。能過提供這種服務,Java軟體起到了虛擬機的作用。程序不必為特定的作業系統或硬體編寫。
虛擬機根據它們的運用和與直接機器的相關性分為兩大類。系統虛擬機提供一個可以運行完整作業系統的完整的系統平臺。相反,進程虛擬機為運行單個電腦程序設計,這意味它支持單個進程。虛擬機的一個本質特點是運行在虛擬機上的軟體被侷限在虛擬機提供的資源裡--它不能超出虛擬世界。
硬體的模擬
基於這種虛擬機,用戶可以運行任何作業系統,比如可以在他們「個人的」虛擬電腦上運行兩個不同的作業系統(也被稱為「訪客(guests)」)。這樣的話,新版的實驗性作業系統就可以與舊版的較穩定版本一同在單獨的虛擬機上運行。這個過程甚至可以重複(recursive);IBM就在運行於舊版的虛擬機上的虛擬機上調試它新版的虛擬機作業系統,VM。
這個概念的一個早期使用者就是IBM的VM/CMS time-sharing產品,該產品使用的互動式計算單用戶作業系統,CMS,相對來說比較簡單,運行於VM上。通過這種方式,CMS編寫起來就比較簡單,就好像只有它一個在運行一樣,VM作業系統就在幕後提供多任務以及資源管理服務。
當然,不是每個VM用戶都必須運行CMS;有些用戶選擇在一個或者多個虛擬機上運行某種OS/360(或者MVS),來提供傳統上的批處理服務。今天,IBM大型機還在使用VM,許多虛擬機上運行的是Linux作業系統。
VMware、twoOStwo以及SVISTA軟體包在現代PC上都在處理類似截獲硬體訪問,模擬除了處理器以外的任何主板上的器件的事情。
plex86屬於另外一種情況,它使用特定的打過補丁的核心,只能運行於Linux下,而且只能在其之上運行Linux。因此,它不是模擬處理器,它利用bochs來模擬主板設備。
現代PC使用的x86處理器架構其實並不能滿足Popek和Goldberg虛擬化要求。很明顯,這種架構缺少所有特權機器指令都會產生異常的模式,而這種模式可以做到單指令的虛擬化。這導致VMware或類似的x86虛擬軟體必須動態地重新編譯特權模式代碼。這種虛擬技術和運行於如IBM System/370、Motorola MC68020的原生態可虛擬架構上的VM相比,就會多出一些性能上的開銷。Intel和AMD都聲稱計劃給未來的x86處理器加入x86虛擬化能力。
非原生系統的模擬
Some of this class of virtual machines are emulators; these allow software written for one machine to run on another. Emulation for computer systems can include emulation for both different machine architectures, and operating systems.
Others produce behaviors and capabilities of a machine that doesn't necessarily exist as an actual piece of hardware but may only be a detailed specification. For example, the p-Code machine specification (one of the first, used for support of Pascal) was a description of a specific set of capabilities and behaviors that programmers could use to write programs that would run on any computer running virtual machine software that correctly implemented the specification.
More modern examples include the specification of the Java virtual machine and the Common Language Infrastructure virtual machine at the heart of the Microsoft .NET initiative.
These allow diverse computers all to run software written to that specification; the virtual machine software itself must be written separately for each type of computer on which it runs.
虛擬機器列表
虛擬軟體的更多描述
下列的軟體產品可以用來虛擬硬體,故可用於各種作業系統之上。
- Adeos 是一種硬體抽象層(Hardware Abstraction Layer) 可被當成 Kernel Module 載入至 Linux. It allows the loading of a real-time kernel as a module, at the same time as Linux but with higher priority.
- Denali 作業系統使用準假想化(paravirtualisation) 技術來提升虛擬機器在x86平臺上的高效能. Denali's virtual machines support specialised minimal OSs for Internet services. The system can scale to thousands of virtual machines. Denali does not preserve the application binary interface (ABI), and so applications must be recompiled to run within a library operating system; in this sense it is similar to the Exokernel.
- OKL4 uses the open-source L4 microkernel as a hypervisor to provide a high-performance virtualization solution for embedded systems.
- OpenVZ - Operating System-level server virtualization solution, built on Linux.
- Parallels provides virtualization of x86 for running unmodified PC operating systems. It also uses a lightweight hypervisor technology in order to improve security and to increase the efficiency. Parallels has become popular for its ability to run Windows as a guest under Mac OS X on the Apple-Intel architecture.
- QEMU is a simulator based on a virtual machine, which gives it the ability to emulate a variety of guest CPU architectures on many different host platforms.
- Virtual Iron 提供x86 平臺的虛擬機器that run unmodified operating systems, such as Windows, Red Hat and SUSE. Virtual Iron open source virtualization technology implements native virtualization, which delivers near-native performance for x86 operating systems.
- Virtuozzo replaces the hardware abstraction layer with a modified version enabling it to run with better performance of the OS, but forces all the VMs on a hardware box to all run the same OS, with some flexibility to support various Linux distributions on the same server. Currently they have a version for Windows 2003 and for Linux. OpenVZ is a related open-source project providing similar functionality for Linux.
- VMware provides virtual machines for x86 that can run unmodified PC operating systems. The technology involved in doing this is complex and also incurs (sometimes significant) performance overheads with hosted VMware products (VM Server and Workstation). ESX server provides near-native performance and a fully virtualized option (along with para-virtualization of some hardware components). Xen trades running of existing operating systems for running modified (paravirtualized) operating systems with improved performance. Virtual Iron provides full OS compatibility for existing or new OSes with near-native performance without the performance trade-offs between paravirualization and binary translation.
- Xen Virtualization system whose motivation differs from that of Denali in that it is intended to run a moderate number of full-featured operating systems, rather than a large number of specialised, lightweight ones.
- KVM 是一種 Linux kernel模組,可以修正 QEMU program 使之可使用硬體虛擬實境 (hardware virtualization).
參看
- ^ Smith, Daniel E.,Nair, Ravi. 「The Architecture of Virtual Machines」.Computer.38(5):32–38.DOI:10.1109/MC.2005.173.
- Gerrit Blaauw (A significant designer of the IBM/360, an early virtual computing architecture)
- Threaded code (A common implementation technique for application virtual machines)
- Computing
- LLVM (The University of Illinois's Low Level Virtual Machine, a compiler toolset)
沒有留言:
張貼留言