導航:首頁 > 綜合知識 > 虛擬機是什麼

虛擬機是什麼

發布時間:2022-07-06 14:40:25

Ⅰ 什麼叫虛擬機

什麼是虛擬機?

虛擬機的概念比較寬泛,通常人們接觸到的虛擬機概念有VMware那樣的硬體模擬軟體,也有JVM這樣的介於硬體和編譯程序之間的軟體。這里所指的是後者。
虛擬機是一個抽象的計算機,和實際的計算機一樣,具有一個指令集並使用不同的存儲區域。它負責執行指令,還要管理數據、內存和寄存器。這台虛擬的機器在任何平台上都提供給編譯程序一個的共同的介面。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。

Java虛擬機

一、什麼是Java虛擬機

Java虛擬機是一個想像中的機器,在實際的計算機上通過軟體模擬來實現。Java虛擬機有自己想像中的硬體,如處理器、堆棧、寄存器等,還具有相應的指令系統。

1.為什麼要使用Java虛擬機

Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,把位元組碼解釋成具體平台上的機器指令執行。

2.誰需要了解Java虛擬機

Java虛擬機是Java語言底層實現的基礎,對Java語言感興趣的人都應對Java虛擬機有個大概的了解。這有助於理解Java語言的一些性質,也有助於使用Java語言。對於要在特定平台上實現Java虛擬機的軟體人員,Java語言的編譯器作者以及要用硬體晶元實現Java虛擬機的人來說,則必須深刻理解Java虛擬機的規范。另外,如果你想擴展Java語言,或是把其它語言編譯成Java語言的位元組碼,你也需要深入地了解Java虛擬機。

3.Java虛擬機支持的數據類型

Java虛擬機支持Java語言的基本數據類型如下:

byte://1位元組有符號整數的補碼
short://2位元組有符號整數的補碼
int://4位元組有符號整數的補碼
long://8位元組有符號整數的補碼
float://4位元組IEEE754單精度浮點數
double://8位元組IEEE754雙精度浮點數
char://2位元組無符號Unicode字元

幾乎所有的Java類型檢查都是在編譯時完成的。上面列出的原始數據類型的數據在Java執行時不需要用硬體標記。操作這些原始數據類型數據的位元組碼(指令)本身就已經指出了操作數的數據類型,例如iadd、ladd、fadd和dadd指令都是把兩個數相加,其操作數類型別是int、long、float和double。虛擬機沒有給boolean(布爾)類型設置單獨的指令。boolean型的數據是由integer指令,包括integer返回來處理的。boolean型的數組則是用byte數組來處理的。虛擬機使用IEEE754格式的浮點數。不支持IEEE格式的較舊的計算機,在運行Java數值計算程序時,可能會非常慢。

虛擬機支持的其它數據類型包括:
object//對一個Javaobject(對象)的4位元組引用
returnAddress//4位元組,用於jsr/ret/jsr-w/ret-w指令
注:Java數組被當作object處理。

虛擬機的規范對於object內部的結構沒有任何特殊的要求。在Sun公司的實現中,對object的引用是一個句柄,其中包含一對指針:一個指針指向該object的方法表,另一個指向該object的數據。用Java虛擬機的位元組碼表示的程序應該遵守類型規定。Java虛擬機的實現應拒絕執行違反了類型規定的位元組碼程序。Java虛擬機由於位元組碼定義的限制似乎只能運行於32位地址空間的機器上。但是可以創建一個Java虛擬機,它自動地把位元組碼轉換成64位的形式。從Java虛擬機支持的數據類型可以看出,Java對數據類型的內部格式進行了嚴格規定,這樣使得各種Java虛擬機的實現對數據的解釋是相同的,從而保證了Java的與平台無關性和可
移植性。

二、Java虛擬機體系結構

Java虛擬機由五個部分組成:一組指令集、一組寄存器、一個棧、一個無用單元收集堆(Garbage-collected-heap)、一個方法區域。這五部分是Java虛擬機的邏輯成份,不依賴任何實現技術或組織方式,但它們的功能必須在真實機器上以某種方式實現。

1.Java指令集

Java虛擬機支持大約248個位元組碼。每個位元組碼執行一種基本的CPU運算,例如,把一個整數加到寄存器,子程序轉移等。Java指令集相當於Java程序的匯編語言。
Java指令集中的指令包含一個單位元組的操作符,用於指定要執行的操作,還有0個或多個操作數,提供操作所需的參數或數據。許多指令沒有操作數,僅由一個單位元組的操作符構成。

