什麼是虛擬機 Virtual Machine ?

2021-03-02 鏈天下官微

虛擬機(VM)於20世紀60年代誕生。 這篇我們將回答以下問題:什麼是VM? 為什麼人們需要虛擬機?虛擬機在區塊鏈項目中扮演什麼角色?

那麼,虛擬機到底是什麼? 最早出現在計算機世界中時,VM 的定義是真實計算機的副本。

但VM實際上有不同的種類。 第一種稱為 System VM ,系統虛擬機(也稱為完全虛擬化虛擬機),它可以替代硬體機器。我們可以在上面運行未經修改的作業系統,如 Linux 或 Windows 。 VirtualBox 和 VMware Server 就屬於這類虛擬機,也是大家比較熟悉的。第二種是 Process VM,進程 VM ,它被設計為在獨立於平臺的環境中執行電腦程式。 眾所周知的 JVM 就是這種類型,我們可以在 JVM 上運行 Java 程序。

Host 是一個跟 VM 緊密相關的概念。VM 畢竟是軟體,所以必須要有真正的機器來運行它。上面運行了 VM 的真實機器,就叫做 Host ,宿主機。

總而言之,VM 個運行在真實機器上的軟體,提供作業系統(在系統VM的情況下)或應用程式(在進程 VM的情況下)的運行環境。

什麼是 VM 聊完了,下面來聊 VM 能幹些什麼事。

第一個使用場景。當我的硬體 CPU 是 A 架構的,但是我要運行的程序只能在 B 架構的 CPU 上運行, VM 就會派上用場。

第二個使用場景。當我只能買得起一臺計算機,但是需要同時運行多個作業系統。比如,我在我的硬體機器上安裝了Linux 桌面版,現在我想要運行 Linux 伺服器來託管我的 Web 應用,還需要一個 Windows 來測試 Web 應用。這樣,我就可以選擇一個可以安裝到 Linux 上的 VM 軟體,比如 Virtual Box,把它安裝到我的電腦上,然後啟動兩個 VM 實例就可以運行我需要的另外兩個作業系統了。

第三個使用場景。讓我的程序可以在各種平臺上運行。 為了不用給每個平臺都寫一個版本的代碼並且專門編譯一下, 我需要在每個作業系統之上添加一層來磨平平臺差異,這時候 VM 就可以作為這一層來使用。比如,我只要編寫一次 Java 程序,然後就可以在安裝了 JVM 的任何平臺上運行程序了。

VM 在實際工作中被廣泛使用,以上其實還不是所有情形。

VM 在區塊鏈領域也很常用。

如果你也搞區塊鏈,所以大概率是已經知道以太坊虛擬機(EVM)了。EVM 可以讓我們在以太坊上運行智能合約。 大家可以在 EVM 上運行用一種名為 Solidity 的語言編寫的程序。這讓我們想起了剛才提到的 JVM ,JVM 和 EVM 都是進程 VM。

