歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 虛擬化方法、架構和實現

Linux 虛擬化方法、架構和實現

日期:2017/2/28 16:48:53   编辑:Linux教程

虛擬化的含義豐富,應用廣泛。服務器虛擬化是目前一個主要的虛擬化技術,即在一個宿主計算機上提供多個獨立操作系統。本文將探索虛擬化背後的思想,然後討論實現虛擬化的一些技術。我們還將了解現有的其他一些虛擬化技術,例如 Linux 上操作系統的虛擬化。

  進行虛擬化 就是要將某種形式的東西以另外一種形式呈現出來。對計算機進行虛擬化就是要將計算機以多台計算機或一台完全不同的計算機的形式呈現出來。

  虛擬化也可以將多台計算機組合成一台計算機的形式呈現出來。這通常稱為服務器聚合或網格計算。

  下面讓我們首先來看一下虛擬化的起源。

  虛擬化的歷史

  虛擬化並不是什麼新主題;實際上,它的存在已經超過 40 年了。虛擬化技術最早的一些用法包括 IBM? 7044、麻省理工學院(MIT)在 IBM 704 上開發的 CTSS(Compatible Time Sharing System)以及曼徹斯特大學的 Atlas 項目(世界上最早的超級計算機之一),這些都是請求頁面調度和監管進程調用的先驅。

  硬件虛擬化

  IBM 早在 20 世紀 60 年代開發 System/360? Model 67 大型機時就認識到了虛擬化的重要性。Model 67 通過 VMM(Virtual Machine Monitor)對所有的硬件接口都進行了虛擬化。在早期計算中,操作系統被稱為 supervisor。能夠在其他操作系統上運行的操作系統被稱為 hypervisor(這個術語是在 20 世紀 70 年代出現的)。

  VMM 可以直接在底層硬件上運行,允許運行多個虛擬機(VM)。每個 VM 都可以運行一個自己私有操作系統的實例 -- 在早些時候,這稱為 CMS(或 Conversational Monitor System)。之後 VM 繼續發展,現在您可以在 System z9? 大型機上發現 VM。這提供了很好的向後兼容性,甚至是對 System/360 產品線的兼容性。

  處理器虛擬化

  虛擬化早期的另外一種用法(在本例中是對處理器的仿真)是 P-code(或偽碼)機。P-code 是一種機器語言,運行於虛擬機而不是實際硬件。P-code 早在 20 世紀 70 年代就已在加州大學聖地亞哥分校(UCSD)Pascal 系統上頗有名氣了,它將 Pascal 程序編譯成 P-code,然後在一個 P-code 虛擬機上運行。這就使 P-code 程序具有了高度的可移植性,而且,只要有可用的 P-code 虛擬機,P-code 程序就可以運行。

  20 世紀 60 年代對 BCPL(Basic Combined Programming Language)的設計中也采用了相同的概念,C 語言即由 BCPL 發展而來。在這種用法中,編譯器會將 BCPL 代碼編譯成稱為 O-code 的中間機器代碼。接下來的第二個步驟是將 O-code 編譯成目標機器的原始語言。現代編譯器所使用的這種模型為將編譯器移植到新目標體系結構上提供了很大的靈活性(通過一種中間語言將前端和後端分隔開來)。

  指令集虛擬化

  虛擬化最新的發展稱為指令集虛擬化,或者二進制轉換。在這種模型中,虛擬指令集被轉換成底層硬件的物理指令集,這個過程通常都是動態的。當代碼執行時,就會對代碼的某個段進行轉換。如果出現分支情況,就會導入新代碼集並進行轉換。這使它與緩存操作非常類似,後者是將指令塊從內存移動到本地快速緩存中執行。

  這種模型最近在 Transmeta 設計的 Crusoe 中央處理單元(CPU)中得到了使用。二進制轉換由 Code Morphing 的專利技術實現。類似的一個例子是完全虛擬化解決方案通過運行時代碼掃描來查找和重定向特權指令(用來解決特定處理器指令集的一些問題)。

Copyright © Linux教程網 All Rights Reserved