虛擬機的內層循環的執行過程如下:

do{
取一個操作符位元組;
根據操作符的值執行一個動作;
}while(程序未結束)

由於指令系統的簡單性,使得虛擬機執行的過程十分簡單,從而有利於提高執行的效率。指令中操作數的數量和大小是由操作符決定的。如果操作數比一個位元組大,那麼它存儲的順序是高位位元組優先。例如,一個16位的參數存放時佔用兩個位元組,其值為:

第一個位元組*256+第二個位元組位元組碼指令流一般只是位元組對齊的。指令tabltch和lookup是例外,在這兩條指令內部要求強制的4位元組邊界對齊。

2.寄存器

Java虛擬機的寄存器用於保存機器的運行狀態,與微處理器中的某些專用寄存器類似。

Java虛擬機的寄存器有四種:
pc:Java程序計數器。
optop:指向操作數棧頂端的指針。
frame:指向當前執行方法的執行環境的指針。
vars:指向當前執行方法的局部變數區第一個變數的指針。

Java虛擬機

Java虛擬機是棧式的,它不定義或使用寄存器來傳遞或接受參數,其目的是為了保證指令集的簡潔性和實現時的高效性(特別是對於寄存器數目不多的處理器)。
所有寄存器都是32位的。

3.棧

Java虛擬機的棧有三個區域:局部變數區、運行環境區、操作數區。

(1)局部變數區 每個Java方法使用一個固定大小的局部變數集。它們按照與vars寄存器的字偏移量來定址。局部變數都是32位的。長整數和雙精度浮點數占據了兩個局部變數的空間,卻按照第一個局部變數的索引來定址。(例如,一個具有索引n的局部變數,如果是一個雙精度浮點數,那麼它實際占據了索引n和n+1所代表的存儲空間。)虛擬機規范並不要求在局部變數中的64位的值是64位對齊的。虛擬機提供了把局部變數中的值裝載到操作數棧的指令,也提供了把操作數棧中的值寫入局部變數的指令。

(2)運行環境區 在運行環境中包含的信息用於動態鏈接,正常的方法返回以及異常傳播。

·動態鏈接
運行環境包括對指向當前類和當前方法的解釋器符號表的指針,用於支持方法代碼的動態鏈接。方法的class文件代碼在引用要調用的方法和要訪問的變數時使用符號。動態鏈接把符號形式的方法調用翻譯成實際方法調用,裝載必要的類以解釋還沒有定義的符號,並把變數訪問翻譯成與這些變數運行時的存儲結構相應的偏移地址。動態鏈接方法和變數使得方法中使用的其它類的變化不會影響到本程序的代碼。

·正常的方法返回
如果當前方法正常地結束了,在執行了一條具有正確類型的返回指令時,調用的方法會得到一個返回值。執行環境在正常返回的情況下用於恢復調用者的寄存器,並把調用者的程序計數器增加一個恰當的數值,以跳過已執行過的方法調用指令,然後在調用者的執行環境中繼續執行下去。

·異常和錯誤傳播
異常情況在Java中被稱作Error(錯誤)或Exception(異常),是Throwable類的子類,在程序中的原因是:①動態鏈接錯,如無法找到所需的class文件。②運行時錯,如對一個空指針的引用

·程序使用了throw語句。
當異常發生時,Java虛擬機採取如下措施:
·檢查與當前方法相聯系的catch子句表。每個catch子句包含其有效指令范圍,能夠處理的異常類型,以及處理異常的代碼塊地址。
·與異常相匹配的catch子句應該符合下面的條件:造成異常的指令在其指令范圍之內,發生的異常類型是其能處理的異常類型的子類型。如果找到了匹配的catch子句,那麼系統轉移到指定的異常處理塊處執行;如果沒有找到異常處理塊,重復尋找匹配的catch子句的過程,直到當前方法的所有嵌套的catch子句都被檢查過。
·由於虛擬機從第一個匹配的catch子句處繼續執行,所以catch子句表中的順序是很重要的。因為Java代碼是結構化的,因此總可以把某個方法的所有的異常處理器都按序排列到一個表中,對任意可能的程序計數器的值,都可以用線性的順序找到合適的異常處理塊,以處理在該程序計數器值下發生的異常情況。
·如果找不到匹配的catch子句,那麼當前方法得到一個"未截獲異常"的結果並返回到當前方法的調用者,好像異常剛剛在其調用者中發生一樣。如果在調用者中仍然沒有找到相應的異常處理塊,那麼這種錯誤傳播將被繼續下去。如果錯誤被傳播到最頂層,那麼系統將調用一個預設的異常處理塊。
(3)操作數棧區 機器指令只從操作數棧中取操作數,對它們進行操作,並把結果返回到棧中。選擇棧結構的原因是:在只有少量寄存器或非通用寄存器的機器(如Intel486)上,也能夠高效地模擬虛擬機的行為。操作數棧是32位的。它用於給方法傳遞參數,並從方法接收結果,也用於支持操作的參數,並保存操作的結果。例如,iadd指令將兩個整數相加。相加的兩個整數應該是操作數棧頂的兩個字。這兩個字是由先前的指令壓進堆棧的。這兩個整數將從堆棧彈出、相加,並把結果壓回到操作數棧中。