Nervos CKB 區塊鏈也有自己的 VM,名為 CKB-VM 。CKB-VM 運行智能合約的方式跟 EVM 不一樣。CKB-VM不為特定高級語言編寫的程序提供支持,而是一個模仿 RISC-V CPU 硬體的 System VM。[RISC-V](https://zhuanlan.zhihu.com/p/53565685)是一個開源 CPU 架構。 這種方式的好處是,可以用我們想要的任何高級程式語言寫智能合約,然後將它編譯為 RISC-V CPU 的二進位格式,就可以運行了。挺 Cool 的。

現在對區塊鏈上的虛擬機原理是不是清晰了一些了呢。

總結


關於 VM ,主體內容就是這些了。總結一下,VM 分為兩種,系統 VM 和進程 VM 。 EVM 可以歸類為進程 VM ,CKB-VM 則屬於系統 VM 。

百媒鏈談合作↓

相關焦點

  • 虛擬機管理器(Virtual Machine Manager)簡介 | Linux 中國
    在我關於 GNOME Boxes 的系列文章中,我已經解釋了 Linux 用戶如何能夠在他們的桌面上快速啟動虛擬機。當你只需要簡單的配置時,Box 可以輕而易舉地創建虛擬機。但是,如果你需要在虛擬機中配置更多詳細信息,那麼你就需要一個工具,為磁碟、網卡(NIC)和其他硬體提供全面的選項。
  • 虛擬機(virtual machine)
    虛擬機技術最早由 IBM 於上世紀六七十年代提出,被定義為硬體設備的軟體模擬實現,通常的使用模式是分時共享昂貴的大型機。虛擬機監視器(Virtual Machine Monitor,VMM)是虛擬機技術的核心,它是一層位於作業系統和計算機硬體之間的代碼,用來將硬體平臺分割成多個虛擬機。
  • 虛擬機是什麼?
    虛擬機概念(virtual machine machine)是一種說明計算機硬體和軟體關係的有效方法。
  • Linux下如何判斷伺服器是虛擬機還是物理機?
    有時候我們拿到一臺設備,因為不是自己的,不清楚是虛擬機還是物理機,那想判斷是虛擬機還是物理機怎麼辦呢?
  • Hyper-V虛擬機自動添加檢查點和導出備份
    虛擬化的最大優勢之一是能夠輕鬆地保存虛擬機的狀態。如果各個系統或環境都需要獨立備份,這是一個很大的工作量,先不說全量備份和差異備份的方式,單單就各自的備份處理實現就是一個很麻煩的事情。而基於虛擬機,我們僅需通過檢查點保存虛擬機的狀態即可。
  • 群暉Virtual Machine Manager套件安裝CentOS虛擬機
    最近一直在折騰伺服器的相關環境測試,經常需要在雲服務商重置系統硬碟,實在太麻煩.想起群暉的Virtual Machine Manager早已經正式發布,於是就在群暉上安裝多個CentOS虛擬機隨時可以使用,非常方便.    本文將詳解如何使用Virtual Machine Manager套件安裝Linux CentOS虛擬機,並配置網絡環境.
  • 容器技術|Docker三劍客之docker-machine
    Docker-machine是什麼?ocker-machine就是docker公司官方提出的,用於在各種平臺上快速創建具有docker服務的虛擬機的技術,甚至可以通過指定driver來定製虛擬機的實現原理(一般是virtualbox)。
  • Docker Machine 簡介
    Docker Machine 是 Docker 官方提供的一個工具,它可以幫助我們在遠程的機器上安裝 Docker,或者在虛擬機 host 上直接安裝虛擬機並在虛擬機中安裝 Docker。我們還可以通過 docker-machine 命令來管理這些虛擬機和 Docker。下面是來自 Docker Machine 官方文檔的一張圖,很形象哦!
  • 聽說你想寫個虛擬機(一)?
    近日,看到一些動手寫虛擬機的文章。看過之後,覺得收穫很大,突然覺得原來虛擬機並沒那麼的深不可測,背後的思想還挺簡單。因此,就想著寫一篇文章來記錄和分享一下,希望能給和我有著同樣困擾的同學一點點幫助。虛擬機是什麼虛擬機是什麼?聽起來高深莫測,其實背後的原理很簡單。
  • docker三劍客--Machine
    它可以幫助我們在遠程的機器上安裝 Docker,或者在虛擬機 host 上直接安裝虛擬機並在虛擬機中安裝 Docker。我們還可以通過  docker-machine  命令來管理這些虛擬機和 Docker。也可以集中管理所有的 docker 主機,比如快速的給 100 臺伺服器安裝上 docker(類似於ansible功能,後面會寫到)。
  • FireEye發布用於威脅情報分析的虛擬機工具
    近日,著名安全廠商火眼發布了一款用於威脅情報分析的虛擬機,事實上就是將大量分析需要使用的工具集成在一個windows系統中,並將安裝腳本發布到了
  • 用OpenStack界面輕鬆創建虛擬機的你,看得懂虛擬機啟動的這24個參數麼?
    Qemu,KVM,Virsh傻傻的分不清裸用KVM創建虛擬機,體驗virtualbox為你做的10件事情大家從OpenStack頁面上,輕鬆一點就創建了一個虛擬機,但是當你登陸到一臺物理機上ps查看的時候,卻發現參數複雜之極。
  • (圖文)嘗試為VSAN裡丟失*.vmdk的虛擬機執行恢復動作
    運行在VSAN裡的虛擬機可能由於遷移失敗的問題導致系統提示類似如下所示錯誤提示:Migrate virtual machine xxxx
  • VMware vSphere 6.5 安裝部署(六)- 創建和管理虛擬機4
    上一章節描述了如何模板、自定義配置文件和克隆虛擬機的相關信息,此章節將描述如何修改虛擬機,在虛擬機創建時,或者說業務初期無法準確的估計出需要的資源
  • 【知識分享】 Python三大神器之Virtualenv
    認識Python三大神器之 virtualenv2. 測試計算機中是否有合適的virtualenv版本(在命令提示符中輸入)i. virtualenv (驗證你是不是使用了最新版的神器)ii. python -m venv (驗證你是不是安裝神器)iii. pyvenv(證明,你的版本比較低)3.
  • 虛擬機的介紹及安裝使用
    虛擬機技術最早由 IBM 於上世紀六七十年代提出,被定義為硬體設備的軟體模擬實現,通常的使用模式是分時共享昂貴的大型機。 虛擬機監視器(Virtual Machine Monitor,VMM)是虛擬機技術的核心,它是一層位於作業系統和計算機硬體之間的代碼,用來將硬體平臺分割成多個虛擬機。
  • VMware虛擬機安裝Linux系統(詳解版)
    然而,通過虛擬機技術很容易衝破這種困境。由於虛擬機安裝 Linux 所有的操作(例如硬碟分區、刪除或修改數據)都是在虛擬硬碟中進行,因此不會對現有的數據和系統造成任何損失,即使安裝失敗了也無所謂。所謂虛擬機(virtual machine),就是通過軟體技術虛擬出來的一臺計算機,它在使用層面和真實的計算機並沒有什麼區別。