什么是虛擬機(jī)?
時(shí)間:2023-07-15 02:33:01 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-07-15 02:33:01 來源:網(wǎng)站運(yùn)營(yíng)
什么是虛擬機(jī)?:
虛擬機(jī)(Virtual Machine)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。
比較通俗的回答(適合沒有電腦基礎(chǔ)的朋友)
虛擬機(jī),顧名思義就是虛擬出來的電腦,這個(gè)虛擬出來的電腦和真實(shí)的電腦幾乎完全一樣,所不同的是他的硬盤是在一個(gè)文件中虛擬出來的,所以你可以隨意修改虛擬機(jī)的設(shè)置,而不用擔(dān)心對(duì)自己的電腦造成損失,因此可以用來做試驗(yàn)什么的,呵呵,差不多就是這樣了,不知道我說的能明白不^_^,簡(jiǎn)單說就是一句話,虛擬出來的電腦,你干什么都行。
比較專業(yè)的回答(適合有一點(diǎn)電腦基礎(chǔ)的朋友)
虛擬機(jī)是指運(yùn)行在Windows或Linux計(jì)算機(jī)上的一個(gè)應(yīng)用程序,這個(gè)應(yīng)用程序“模擬”了一個(gè)基于x86的標(biāo)準(zhǔn)PC的環(huán)境。這個(gè)環(huán)境和普通的計(jì)算機(jī)一樣,都有芯片組、CPU、內(nèi)存、顯卡、聲卡、網(wǎng)卡、軟驅(qū)、硬盤、光驅(qū)、串口、并口、USB控制器、SCSI控制器等設(shè)備,提供這個(gè)應(yīng)用程序的“窗口”就是虛擬機(jī)的顯示器。在一臺(tái)電腦上將硬盤和內(nèi)存的一部分拿出來虛擬出若干臺(tái)機(jī)器,每臺(tái)機(jī)器可以運(yùn)行單獨(dú)的操作系統(tǒng)而互不干擾,這些“新”機(jī)器各自擁有自己獨(dú)立的CMOS、硬盤和操作系統(tǒng),你可以像使用普通機(jī)器一樣對(duì)它們進(jìn)行分區(qū)、格式化、安裝系統(tǒng)和應(yīng)用軟件等操作,還可以將這幾個(gè)操作系統(tǒng)聯(lián)成一個(gè)網(wǎng)絡(luò)。在虛擬系統(tǒng)崩潰之后可直接刪除不影響本機(jī)系統(tǒng),同樣本機(jī)系統(tǒng)崩潰后也不影響虛擬系統(tǒng),可以下次重裝后再加入以前做的虛擬系統(tǒng)。同時(shí)它也是唯一的能在 Windows和Linux主機(jī)平臺(tái)上運(yùn)行的虛擬計(jì)算機(jī)軟件。虛擬機(jī)軟件不需要重開機(jī),就能在同一臺(tái)電腦使用好幾個(gè)OS,不但方便,而且安全。虛擬機(jī)在學(xué)習(xí)技術(shù)方面能夠發(fā)揮很大的作用。
基本概念
一般意義的虛擬機(jī): 通過虛擬機(jī)軟件,你可以在一臺(tái)物理計(jì)算機(jī)上模擬出一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī),這些虛擬機(jī)完全就像真正的計(jì)算機(jī)那樣進(jìn)行工作,例如你可以安裝操作系統(tǒng)、安裝應(yīng)用程序、訪問網(wǎng)絡(luò)資源等等。對(duì)于你而言,它只是運(yùn)行在你物理計(jì)算機(jī)上的一個(gè)應(yīng)用程序,但是對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,它就像是在真正的計(jì)算機(jī)中進(jìn)行工作。因此,當(dāng)我在虛擬機(jī)中進(jìn)行軟件評(píng)測(cè)時(shí),可能系統(tǒng)一樣會(huì)崩潰,但是,崩潰的只是虛擬機(jī)上的操作系統(tǒng),而不是物理計(jì)算機(jī)上的操作系統(tǒng),并且,使用虛擬機(jī)的“Undo”(恢復(fù))功能,我可以馬上恢復(fù)虛擬機(jī)到安裝軟件之前的狀態(tài)。
為什么使用虛擬機(jī)
1. 演示環(huán)境,可以安裝各種演示環(huán)境,便于做各種例子;
2. 保證主機(jī)的快速運(yùn)行,減少不必要的垃圾安裝程
序,偶爾使用的程序,或者測(cè)試用的程序在虛擬機(jī)上運(yùn)行;
3. 避免每次重新安裝,銀行等常用工具,不經(jīng)常使用,而且要求保密比較好的,單獨(dú)在一個(gè)環(huán)境下面運(yùn)行;
4. 想測(cè)試一下不熟悉的應(yīng)用,在虛擬機(jī)中隨便安裝和徹底刪除;
5. 體驗(yàn)不同版本的操作系統(tǒng),如Linux、Mac等。
終端虛擬化由于其帶來的維護(hù)費(fèi)用的大幅降低而受到追捧——如能降低占用空間,降低購(gòu)買軟硬件設(shè)備的成本,節(jié)省能源和更低的維護(hù)成本。它比實(shí)際存在的終端設(shè)備更加具備性價(jià)比優(yōu)勢(shì)。但這些并非是教育行業(yè)和廠商對(duì)虛擬化技術(shù)情有獨(dú)鐘的惟一原因。另一方面,我們一般較少提及,那就是:虛擬化技術(shù)能大幅提升系統(tǒng)的安全性。
現(xiàn)在流行虛擬機(jī)
VMware 可以使你在一臺(tái)機(jī)器上同時(shí)運(yùn)行二個(gè)或更多Windows、DOS、LINUX系統(tǒng)。與“多啟動(dòng)”系統(tǒng)相比,VMWare 采用了完全不同的概念。多啟動(dòng)系統(tǒng)在一個(gè)時(shí)刻只能運(yùn)行一個(gè)系統(tǒng),在系統(tǒng)切換時(shí)需要重新啟動(dòng)機(jī)器。VMWare是真正“同時(shí)”運(yùn)行,多個(gè)操作系統(tǒng)在主系統(tǒng)的平臺(tái)上,就象標(biāo)準(zhǔn)Windows應(yīng)用程序那樣切換。而且每個(gè)操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)、配置而不影響真實(shí)硬盤的數(shù)據(jù),你甚至可以通過網(wǎng)卡將幾臺(tái)虛擬機(jī)用網(wǎng)卡連接為一個(gè)局域網(wǎng),極其方便。安裝在VMware操作系統(tǒng)性能上比直接安裝在硬盤上的系統(tǒng)低不少,因此,比較適合學(xué)習(xí)和測(cè)試。
Oracle VM VirtualBox 是由Sun Microsystems公司出品的軟件(sun 于 2010年被Oracle收購(gòu)),原由德國(guó)innotek公司開發(fā)。2008年2月12日,Sun Microsystems宣布將以購(gòu)買股票的方式收購(gòu)德國(guó)Innotek軟件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM VirtualBox。2010年1月21日,歐盟終于同意Oracle收購(gòu)Sun,VirtualBox再次該名變成Oracle VM VirtualBox。VirtualBox是開源軟件。目前VirtualBox 3.2.0支持的操作系統(tǒng)包括:Debian, Fedora,Linux, Mac OS X(Intel), Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux,Solaris 10, Ubuntu, Windows, Xandros, openSUSE等。OracleVM VirtualBox 支持的客戶端操作系統(tǒng)包括:從 3.1到Vista的所有版本的Windows、Linux2.2、2.4和 2.6內(nèi)核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS。在 2007 年 1 月,InnoTek 以 GNU General Public License (GPL) 釋出 VirtualBox,并提供二進(jìn)位版本及開放源碼版本的代碼。
Virtual PC 在使用PowerPC處理器的MacOS X版本上,其模擬機(jī)“使用”Intel Pentium 4處理器及440BX 系列的主板;而在Windows版本上,會(huì)使用電腦本身的處理器。模擬電腦上使用一塊標(biāo)準(zhǔn)的SVGA VESA圖卡,并與S3 Trio 64 PCI 8 MByte VideoRAM版本的兼容。主板使用American Megatrends (AMI)的BIOS。并有“內(nèi)置”的 Creative Labs Sound Blaster 16PnP聲卡 (Vista上或運(yùn)行模擬Vista環(huán)境時(shí),則使用Vista本身的音效系統(tǒng),因?yàn)閂ista并不支援Creative Labs Sound Blaster)及DEC 21041 或 DEC 21140的Ethernet網(wǎng)卡。
Windows XP Mode
使用適用于 Windows 7 的 Windows XP Mode,可以在 Windows 7 上輕松運(yùn)行多個(gè)在 Windows XP 上運(yùn)行的生產(chǎn)應(yīng)用程序。它使用虛擬化技術(shù)(如 Windows Virtual PC)為 Windows 7 提供虛擬 Windows XP 環(huán)境。 Windows XP Mode 可以提供 32 位的虛擬化 Windows XP Professional ServicePack 3 (SP3) 環(huán)境。此下載包包含一個(gè)預(yù)安裝了 Windows XP SP3 的虛擬硬盤 (.vhd file)。必須具備客戶端虛擬化軟件(如 Windows Virtual PC)才能使用
支持的操作系統(tǒng): Windows 7(Windows 7 專業(yè)版、Windows 7 旗艦版或 Windows 7 企業(yè)版)
注意:不支持從 Windows XP Mode Beta/ReleaseCandidate 的升級(jí)。
硬盤要求:2GB,用于安裝 Windows XP Mode。建議為虛擬 Windows 環(huán)境準(zhǔn)備額外 15GB 的硬盤空間。
注意:可以在計(jì)算機(jī)上使用 Windows Virtual PC 運(yùn)行 Windows XP Mode。
2010年3月 19日,微軟發(fā)布更新,Windows XP Mode不再要求硬件虛擬化技術(shù)。只要是正版用戶都可以從微軟官網(wǎng)上免費(fèi)下載。
什么虛擬機(jī)適合你
VMware Workstation的功能是最強(qiáng)大的,它的強(qiáng)大是不容置疑的,所以也是最多人使用的。但是需要注冊(cè)并且是英文,過于龐大,很多功能我們是用不到,而且還會(huì)開機(jī)加載程序(這個(gè)很多人不喜歡的)。所以出現(xiàn)了精簡(jiǎn)版,漢化版,破解版,但是往往出問題就是因?yàn)檫@些改版(不是說某些版本不好,但這個(gè)是事實(shí),使用這些版本會(huì)出現(xiàn)莫名其妙的問題,而且很難解決,同時(shí)希望能支持正版)
Oracle xVM VirtualBox是開源,免費(fèi),相比下,VirtualBoxj比較輕巧,也能實(shí)現(xiàn)很多功能。最重要的是有中文,上手比較容易,而已它的快照功能也靠近VM了,應(yīng)該說競(jìng)爭(zhēng)力更強(qiáng)了。
Virtual PC,感覺就是沒有什么希望,給微軟收購(gòu)了后只支持自家的系統(tǒng)(不是其他系統(tǒng)不能用它虛擬,只是需要很強(qiáng)的動(dòng)手能力)XP mode雖然不錯(cuò),但是限制也是很多的。
是只需要簡(jiǎn)單的功能的,virtualbox和VPC可以滿足你了,如果需要虛擬Linux這類的系統(tǒng)就用 Vritualbox。如果需要強(qiáng)大功能的虛擬機(jī),VMware Workstation就是你的選擇了。
1.VMware Workstation 雖然強(qiáng)大,但是還是要注冊(cè)的,網(wǎng)上有key,自己搜就行了,還是那句話:中國(guó)人用軟件不花錢滴。
2.想用XP mode的同學(xué),可以試試VMlite
3.什么是硬件虛擬化技術(shù)(Intel VT和AMD-V技術(shù))
其實(shí)他們都是同一類技術(shù),就是提供特殊的CPU指令,使虛擬化時(shí)效率提高。如果想在32位系統(tǒng)虛擬64位系統(tǒng),擁有 CPU虛擬化技術(shù)是必須的,就算是64位系統(tǒng)虛擬64位系統(tǒng)也需要這種技術(shù)的。
安裝注意: 在虛擬機(jī)
中安裝操作系統(tǒng),和在真實(shí)的計(jì)算機(jī)中安裝沒有什么區(qū)別,但在虛擬機(jī)中安裝操作系統(tǒng),可以直接使用保存在主機(jī)上的安裝光盤鏡像(或者軟盤鏡像)作為虛擬機(jī)的光驅(qū)(或者軟驅(qū))。 可以用打開前文創(chuàng)建的Windows 2000虛擬機(jī)配置文件,在Virtual Machine Settings頁(yè)中的Hardware選項(xiàng)卡中,選擇CD-ROM項(xiàng),在Connection選項(xiàng)區(qū)域內(nèi)選中Use ISO image單選按鈕,然后瀏覽選擇Windows 2000安裝光盤鏡像文件(ISO格式)。如果使用安裝光盤,則選擇Use physical drive并選擇安裝光盤所在光驅(qū)。 選擇光驅(qū)完成后,然后單擊工具欄上的播放按鈕,打開虛擬機(jī)的電源,用鼠標(biāo)在虛擬機(jī)工作窗口中單擊一下,進(jìn)入虛擬機(jī)。 如果想從虛擬機(jī)窗口中切換回主機(jī),需要按下Ctrl+Alt熱鍵。 安裝VMware Tools 在虛擬機(jī)中安裝完操作系統(tǒng)之后,接下來需要安裝VMware Tools。VMware Tools相當(dāng)于VMware虛擬機(jī)的主板芯片組驅(qū)動(dòng)和顯卡驅(qū)動(dòng)、鼠標(biāo)驅(qū)動(dòng),在安裝VMware Tools后,可以極大提高虛擬機(jī)的性能,并且可以讓虛擬機(jī)分辨率以任意大小進(jìn)行設(shè)置,還可以使用鼠標(biāo)直接從虛擬機(jī)窗口中切換到主機(jī)中來。 1.從VM菜單下選擇安裝VMware Tools。 2.按照提示安裝,最后重新啟動(dòng)虛擬機(jī)即可。
虛擬機(jī)殺毒技術(shù)
虛擬機(jī)并不是新技術(shù),目前微軟、JAVA等虛擬機(jī)都已經(jīng)十分成熟,在一臺(tái)電腦上安裝一個(gè)虛擬機(jī)和多個(gè)操作系統(tǒng),已經(jīng)成為許多評(píng)測(cè)人員和計(jì)算機(jī)病毒分析人員必需工作條件。而將虛擬機(jī)技術(shù)應(yīng)用到殺毒方面,卻是一個(gè)殺毒業(yè)界一直在追求和探索的課題。 “虛擬機(jī)殺毒技術(shù)”即是在電腦中創(chuàng)造一個(gè)虛擬CPU環(huán)境,將病毒在虛擬環(huán)境中激活,根據(jù)其行為特征,從而判斷是否是病毒。有專家認(rèn)為,所謂虛擬機(jī)技術(shù),就是用軟件先虛擬一套運(yùn)行環(huán)境,讓病毒先在該虛擬環(huán)境下運(yùn)行,從而觀察病毒的執(zhí)行過程。這個(gè)技術(shù)主要用來應(yīng)對(duì)加殼和加密的病毒,因?yàn)檫@兩類病毒在執(zhí)行時(shí)最終還是要自身脫殼和解密的,這樣,殺毒軟件就可以在其“現(xiàn)出原形”之后通過特征碼查毒法對(duì)其進(jìn)行查殺。
虛擬機(jī)源碼分析
1)虛擬機(jī)是什么?“虛擬機(jī)”的概念其實(shí)很廣,最常見的有以下兩種虛擬機(jī),第一種是模擬“裸機(jī)”運(yùn)行的虛擬機(jī),這樣的虛擬機(jī)有VMWAREVirturePC,Bochs等,另一種是模擬操作系統(tǒng)運(yùn)行情況的虛擬機(jī),這樣的虛擬機(jī)有Wine,JVM(java虛擬機(jī))。其實(shí),虛擬機(jī)就是一個(gè)中間層,可以理解為是兩種環(huán)境的橋梁,如果把虛擬機(jī)的概念抽象一點(diǎn)描述,可以認(rèn)為虛擬機(jī)是在某一個(gè)環(huán)境上模擬另一種環(huán)境運(yùn)行情況的軟件,這樣的環(huán)境可以是不同的cpu,不同的os....等等。
這里選擇的是兩個(gè)非常簡(jiǎn)單的虛擬機(jī),一個(gè)是<<編譯原理與實(shí)踐>;>;一書中自帶的TM虛擬機(jī),另一個(gè)是<<程序員>;>;雜志2003年第六期里的一篇文章<<一個(gè)小型虛擬機(jī)的實(shí)現(xiàn)>;>;中實(shí)現(xiàn)的虛擬機(jī),兩者都有一個(gè)共同點(diǎn),就是兩者都是在匯編語(yǔ)言級(jí)別虛擬cpu運(yùn)行情況的虛擬機(jī),正因?yàn)檫@兩個(gè)虛擬機(jī)的如此定位,所以在實(shí)現(xiàn)或者閱讀這兩個(gè)虛擬機(jī)的時(shí)候,你不得不從cpu的角度去思考問題,你必須對(duì)cpu的運(yùn)行情況有了解,反過來說,閱讀這兩個(gè)虛擬機(jī)的源碼也可以加深對(duì)cpu工作原理以及匯編語(yǔ)言的理解。這兩個(gè)虛擬機(jī)的源碼都可以在網(wǎng)上找到,前者在
http://www.mathcs.sjsu.edu/faculty/louden/cmptext/,而后者可以在CSDN的網(wǎng)站上查找2003年第六期的源碼。值得一提的是,CS:APP(<<深入理解計(jì)算機(jī)系統(tǒng)>;>;)一書中也有一章專門講述CPU的運(yùn)行原理,所以這個(gè)虛擬機(jī)功能更酷也更加強(qiáng)大,
3)設(shè)計(jì)一個(gè)匯編語(yǔ)言級(jí)別的虛擬機(jī)的要求
學(xué)習(xí)過計(jì)算機(jī)原理的人都知道,一個(gè)cpu至少需要有以下幾個(gè)部件:a)內(nèi)存,裝載所要執(zhí)行的指令之用;b)寄存器;3)指令集,沒有指令集執(zhí)行指令就無(wú)從談起。前兩者非常簡(jiǎn)單,無(wú)非就是在內(nèi)存中分配一個(gè)空間來模擬就可以了,而后者這 里要專門說明一下。我們知道任何高級(jí)語(yǔ)言,經(jīng)過這個(gè)高級(jí)語(yǔ)言的編譯器編譯之后都是翻譯成匯編語(yǔ)言的,然后由匯編器匯編成二進(jìn)制文件最后再進(jìn)行庫(kù)的鏈接等等才形成了可執(zhí)行文件,而可執(zhí)行文件最終也是二進(jìn)制格式的,在執(zhí)行可執(zhí)行文件的時(shí)候由加載器加載到內(nèi)存中去,那么這里就有一個(gè)問題了:cpu是如何識(shí)別已經(jīng)加載到內(nèi)存中二進(jìn)制文件并且正確執(zhí)行的?這需要下 面的一個(gè)概念:OpCode。
OpCode是什么?簡(jiǎn)而言之,OpCode就是與匯編指令相對(duì)應(yīng)的二進(jìn)制格式的代碼,OpCode的英文名是OperationCode(中文可以翻譯成“操作碼”),每一個(gè)匯編指令都有一個(gè)相對(duì)應(yīng)的OpCode格式,反之不然,不過這個(gè)問題這里不再深究,只需要知道匯編器把匯編指令翻譯成相應(yīng)的由opcode組成的二進(jìn)制文件,這樣在可執(zhí)行文件加載到內(nèi)存的時(shí)候,cpu就可以根據(jù)在可執(zhí)行文件中的opcode來執(zhí)行程序了。理論上來說,不同廠家的cpu所支持的opcode是不同的,那么這里就有一個(gè)問題了,比如說在Intel機(jī)子上編譯成功的可執(zhí)行文件到了AMD的機(jī)子上如何正確執(zhí)行呢?如果沒有猜錯(cuò)的是,每個(gè)cpu在實(shí)現(xiàn)的時(shí)候需要在cpu的上層加一個(gè)翻譯指令的東東....具體的我不清楚,只是猜測(cè)而已,也許不對(duì)。扯了這么多,回到這里要實(shí)現(xiàn)的cpu上,因?yàn)橹皇呛?jiǎn)易的cpu,所以在opcode上也盡量的精簡(jiǎn),在這兩個(gè)虛擬機(jī)的實(shí)現(xiàn)中,都是采用了匯編指令和opcode一一對(duì)應(yīng)的關(guān)系進(jìn)行實(shí)現(xiàn)(記住我前面說過匯編指令和opcode在真正的cpu中并不是一一對(duì)應(yīng)的?。?,這樣簡(jiǎn)化了cpu的實(shí)現(xiàn)。
116: 89 e5 mov %esp,%ebp
其中的116是指令地址,而89 e5就是指令mov %esp,%ebp 所對(duì)應(yīng)的opcode。
總結(jié)一下,設(shè)計(jì)一個(gè)匯編語(yǔ)言級(jí)別的虛擬機(jī)至少需要以下的部件:1)內(nèi)存空間,用于存放機(jī)器指令之用。2)寄存器:用于保存程序運(yùn)行的狀態(tài),暫存數(shù)據(jù)等等之用。3)匯編器,匯編器的功能就是把匯編指令翻譯成cpu指定的機(jī)器指令,然后將指令裝入虛擬機(jī)的內(nèi)存之中。4)指令集,指令集包括了指令的助記符,也就是匯編語(yǔ)言中的指令,還需要有每個(gè)指令所對(duì) 應(yīng)的機(jī)器指令也就是OpCode,助記符由匯編器處理翻譯成為機(jī)器指令,最后在cpu執(zhí)行的時(shí)候根據(jù)不同的機(jī)器指令來執(zhí)行相關(guān)的操作。
雖然這兩個(gè)虛擬機(jī)的設(shè)計(jì)略有不同,但是由于都是模擬的匯編語(yǔ)言級(jí)別的cpu,所以工作過程大體都是一致的,把握這個(gè)運(yùn)行的過程是正確掌握這兩個(gè)源代碼的關(guān)鍵所在!虛擬機(jī)運(yùn)行的大體過程如下:首先由匯編起掃描匯編源文件,將匯編指令也就是機(jī)器指令的助記符翻譯為機(jī)器指令,如果沒有錯(cuò)誤就把機(jī)器指令加載到內(nèi)存之中,這時(shí)匯編器的任務(wù)就結(jié)束了;然后由虛擬機(jī)讀取已經(jīng)裝載到內(nèi)存中的機(jī)器指令,根據(jù)機(jī)器指令對(duì)應(yīng)的操作來執(zhí)行指令。