每個原始數據類型都有專門的指令對它們進行必須的操作。每個操作數在棧中需要一個存儲位置,除了long和double型,它們需要兩個位置。操作數只能被適用於其類型的操作符所操作。例如,壓入兩個int類型的數,如果把它們當作是一個long類型的數則是非法的。在Sun的虛擬機實現中,這個限制由位元組碼驗證器強制實行。但是,有少數操作(操作符pe和swap),用於對運行時數據區進行操作時是不考慮類型的。

4.無用單元收集堆

Java的堆是一個運行時數據區,類的實例(對象)從中分配空間。Java語言具有無用單元收集能力:它不給程序員顯式釋放對象的能力。Java不規定具體使用的無用單元收集演算法,可以根據系統的需求使用各種各樣的演算法。

5.方法區

方法區與傳統語言中的編譯後代碼或是Unix進程中的正文段類似。它保存方法代碼(編譯後的java代碼)和符號表。在當前的Java實現中,方法代碼不包括在無用單元收集堆中,但計劃在將來的版本中實現。每個類文件包含了一個Java類或一個Java界面的編譯後的代碼。可以說類文件是Java語言的執行代碼文件。為了保證類文件的平台無關性,Java虛擬機規范中對類文件的格式也作了詳細的說明。其具體細節請參考Sun公司的Java虛擬機規范。

Ⅱ 什麼是虛擬機,干什麼用的

指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。在實體計算機中能夠完成的工作在虛擬機中都能夠實現。

5、體驗不同版本的操作系統,如Linux、Mac等。

終端虛擬化由於其帶來的維護費用的大幅降低而受到追捧——如能降低佔用空間,降低購買軟硬體設備的成本,節省能源和更低的維護成本。

它比實際存在的終端設備更加具備性價比優勢。但這些並非是教育行業和廠商對虛擬化技術情有獨鍾的惟一原因。另一方面,一般較少提及,虛擬化技術能大幅提升系統的安全性。

Ⅲ 虛擬機是什麼含義

虛擬機(Virtual Machine)指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。在實體計算機中能夠完成的工作在虛擬機中都能夠實現。在計算機中創建虛擬機時,需要將實體機的部分硬碟和內存容量作為虛擬機的硬碟和內存容量。每個虛擬機都有獨立的CMOS、硬碟和操作系統,可以像使用實體機一樣對虛擬機進行操作。

虛擬機技術是虛擬化技術的一種,所謂虛擬化技術就是將事物從一種形式轉變成另一種形式,最常用的虛擬化技術有操作系統中內存的虛擬化,實際運行時用戶需要的內存空間可能遠遠大於物理機器的內存大小,利用內存的虛擬化技術,用戶可以將一部分硬碟虛擬化為內存,而這對用戶是透明的。又如,可以利用虛擬專用網技術(VPN)在公共網路中虛擬化一條安全,穩定的「隧道」,用戶感覺像是使用私有網路一樣。

流行的虛擬機軟體有VMware(VMWare ACE)、Virtual Box和Virtual PC,它們都能在Windows系統上虛擬出多個計算機。
虛擬系統和傳統的虛擬機(Parallels Desktop,Vmware,VirtualBox,Virtual pc)不同在於:虛擬系統不會降低電腦的性能,啟動虛擬系統不需要像啟動windows系統那樣耗費時間,運行程序更加方便快捷;虛擬系統只能模擬和現有操作系統相同的環境,而虛擬機則可以模擬出其他種類的操作系統;而且虛擬機需要模擬底層的硬體指令,所以在應用程序運行速度上比虛擬系統慢得多。

Ⅳ 虛擬機是什麼

