❶ 虛擬機里的虛擬磁碟是從哪裡分的
VM本身帶著 網上有相關文章
使用虛擬磁碟管理軟體打開宿主機中的命令行或終端(Linux中的命令行),以運行虛擬磁碟管理軟體。在Windows宿主機中,更改目錄為你安裝Workstation軟體所在的目錄。默認的安裝目錄為C:\Program Files\VMware\VMware Workstation。
命令語法:
vmware-vdiskmanager [選項]
這里的選項你必須包含以下的一些選擇項或參數
選項和參數
描述
<diskname>
虛擬磁碟文件的名字。虛擬磁碟文件必須是.vmdk為擴展名。你能夠指定一個你想要儲存的虛擬磁碟文件的路徑。如果你在你的宿主機中映射了網路共享,你也可以提供確切的虛擬磁碟文件的路徑信息來創建虛擬磁碟在這個網路共享中
-c
創建虛擬磁碟。你必須用-a, -s 和 -t 並指定選項參數,然後你需要指定所要創建的虛擬磁碟文件的文件名。
-r <sourcediskname>
轉換已經指定類型的虛擬磁碟的類型,結果會輸出創建一個新的虛擬磁碟。你必須用-t選項來指定你想要轉換成的磁碟類型,並且指定目標虛擬磁碟的文件名。
一旦轉換完成,你可以先測試虛擬磁碟以確保它能夠像你所希望的那樣工作,然後再刪除原來的那個虛擬磁碟文件。
為了讓虛擬機重新認識轉換後的虛擬磁碟,你應該使用虛擬機設置編輯器先從虛擬機中移除先前存在的虛擬磁碟,然後添加轉換好的虛擬磁碟給虛擬機。
-x <n>[GB|MB] <diskname>
增大虛擬磁碟到指定的容量。你必須指定新的更大尺寸的虛擬磁碟用GB或MB單位標示。你不能改變物理磁碟的大小。(廢話)
注意:在你運行虛擬磁碟管理軟體前,你應該先備份虛擬磁碟文件。(因為不會創建新的文件,所以備份以防增大磁碟操作失敗)
-d <diskname>
對指定的虛擬磁碟碎片整理。你只能磁碟碎片整理可增長的虛擬磁碟。你不能磁碟碎片整理預分配的虛擬磁碟。
-p <mountpoint>
為收縮磁碟做准備處理。如果虛擬磁碟被分成多個分區,每個分區必須被單獨准備。分區(比如C:或D:)必須用VMware DiskMount工具映射。
在你對分區准備處理後,解除對此分區的映射。繼續映射虛擬磁碟的其他每個分區,為收縮磁碟作準備處理直到完成虛擬磁碟上的所有分區的准備工作。
你在同一時刻只能用VMware DiskMount映射虛擬磁碟的一個分區。你僅僅能在Windows宿主機上進行虛擬磁碟的收縮分區准備工作。
-k <diskname>
收縮指定的虛擬磁碟。你只能夠收縮可增長磁碟。你只能在Windows宿主機中(用這種方法)收縮虛擬磁碟。
你不能夠收縮有虛擬機快照的虛擬磁碟。你可以保持現有虛擬磁碟的狀態,而用快照管理器刪除所有快照。你也可以放棄自快照以來對虛擬磁碟所做的更改,恢復到快照時狀態。
-a [ ide | buslogic | lsilogic ]
指定磁碟適配器的類型。你在創建新的虛擬磁碟時必須指定其類型。選擇以下類型之一:
ide —— IDE介面適配器
buslogic —— BusLogic SCSI介面適配器
lsilogic —— LSI Logic SCSI介面適配器
-s <n> [GB|MB]
指定虛擬磁碟的大小。確定大小用GB或MB做單位。你必須在創建磁碟時指定其大小。
盡管你必須指定虛擬磁碟的大小,但當你增長它的大小時,你不能用-s這個選項。
可以指定的磁碟大小規定:IDE和SCSI適配器都為最小100MB,最大950GB。
-t [0|1|2|3]
你在創建一個新的虛擬磁碟或者重新配置一個虛擬磁碟時必須指定虛擬磁碟的類型。指定以下類型之一:
0 —— 創建一個包含在單一虛擬文件中的可增長虛擬磁碟
1 —— 創建一個被分割為每個文件2GB大小的可增長虛擬磁碟
2 —— 創建一個包含在單一虛擬文件中的預分配虛擬磁碟
3 —— 創建一個被分割為每個文件2GB大小的預分配虛擬磁碟
-q
禁止虛擬磁碟管理程序寫日誌
如果你允許記錄日誌,日誌將會被虛擬磁碟管理程序產生並儲存。在虛擬磁碟管理程序運行後,日誌的名字和存放位置將會出現在命令行或終端中。
-n <source-disk>
重命名指定的虛擬磁碟。需要指定命名後的虛擬磁碟名字。
相關實例:
使用VMware虛擬磁碟管理工具實例
以下例子描述怎樣使用虛擬磁碟管理工具。你需要在命令行中運行虛擬磁碟管理工具。
創建虛擬磁碟
命令:vmware-vdiskmanager -c -t 0 -s 40GB -a ide myDisk.vmdk
這個命令將創建一個40GB大小IDE介面的名字為myDisk的虛擬硬碟。虛擬磁碟包含在一個單一文件中。這個虛擬磁碟沒有被預分配磁碟空間。
實際命令輸入:
D:\Big Program Files\VMware\VMware Workstation>vmware-vdiskmanager -c -s 40Gb –a ide -t 0 E:\myDisk.vmdk
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Creating a monolithic growable disk 『E:\myDisk.vmdk』
Virtual disk creation successful.
轉換一個虛擬磁碟
轉換一個預分配虛擬磁碟為可增長虛擬磁碟,用以下這個命令:
vmware-vdiskmanager -r sourceDisk.vmdk -t 0 targetDisk.vmdk
這個命令將轉換磁碟從它的原始的預分配模式轉變為包含在單一文件中的可增長虛擬磁碟。這個虛擬磁碟空間將不會被預先分配,虛擬磁碟工具將收回虛擬磁碟中的一些磁碟空間,而僅僅讓裡面的數據佔用虛擬磁碟空間。
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -r 「D:\WinXP
SP2 V2.5\Windows XP Professional.vmdk」 -t 0 「L:\Windows XP Professional.vmdk」
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Creating a monolithic growable disk 『L:\Windows XP Professional.vmdk』
Convert: 100% done.
Virtual disk conversion successful.
增大存在的虛擬磁碟的大小
命令:vmware-vdiskmanager -x 40GB myDisk.vmdk
這條命令將把虛擬磁碟myDisk.vmdk大小增大到40GB
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -x 40GB 「D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk」
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Grow: 100% done.
The old geometry C/H/S of the disk is: 8322/16/63
The new geometry C/H/S of the disk is: 16383/16/63
Disk expansion completed successfully.
WARNING: If the virtual disk is partitioned, you must use a third-party
utility in the virtual machine to expand the size of the
partitions. For more information, see:
創建好後,可以在磁碟管理中,看到未指派的空間。如果你想擴大磁碟分區的大小,可以用其他第三方軟體來做。
重命名虛擬磁碟
重命名虛擬磁碟,首先把虛擬磁碟從虛擬機中移除。(選擇 虛擬機 )設置 〉虛擬磁碟,然點移除按鈕)
然後重命名命令:vmware-vdiskmanager -n myDisk.vmdk myNewDisk.vmdk
重命名磁碟定位在不同的目錄下的命令:
vmware-vdiskmanager -n myDisk.vmdk ..\<new-path>\myNewDisk.vmdk
注意:這是一個在windows宿主機中的路徑方式。
定位在不同目錄下,但保持相同名字的虛擬磁碟命令:
vmware-vdiskmanager -n myDisk.vmdk ..\<new-path>\myDisk.vmdk
在你重命名或重定位虛擬磁碟後,把虛擬磁碟添加回虛擬機中使用。選擇 虛擬機 〉設置,點添加,然後根據向導添加這個已經存在的虛擬磁碟。
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -n 「D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk」 「D:\WinXP SP2 V2.5\Windows XP Professio nal WS.vmdk」
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Renaming completed successfully.
重命名幾乎是瞬間完成的,雖然如此,不過我用MD5驗證前後的.vmdk文件,證實文件確實經過了內部修改,得到了不同的MD5碼。
磁碟碎片整理虛擬磁碟
命令:vmware-vdiskmanager -d myDisk.vmdk
記住,你不能磁碟碎片整理預分配的虛擬磁碟。你也不能用這條命令磁碟碎片整理物理硬碟。(廢話)
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -d 「D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk」
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Defragment: 100% done.
Defragmentation completed successfully.
為收縮虛擬磁碟做准備
命令:vmware-vdiskmanager –p S:
一旦准備完成,解除分區映射。重復這個過程在虛擬磁碟的每個分區上。(這樣可以得到最好的收縮效果)在你為收縮磁碟准備好了所有分區後,你就可以收縮虛擬磁碟了
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -p S:
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
100% wiping done.
我所映射的虛擬磁碟S
收縮虛擬磁碟
(這種方法)收縮虛擬磁碟必須在Windows宿主機下進行。在你收縮虛擬磁碟以前,確保你已經為虛擬磁碟的所有分區進行了收縮准備。
命令:vmware-vdiskmanager -k myDisk.vmdk
記住,你不能收縮預分配的磁碟。你也不能收縮物理磁碟。如果虛擬磁碟有快照,你也不能收縮。在你收縮以前刪除所有的快照。
實際命令輸入:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager -k 「D:\WinXP SP2 V2.5\Windows XP Professional S.vmdk」
執行結果顯示:
Using log file C:\DOCUME~1\xujun\LOCALS~1\Temp\vmware\vdiskmanager.log
Shrink: 100% done.
Shrink completed successfully.
收縮磁碟時會產生一個臨時文件,其實它就是收縮後的虛擬磁碟文件,會代替原來的那個虛擬磁碟文件。
❷ 虛擬資源到底指什麼
比如用硬碟來虛擬內存,就是指使用硬碟的一部分空間來代替資源有限價格又昂貴的內存,這樣可以更大限度地優化系統資源。這時候的硬碟就被稱為虛擬資源。
❸ 在網上看到一個叫穩賺家園的,裡面除了任務還有虛擬資源,特意來問一下虛擬資源是什麼
網路上存在的網站、軟體、文字、視頻等,都是屬於虛擬資源,它們看得見摸不著,而且具有可復制性。虛擬資源,比如視頻教程、網站源碼、營銷軟體、工具、電子書等等。虛擬資源不像實物還有發貨售後等環節。最大的好處就是可隨意復制千萬份,有便於引流以及廣泛傳播幫助
變
現。這些年,不少人還繼續在貼吧、微X信甚至某寶售賣小吃配方、3d電影、ps教程
一年收入十幾萬,這些東西有成本嗎?我們看到一些辦公軟體教程,銷量很大,收入也很高。
所以虛擬資源是很厲害的,也是引
流
變現最簡單的。
你說的這個軟體,能提供豐富的資源,省去了很多尋找資源的時間,上手就可以操作,還是不錯的。
❹ 在淘寶上賣虛擬資源的店主都是從哪裡弄的貨源呢
想必你還不了解吧?他就是一款軟體不需要進貨什麼的,如果你要是也從這個開始的話,我勸你別買低價的哈,他們給你保證不了售後的,
❺ 虛擬機是利用什麼資源來工作
通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。通過虛擬機軟體,你可以在一台物理計算機上模擬出一台或多台虛擬的計算機,這些虛擬機完全就像真正的計算機那樣進行工作,例如你可以安裝操作系統、安裝應用程序、訪問網路資源等等。對於你而言,它只是運行在你物理計算機上的一個應用程序,但是對於在虛擬機中運行的應用程序而言,它就像是在真正的計算機中進行工作。因此,當我在虛擬機中進行軟體評測時,可能系統一樣會崩潰,但是,崩潰的只是虛擬機上的操作系統,而不是物理計算機上的操作系統,並且,使用虛擬機的「Undo」(恢復)功能,我可以馬上恢復虛擬機到安裝軟體之前的狀態。
當前主流虛擬機
目前流行的虛擬機軟體有VMware(VMWare ACE)和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明顯高出一籌,這也是本文選擇它的理由之一。 電腦一台變兩台,學用Linux不再有後顧之憂
虛擬化分類
虛擬化浪潮
微軟虛擬化
IBM虛擬化
HP虛擬化
SWsoft虛擬化
SUN虛擬化
Intel虛擬化
AMD虛擬化
Java虛擬機
VMware 4.5有Workstation、GSX server等多種版本,其中Windows版的Workstation應用最廣,本文即以它為基礎進行各種實戰演習。
虛擬機的概念比較寬泛,通常人們接觸到的虛擬機概念有VMware那樣的硬體模擬軟體,也有JVM這樣的介於硬體和編譯程序之間的軟體。這里所指的是後者。
虛擬機是一個抽象的計算機,和實際的計算機一樣,具有一個指令集並使用不同的存儲區域。它負責執行指令,還要管理數據、內存和寄存器。這台虛擬的機器在任何平台上都提供給編譯程序一個的共同的介面。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。
Sun xVM VirtualBox又發新版本:2.1.0。
2.1.0不像此前2.0.X一樣主要是修正Bug和完善原有功能,這個版本增加了許多新特性。強烈建議VBox的用戶們更新!
在官方網站的ChangeLog上,我們可以看到這個版本的主要更新信息:
* 支持Max OS X客戶機的硬體虛擬化技術(VT-x和AMD-V);
* 支持在32位操作系統上模擬64位客戶機!(實驗性質,具體看用戶手冊);
* 支持Intel Nehalem虛擬化增強技術(EPT和VPID,具體看用戶手冊);
* 通過OpenGL支持3D加速!(看用戶手冊4.8章);
還有很多更新,但是光是以上四樣就有足夠地理由讓用戶去升級了!
VirtualBox終於支持了通過OpenGL實驗的的3D加速,並且率先支持了在32位的操作系統上模擬64位的客戶機(需要64位CPU支持)。這意味著虛擬機平台的限制更少了,你可以在你的x86平台上模擬AMD64!
針對「OpenGL 3D加速」這一項,我了解到,這項特性目前只在Windows系統上可用,並且只能實現OpenGL加速,而沒有Direct3D加速。這意味著,你已經可以在Windows虛擬機運行一些OpenGL的3D應用,而Direct3D就要稍微等等了。
還等什麼呢,這是一個進步相當大的版本。趕緊下載試用吧:
個人為什麼使用虛擬機
1. 演示環境,可以安裝各種演示環境,便於做各種例子;
2. 保證主機的快速運行,減少不必要的垃圾安裝程序,偶爾使用的程序,或者測試用的程序在虛擬機上運行;
3. 避免每次重新安裝,銀行等常用工具,不經常使用,而且要求保密比較好的,單獨在一個環境下面運行;
4. 想測試一下不熟悉的應用,在虛擬機中隨便安裝和徹底刪除;
5. 體驗不同版本的操作系統,如Linux、Mac等。
虛擬機的部分使用實例
例1:由於計算機網路在我們的日常生活中產生的影響越來越大,很多學校都把與網路相關的課程列為必修或選修的課程內容。而網路課是一門理論與實踐並重的課程,如果只是單純地教授網路相關知識,沒有提供給學生一個實驗的環境,那麼很難激發起學生對網路的興趣,導致學習產生困難,甚至會使學生對網路課產生抵觸情緒。因此,很多學校在注重理論教學的同時,也積極開展相關的網路實驗課程。
為了解決上面這些問題,一種最為簡單的解決方法就是使用虛擬機軟體來搭建一個小型的網路環境,讓學生在這個模擬的網路環境中學習網路的通訊原理,進而有能力進行網路應用的開發。
終端虛擬化由於其帶來的維護費用的大幅降低而受到追捧——如能降低佔用空間,降低購買軟硬體設備的成本,節省能源和更低的維護成本。它比實際存在的終端設備更加具備性價比優勢。但這些並非是教育行業和廠商對虛擬化技術情有獨鍾的惟一原因。另一方面,我們一般較少提及,那就是:虛擬化技術能大幅提升系統的安全性。
例2:等待完善中..
[編輯本段]VMware虛擬機安裝過程
VMware Workstation虛擬機是一個在Windows或Linux計算機上運行的應用程序,它可以模擬一個基於x86的標准PC環境。這個環境和真實的計算機一樣,都有晶元組、CPU、內存、顯卡、音效卡、網卡、軟碟機、硬碟、光碟機、串口、並口、USB控制器、SCSI控制器等設備,提供這個應用程序的窗口就是虛擬機的顯示器。
在使用上,這台虛擬機和真正的物理主機沒有太大的區別,都需要分區、格式化、安裝操作系統、安裝應用程序和軟體,總之,一切操作都跟一台真正的計算機一樣。
下面通過例子,介紹使用VMware Workstation創建虛擬機的方法與步驟。
1.運行VMware Workstation 6,單擊「File→New→Virtual Machine」命令,進入創建虛擬機向導,或者直接按「Crtl+N」快捷鍵同樣進入創建虛擬機向導。
2.在彈出的歡迎頁中單擊「下一步」按鈕。
3.在「Virtual machine configuration」選項區域內選擇「Custom」單選按鈕。
4.在Choose the Virtual Machine Hardware Compatibility頁中,選擇虛擬機的硬體格式,可以在Hardware compatibility下拉列表框中,在VMware Workstation 6、VMware Workstation 5或VMware Workstation 4三者之間進行選擇。通常情況下選擇Workstation 6的格式,因為新的虛擬機硬體格式支持更多的功能,選擇好後單擊「下一步」按鈕。
5.在Select a Guest Operating System對話框中,選擇要創建虛擬機類型及要運行的操作系統,這里選擇Windows 2000 Professional操作系統,單擊「下一步」按鈕。
6.在Name the Virtual Machine對話框中,為新建的虛擬機命名並且選擇它的保存路徑。
7.在Processors選項區域中選擇虛擬機中CPU的數量,如果選擇Two,主機需要有兩個CPU或者是超線程的CPU。
8.在Memory for the Virtual Machine頁中,設置虛擬機使用的內存,通常情況下,對於Windows 98及其以下的系統,可以設置64MB;對於Windows 2000/XP,最少可以設置96MB;對於Windows 2003,最低為128MB;對於Windows Vista虛擬機,最低512MB。
9.在Network Type頁中選擇虛擬機網卡的「聯網類型」
選擇第一項,使用橋接網卡(VMnet0虛擬網卡),表示當前虛擬機與主機(指運行VMware Workstation軟體的計算機)在同一個網路中。
選擇第二項,使用NAT網卡(VMnet8虛擬網卡),表示虛擬機通過主機單向訪問主機及主機之外的網路,主機之外的網路中的計算機,不能訪問該虛擬機。
選擇第三項,只使用本地網路(VMnet1虛擬網卡),表示虛擬機只能訪問主機及所有使用VMnet1虛擬網卡的虛擬機。主機之外的網路中的計算機不能訪問該虛擬機,也不能被該虛擬機所訪問。
選擇第四項,沒有網路連接,表明該虛擬機與主機沒有網路連接。
10.在Select I/O Adapter Type頁中,選擇虛擬機的SCSI卡的型號,通常選擇默認值即可。
11.在Select a Disk頁中,選擇Create a new virtual disk(創建一個新的虛擬硬碟)。
12.在Select a Disk Type頁中,選擇創建的虛擬硬碟的介面方式,通常選擇默認值即可。
13.在Specify Disk Capacity頁中設置虛擬磁碟大小,對於一般的使用來說,選擇默認值即可。
14.在Specify Disk File頁的Disk file選項區域內設置虛擬磁碟文件名稱,通常選擇默認值即可,然後單擊完成按鈕。
安裝操作系統
在虛擬機中安裝操作系統,和在真實的計算機中安裝沒有什麼區別,但在虛擬機中安裝操作系統,可以直接使用保存在主機上的安裝光碟鏡像(或者軟盤鏡像)作為虛擬機的光碟機(或者軟碟機)。
可以用打開前文創建的Windows 2000虛擬機配置文件,在Virtual Machine Settings頁中的Hardware選項卡中,選擇CD-ROM項,在Connection選項區域內選中Use ISO image單選按鈕,然後瀏覽選擇Windows 2000安裝光碟鏡像文件(ISO格式)。如果使用安裝光碟,則選擇Use physical drive並選擇安裝光碟所在光碟機。
選擇光碟機完成後,然後單擊工具欄上的播放按鈕,打開虛擬機的電源,用滑鼠在虛擬機工作窗口中單擊一下,進入虛擬機。
【說明】如果想從虛擬機窗口中切換回主機,需要按下Ctrl+Alt熱鍵。
安裝VMware Tools
在虛擬機中安裝完操作系統之後,接下來需要安裝VMware Tools。VMware Tools相當於VMware虛擬機的主板晶元組驅動和顯卡驅動、滑鼠驅動,在安裝VMware Tools後,可以極大提高虛擬機的性能,並且可以讓虛擬機解析度以任意大小進行設置,還可以使用滑鼠直接從虛擬機窗口中切換到主機中為。
1.從VM菜單下選擇安裝VMware Tools。
2.按照提示安裝,最後重新啟動虛擬機即可。
[編輯本段]Java虛擬機
一、什麼是Java虛擬機
Java虛擬機(JVM)是Java Virtual Machine的縮寫,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能模擬來實現的。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虛擬機規范。
❻ 去哪找虛擬物品貨源
樓主你好!
網上開店的第一步就是找貨源,充足的貨源是賣家開店的保障。最煩就是貨源啦
貨源和信譽是淘寶新手以至於老手的致命傷口。
那怎樣能夠找到成本低質量又好的貨源呢?下面我就給一點經驗!!
一、明確自己想要賣什麼 1、在決定了開店以後必須確定你要開什麼類型的店,賣什麼貨品,不要看別人這個賣得
好,你就來,那是別人的特長,你沒有那麼貨的。好好思索一下自己的關系網,你也許有朋友在某某公司上班。可以內部拿貨來。就會很便宜哦!!2、去網路等大型搜索一下。廣闊視野,看看什麼東西在網上熱門.需求量大 3、如果你是新手。 沒有資金,沒有好貨源。你還是可以先做一下虛擬產品。畢竟這樣可以減少你的投資風險
找到貨源後。你就可以籌劃致命開店了
1、進貨,要貨比三家,不要急。一般店主看你年輕、沒有經驗。又是新手。會宰哭你
的 ,黑心老闆多的是,沒准宰了你,你還對他千恩萬謝!!
希望你早點搞定貨源問題
❼ 用星聚寶的時候看到有虛擬資源,什麼是虛擬資源
虛擬商品有什麼優點?
虛擬商品不需要物流發貨,直接網路傳達,而且可以無限復制,成本極低。相對於實物商品來說,直接就省去了倉庫、物流等等各種問題。
虛擬商品能Z錢嗎?
既能省時高效,又能獲取高質量的、稀缺的知識技術,用戶當然樂意為之付費。大名鼎鼎的網易雲課堂,錄制的視頻教程,一套可以輕松賣到幾百萬!
❽ vr虛擬資源批發去哪裡找貨源
淘寶、京東、微店、1688