虛擬機交流接口VMCI(The Virtual Machine Communication Interface)是一個在一個或多個虛擬機與宿主機之間提供高速高效交流的基本組件(infrastructure),VMCI SDK促進了使用VMCI基本組件的軟件的發展。
html
提示:VMCI SDK已經不被推薦使用,而且推薦用VMCI套接字庫(VMCI Sockets library)來代替他。詳見VMCI Sockets Documentationlinux
VMCI SDK有如下組件:網絡
一個用於交換較少信息的數據包(datagram)APIide
一個用於共享數據的共享內存API工具
一個用於控制虛擬機能接收到什麼的通道控制API優化
一個用於推送(publishing)和檢索(retrieving)資源的發掘服務spa
若是沒有VMCI,虛擬機和宿主機就用網絡層進行交流,使用網絡層增長了交流所需開銷,因爲(With)VMCI交流通信(communication)開銷須要小型化和多任務化要求通信必須獲得優化。htm
安裝和啓用VMCI接口
在VMware6.0,VMCI不是默認安裝的一部分進程
啓用一個虛擬機的VMCI功能
1.編輯.vmx文件
2.自定義安裝VMware工具
提示:宿主機上沒有任何安裝VMCI必須的操做
編輯.vmx文件
爲了使VMCI在你的虛擬機上可用,在虛擬機配置文件上加入以下兩行
#下面這一行是必須加入的
vmci0.present = "TRUE"
#下面這一行可選擇性加入
vmci0.id = "num"
這裏,num是一個表明你宿主機上每個虛擬機的惟一的正數(即每一個虛擬機的num不同),便是說,對每個虛擬機而言,你均可以選擇一個數(1,2,3...),可是,兩個虛擬機各自的vmci0.id不能相同。
自定義安裝VMwareTools
在你編輯完成.vmx文件事後,你能夠按照以下步驟安裝VMwareTools軟件的一部分:
在Windows虛擬機下:
1.選擇「自定義安裝(Custom Installation)」而且從將要安裝的VMware驅動列表中選中容許VMCI驅動
2.執行安裝
你可能須要重啓虛擬機以使用VMCI
在Linux虛擬機下
1.執行vmware-config-tools.pl腳本帶上--experimental參數,這個操做打開了安裝的實驗特性以啓用VMCI
2.安裝器提示您是否但願安裝VMCI設備,若是你回答「yes」,VMCI將安裝到你的Linux虛擬機中而且會建立一個 /dev/vmci 的設備節點
簡單的應用程序(Sample Applications)
當你安裝Workstation6.0(在你的宿主機上)或者VMwareTools(在你的虛擬機上),兩個簡單的應用程序會包含在內:
1.shareMenApp - 這個服務建立一個共享的內存區域,而且在共享內存中每過一秒寫入機器的當前時間。客戶機連接到共享內存區且讀出服務機的時間。
2.datagramApp - 這個服務建立一個數據包句柄而且等待一個數據包,客戶機發送一個數據包給這個服務,而且這個服務發送一個數據包回來,就像乒乓球同樣。
簡單程序的源碼文件與說明文件(下文說起)一同提供。
說明文件
當你安裝軟件時,不管是Windows或者linux下的宿主機或者虛擬機,都會有一份說明文件包含在內:
Host | Guest | |
Linux | /usr/share/doc/vmware/vmware-vmci/samples/README | /usr/share/doc/vmware-tools/vmware-vmci/samples/README |
Windows | C:\Program Files\VMware\VMware Workstation\VMCI\Sample Applications\README | C:\Program Files\VMware\VMware Tools\VMCI\Sample Applications\README |
API組件
從使用者的觀點看來,API構成了兩個主要的部分,共享內存API和數據包API,通道控制API和發掘服務API應該與共享內存API或者數據包API協同使用。
1.共享內存API容許兩個或者多個虛擬機共享內存或者一個宿主機和一個虛擬機共享內存,查看Shared Memory API能夠得到更多信息
2.數據包API容許不一樣進程在不一樣環境中向其餘進程發送數據包。爲了通信,兩個Context環境個字建立一個數據包句柄,爲了發送到另外一個句柄發送者須要知道接受者數據包句柄,發送者能夠瀏覽發掘服務(the Discovery Service)使用的根據已經推送(published)的數據包句柄的名字。查看Datagram API能夠得到更多信息。
3.發掘服務API(the Discovery Service)是一個用於根據給定名稱註冊句柄和尋找已註冊句柄的方便的API.
4.通道控制API容許去控制一個虛擬機可否訪問到一個什麼資源(共享內存或者數據包句柄).
如下爲原文