所謂虛擬機,實際上就是一種應用軟體,廣義上來說Word、WPS也算是虛擬機,只不過它們是只能做文字處理的機器而已。狹義的虛擬機軟體VMware實際上也只是一種應用軟體,其特別之處在於,由它創建的虛擬機與真實的計算機幾乎一模一樣,不但虛擬有自己的CPU、內存、硬碟、光碟機,甚至還有自己的BIOS。在這個虛擬機上,可以安裝Windows、Linux等真實的操作系統,及各種應用程序。

目前流行的虛擬機軟體有VMware和Virtual PC,它們都能在Windows系統上虛擬出多個計算機,用於安裝Linux、OS/2、FreeBSD等其他操作系統。微軟在2003年2月份收購Connectix後,很快發布了Microsoft Virtual PC 2004。但出於種種考慮,新發布的Virtual PC 2004已不再明確支持Linux、FreeBSD、NetWare、Solaris等操作系統,只保留了OS/2,如果要虛擬一台Linux計算機,只能自己手工設置。相比而言,VMware不論是在多操作系統的支持上,還是在執行效率上,都比Virtual PC 2004明顯高出一籌。

一、使用虛擬機的好處

1、如果要在一台電腦上裝多個操作系統,不用虛擬機的話,有兩個辦法:一是裝多個硬碟,每個硬碟裝一個操作系統。這個方法比較昂貴。二是在一個硬碟上裝多個操作系統。這個方法不夠安全,因為硬碟MBR是操作系統的必爭之地,搞不好會幾個操作系統同歸於盡。而使用虛擬機軟體既省錢又安全,對想學linux和unix的朋友來說很方便。
2、虛擬機可以在一台機器上同時運行幾個操作系統,是SOHO開發一族的必備工具。有了虛擬機,在家裡只需要一台電腦,或出差時只帶著一個筆記本,就可以調試C/S、B/S的程序了。
3、利用虛擬機可以進行軟體測試。

二、使用虛擬機的硬體要求

虛擬機畢竟是將兩台以上的電腦的任務集中在一台電腦上,所以對硬體的要求比較高,主要是CPU、硬碟和內存。目前的電腦CPU多數是PIII以上,硬碟都是幾十G,這樣的配置已經完全能滿足要求。關鍵是內存。內存的需求等於多個操作系統需求的總和。現在的內存已經很便宜,也不成為問題了。

三、虛擬機的運行環境

VMWare可運行在Windows(WinNT以上)和Linux操作系統上。
Virtaul PC可運行在Windows(Win98以上)和MacOS上。
運行虛擬機軟體的操作系統叫Host OS,在虛擬機里運行的操作系統叫Guest OS。

Ⅳ 虛擬機是什麼

虛擬機指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。

虛擬系統通過生成現有操作系統的全新虛擬鏡像,它具有真實windows系統完全一樣的功能,進入虛擬系統後,所有操作都是在這個全新的獨立的虛擬系統裡面進行,可以獨立安裝運行軟體。

保存數據,擁有自己的獨立桌面,不會對真正的系統產生任何影響 ,而且具有能夠在現有系統與虛擬鏡像之間靈活切換的一類操作系統。

(5)虛擬機是什麼擴展閱讀:

虛擬機的用處:

1、演示環境,可以安裝各種演示環境,便於做各種例子。

2、保證主機的快速運行,減少不必要的垃圾安裝程序,偶爾使用的程序,或者測試用的程序在虛擬機上運行。

3、避免每次重新安裝,銀行等常用工具,不經常使用,而且要求保密比較好的,單獨在一個環境下面運行。

4、想測試一下不熟悉的應用,在虛擬機中隨便安裝和徹底刪除。

5、體驗不同版本的操作系統,如Linux、Mac等。

Ⅵ 什麼是虛擬機啊

