x86虛擬化
虛擬化技術是指在x86的系統中,一個或以上的客作業系統(Guest Operating System,簡稱:Guest OS)在一個主作業系統(Host Operating System,簡稱:Host OS)下執行的一種技術。這種技術只要求對客作業系統有很少的修改或甚至根本沒有修改。x86指令集架構起先並不滿足波佩克與戈德堡虛擬化需求(Popek and Goldberg virtualization requirements),這使得在x86處理器下對普通虛擬機器的操作變得十分複雜。在2005年,英特爾與AMD分別在它們的x86架構上解決了這個問題。
軟件技術
[編輯]1999年2月8日,VMware展示了它的第一個x86虛擬化產品「VMware虛擬平台」(VMware Virtual Platform),此產品建立在建立者早期在史丹福大學的研究基礎之上。VMware在1998年10月提交了對這一技術的專利申請,並於2002年5月28日被授予美國專利第6,397,242號。VMware與類似的x86虛擬化軟件必須使用十分複雜的技術來獲得並虛擬執行一些指令,這些技術被IBM的IBM_System/370 (頁面存檔備份,存於互聯網檔案館)以及摩托羅拉的MC68020等原生可虛擬化的架構遠遠超出。
Kevin Lawton啟動了Plex86專案(原來叫作「freemware」)來建立套用於x86虛擬化的自由軟件。此專案已經改變了原有的目的,現在只支援Linux作為客作業系統;然而在這之前,Lawton發表了一篇論文《使用虛擬化技術在一台IA-32 PC上同時執行多個作業系統》,作出了對x86架構虛擬化困難的分析以及提出了一些解決這些困難的技術。
2003年,套用於Linux平台的x86虛擬化方案Xen誕生。2005年,隨着Intel推出支援x86虛擬化技術的CPU,Xen亦加入全虛擬化模式。Xen的全虛擬化模式允許在虛擬機器中執行Windows等非Linux系統。
微軟也提供了基於Windows的x86虛擬化產品:Microsoft Virtual PC與Microsoft Virtual Server,這兩個產品都基於微軟收購Connectix後獲得的技術。後來,微軟的Microsoft Virtual PC更名為Hyper-V並成為Windows的一個組件,亦曾推出Windows XP Mode以儘可能的解決Windows 7作業系統不支援某些老應用程式的問題。
開放原始碼的替代品也包括KVM、QEMU與VirtualBox。
硬件支援
[編輯]英特爾與AMD獨立地開發出了x86架構的虛擬化擴充。它們並不直接相容,但是能夠做到大部份的功能都相同。這兩個擴充都允許在虛擬的效能不出現明顯下降時執行一個虛擬機器檢視器,以執行未經過修改的客作業系統。
英特爾虛擬化技術
[編輯]英特爾虛擬化技術(Intel Virtualization Technology)是由英特爾開發的一種虛擬化技術,利用IVT可以對在系統上的作業系統,通過虛擬機器檢視器(VMM,Virtual Machine Monitor)來虛擬一套硬件裝置,以供虛擬機器作業系統使用。
這些技術以往在VMware與Virtual PC上都通過軟件實現,而通過IVT的硬件支援可以加速此類軟件的進行。
英特爾在32位元與64位元x86架構下的虛擬化擴充被命名為「IVT」,有時候也用它的開發代號「Vanderpool」來稱呼它。32位元/64位元的IVT擴充叫作「VT-x」。[1]英特爾同時為用於IA-64(安騰2)處理器的IVT發佈了規格說明,此項IVT被稱為「VT-i」;[1]在這之前,IA-64的虛擬化技術的開發代號是「Silverdale」。
英特爾虛擬化技術是在2005年春季英特爾科技論壇時由官方發佈的。部份型號的Pentium 4/Pentium D/Core 2/Pentium Dual-Core/Celeron/Xeon可用VT-x。Intel Core i3/i5/i7/i9可用SLAT。
VT-x不僅需要處理器的支援,也需要晶片組、BIOS的支援[2][3]。
在Linux中,支援虛擬化的英特爾處理器會在一個特別檔案/proc/cpuinfo中有一個名為「vmx」的標誌。
Intel還推出了「直接輸入/輸出虛擬化」(Virtualization for Directed I/O,VT-d)技術。這項技術提供了一種組態傳送給獨立虛擬機器的中斷與組態I/O主記憶體單元的方式,以防止虛擬機器使用DMA來終止與真實硬件的隔離。 不過值得注意的是,該功能在Core系列以及Xeon E3、Xeon D系列中並不完整。 [4]
AMD虛擬化
[編輯]AMD虛擬化(AMD Virtualization),縮寫為「AMD-V」,是AMD為64位元的x86架構提供的虛擬化擴充的名稱,但有時仍然會用「Pacifica」(AMD開發這項擴充時的內部專案程式碼)來指代它。
AMD-V在AMD的步進為「F」與「G」的Athlon64以及Athlon64 X2處理器,使用Socket S1的Turion64處理器、Turion64 X2處理器、Phenom處理器,以及全部更新的處理器上可用。現在的AMD APU、AMD FX、AMD Athlon、AMD Ryzen、AMD Epyc等AMD處理器絕大多數都支援AMD SVM技術。
在Linux中,支援虛擬化的AMD處理器會在一個特別檔案/proc/cpuinfo中有一個名為「svm」的標誌。
AMD為一項名為AMD-V的IO主記憶體管理單元(IOMMU)發佈過一份技術規範。這份技術規範提供了一種組態傳送給獨立虛擬機器的中斷與組態I/O主記憶體單元的方式,以防止虛擬機器使用DMA來終止與真實硬件的隔離。IOMMU在進階的作業系統(如缺席虛擬化,absent virtualization)與AMD的Torrenza架構中起到了重要的作用。
AMD亦有I/O虛擬化的IOMMU技術。
Windows Vista
[編輯]起初Windows Vista的家用入門版與家用進階版在終端使用者授權合約中聲明,該系統不能夠在一台虛擬機器中安裝或執行,儘管在技術上並沒有障礙使得使用者無法這樣做。這一條款在2008年1月時被修改了。[6]
參考文獻
[編輯]- ^ 1.0 1.1 Intel Virtualization Technology. Intel. [2008-01-23]. (原始內容存檔於2012-10-25).
- ^ Intel Processors Supporting VT. Xen Source. [2008-01-23]. (原始內容存檔於2013-04-28).
- ^ Intel Pentium 4 Processor 6xx Sequence and Intel Pentium 4 Processor Extreme Edition Datasheet. Intel. [2008-01-23]. (原始內容存檔於2008-12-22).
- ^ Re: [vfio-users] IOMMU group question - different pcie slots gives different configuration. Red Hat. [2019-12-06]. (原始內容存檔於2019-07-25).
- ^ https://medium.com/@9to5tech/laptops-under-40000-843e6d0b2aa6
- ^ Microsoft relents: Vista consumer virtualization ban lifted. [2008-01-23]. (原始內容存檔於2008-09-17).