虛擬機(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 。
百媒鏈談合作↓