虛擬機:虛擬機(VM)是共享一個伺服器的物理資源的操作系統。它是主機硬體上的Guest,因此也被稱為Guest虛擬機。
虛擬機由幾層組成。支持虛擬化的層是hypervisor。hypervisor是一種虛擬化伺服器的軟體。
從操作系統誕生,虛擬化技術就一直伴隨著它發展。因為硬體的限制,人們從一開始就希望使用軟體來模擬硬體,而這也是虛擬機的核心思想。
虛擬機就是在本機的操作系統之下,虛擬出來的一個操作系統,在虛擬機中對硬體的操作,都會經過轉換來對應到實體機的變化。你可以把虛擬機想像成一個真實的計算機,因為對於使用者來說,它提供的功能就相當於一個實體計算機。
虛擬機會將虛擬硬體、內核(即操作系統)以及用戶空間打包在新虛擬機當中,虛擬機能夠利用「虛擬機管理程序」運行在物理設備之上。虛擬機依賴於hypervisor,其通常被安裝在「裸金屬」系統硬體之上,這導致hypervisor在某些方面被認為是一種操作系統。一旦 hypervisor安裝完成, 就可以從系統可用計算資源當中分配虛擬機實例了,每台虛擬機都能夠獲得唯一的操作系統和負載(應用程序)。簡言之,虛擬機先需要虛擬一個物理環境,然後構建一個完整的操作系統,再搭建一層Runtime,然後供應用程序運行。

Ⅶ 什麼是虛擬機

比較通俗的回答虛擬機,顧名思義就是虛擬出來的電腦,這個虛擬出來的電腦和真實的電腦幾乎完全一樣,所不同的是他的硬碟是在一個文件中虛擬出來的,所以你可以隨意修改虛擬機的設置,而不用擔心對自己的電腦造成損失,因此可以用來做試驗什麼的,呵呵,差不多就是這樣了,不知道我說的能明白不^_^,簡單說就是一句話,虛擬出來的電腦,你干什麼都行。
現在說一下虛擬機的軟體,主要是兩中,Virtual
PC和VMware。軟體的選擇也是有門道滴,嘿嘿,簡單來說,VPC的設置很簡單,一路next就行了,VM設置相對麻煩一些,不過也不是麻煩很多,但是VM擁有更好的性能,可以說和真實的電腦性能完全一樣,還可以用橋接的方式和現在的電腦互連^_^,可以研究的東西就更多了,呵呵

Ⅷ 虛擬機是什麼,有什麼好處

虛擬機(Virtual Machine)指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。

虛擬系統通過生成現有操作系統的全新虛擬鏡像,它具有真實windows系統完全一樣的功能,進入虛擬系統後,所有操作都是在這個全新的獨立的虛擬系統裡面進行,可以獨立安裝運行軟體,保存數據,擁有自己的獨立桌面,不會對真正的系統產生任何影響 ,而且具有能夠在現有系統與虛擬鏡像之間靈活切換的一類操作系統。




(8)虛擬機是什麼擴展閱讀:

虛擬機技術最早由 IBM 於上世紀六七十年代提出,被定義為硬體設備的軟體模擬實現,通常的使用模式是分時共享昂貴的大型機。 虛擬機監視器(Virtual Machine Monitor,VMM)是虛擬機技術的核心,它是一層位於操作系統和計算機硬體之間的代碼,用來將硬體平台分割成多個虛擬機。

VMM 運行在特權模式,主要作用是隔離並且管理上層運行的多個虛擬機,仲裁它們對底層硬體的訪問,並為每個客戶操作系統虛擬一套獨立於實際硬體的虛擬硬體環境(包括處理器,內存,I/O 設備)。VMM 採用某種調度演算法在各個虛擬機之間共享 CPU,如採用時間片輪轉調度演算法

閱讀全文

與虛擬機是什麼相關的資料

熱點內容
word中化學式的數字怎麼打出來 瀏覽:744
乙酸乙酯化學式怎麼算 瀏覽:1409
沈陽初中的數學是什麼版本的 瀏覽:1360
華為手機家人共享如何查看地理位置 瀏覽:1051
一氧化碳還原氧化鋁化學方程式怎麼配平 瀏覽:891
數學c什麼意思是什麼意思是什麼 瀏覽:1418
中考初中地理如何補 瀏覽:1309
360瀏覽器歷史在哪裡下載迅雷下載 瀏覽:707
數學奧數卡怎麼辦 瀏覽:1398
如何回答地理是什麼 瀏覽:1032
win7如何刪除電腦文件瀏覽歷史 瀏覽:1061
大學物理實驗干什麼用的到 瀏覽:1491
二年級上冊數學框框怎麼填 瀏覽:1710
西安瑞禧生物科技有限公司怎麼樣 瀏覽:991
武大的分析化學怎麼樣 瀏覽:1253
ige電化學發光偏高怎麼辦 瀏覽:1342
學而思初中英語和語文怎麼樣 瀏覽:1662
下列哪個水飛薊素化學結構 瀏覽:1428
化學理學哪些專業好 瀏覽:1491
數學中的棱的意思是什麼 瀏覽:1068