virtual machine

1)虛擬機是什麼?“虛擬機”的概念其實很廣,最常見的有以下兩種虛擬機,第一種是模擬“裸機”運行的虛擬機,這樣的虛擬機有VMWAREVirturePC,Bochs等,另一種是模擬操作系統運行情況的虛擬機,這樣的虛擬機有Wine,JVM(java虛擬機)。其實,虛擬機就是一箇中間層,可以理解爲是兩種環境的橋樑,如果把虛擬機的概念抽象一點描述,可以認爲虛擬機是在某一個環境上模擬另一種環境運行情況的軟件,這樣的環境可以是不同的cpu,不同的os....等等。
2) 這裏選擇的是兩個非常簡單的虛擬機,一個是<<編譯原理與實踐>>一書中自帶的TM虛擬機,另一個是<<程序員>>雜誌2003年第六期裏的一篇文章<<一個小型虛擬機的實現>>中實現的虛擬機,兩者都有一個共同點,就是兩者都是在彙編語言級別虛擬cpu運行情況的虛擬機,正因爲這兩個虛擬機的如此定位,所以在實現或者閱讀這兩個虛擬機的時候,你不得不從cpu的角度去思考問題,你必須對cpu的運行情況有了解,反過來說,閱讀這兩個虛擬機的源碼也可以加深對cpu工作原理以及彙編語言的理解。這兩個虛擬機的源碼都可以在網上找到,前者在http://www.mathcs.sjsu.edu/faculty/louden/cmptext/,而後者可以在CSDN的網站上查找2003年第六期的源碼。值得一提的是,CS:APP(<<深入理解計算機系統>>)一書中也有一章專門講述CPU的運行原理,而且作者也自己實現了一個CPU,而且還是流水線型,所以這個虛擬機功能更酷也更加強大,因爲作者自己定義了一種硬件語言來描述cpu,最後還有在這種cpu支持的彙編指令,在有Tcl/Tk的環境下還帶有圖形界面,非常直觀,可以在http://csapp.cs.cmu.edu/public/students.html裏的Chapter 4:Processor Architecture中找到源代碼。

3)設計一個彙編語言級別的虛擬機的要求
學習過計算機原理的人都知道,一個cpu至少需要有以下幾個部件:a)內存,裝載所要執行的指令之用;b)寄存器;3)指令集,沒有指令集執行指令就無從談起。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章