api
層虛擬機器的典型代表是開源專案
wine
,它構造了乙個
windows
使用者態應用程式和其它作業系統之間的適配層(
adapter layer
),當這些應用程式需要在其他作業系統下呼叫乙個
win32 api
函式時,
wine
將把該呼叫轉換成相應作業系統下對該函式的模擬實現。
wine
系統在整個執行環境中起到的作用可以從三個角度理解。 l
從windows
應用程式的角度看,
wine
為其提供了
windows
軟體執行環境的模擬,不過這並不是對處理器指令的模擬,而是對
win32 api
函式的模擬。 l
從linux
及其核心的角度看,
wine
形成linux
核心與windows
應用程式之間的乙個中間層。它一方面為
windows
應用程式提供了一套完整的動態鏈結庫(
dynamic link library
,dll
),一方面將應用程式和動態鏈結庫中對
windows
的系統呼叫轉換成具有相似語義的
linux
的系統呼叫。 l
從windows
的動態連線庫和服務程序的角度來看,
wine
是windows
關鍵元件以模擬方式在
linux
上實現的移植。
體系結構
wine
未包含任何
linux
核心模組,即
wine
所有的元件均是在使用者態實現的。
wine
需要在linux
使用者態下基於
linux
系統呼叫來模擬實現
windows
的系統呼叫。然而,系統呼叫類似於函式呼叫,要讓兩個這樣的「函式呼叫」在呼叫上下文、輸入引數、函式語義和返回結果等各方面都完全一致是非常困難的。為了在使用者態彌補這一語義鴻溝,
wine
引入了wine server
這一服務程序。
如圖1所示,wine
構造了windows
應用軟體與
linux
核心之間的適配層,主要包括了乙個
wine
服務程序(
wine server
)和一組
windows
動態連線庫。此外,
wine
對使用者介面
api的模擬仍依賴於
x server
。在執行
windows
應用程式時,
wine
需要與三個程序互動: l
windows
應用程式程序。該程序對
windows api
函式呼叫均經由
wine
所提供的各種動態連線庫逐層向下**,直至
linux
核心系統呼叫。在
wine
內部,這個程序需要通過套接字(
socket
)和管道(
pipe
)介面與
wine
服務程序通訊,以呼叫
wine
服務程序提供的系統功能並接受服務程序的管理。
wine
上執行的
windows
應用程式程序是從
wine
的作業引導程式
wine
遷移過來的,
wine
為該應用程式的執行建立起與
wine
服務程序的連線之後載入目標程式,最後轉入目標程式的入口函式(
winmain
函式)開始執行。 l
wine
服務程序。該程序提供
windows
程序間通訊與同步的手段、
windows
程序與執行緒管理、登錄檔服務、各種
win32
物件的管理等。
wine
服務程序對程序、程序間通訊等的管理與
linux
核心所提供的相關服務並不衝突,因此只提供了
linux
核心中不存在或者與
windows
核心不相容的部分。
wine
服務程序實際是在為
windows
應用程式提供遠地過程呼叫(
remote procedure call
,rpc
)。可以說,
wine
服務程序是整個
wine
平台的核心,通過該服務程序,
wine
在使用者空間構造了乙個虛擬的「
windows
核心」。
wine
服務程序的目的實際就是在使用者態彌補
windows
核心與其他作業系統核心的差異,儘管遠端過程呼叫的方式帶來了一定程度的效能下降,但也避免了修改
linux
核心帶來的潛在不穩定因素。lx
服務程序。該程序提供非
windows
執行環境下的
gui服務,如圖形顯示輸出以及鍵盤和滑鼠輸入等。
虛擬機器技術簡介之一 虛擬機器的分類
近年來,虛擬機器技術已經逐漸成為人們關注的熱點,正受到越來越多的關注和重視,如vmware 已經被80 以上的全球百強企業所採納。隨著多年來研究的深入,虛擬機器技術已經在企業計算 災難恢復 分布式計算和系統安全領域得到了廣泛應用。圖1 層次化的虛擬機器分類 硬體抽象層的虛擬機器。對上層軟體 即客戶作...
虛擬機器技術綜述 2 硬體虛擬機器
2 硬體虛擬機器 硬體虛擬機器支援在一台計算機上存在多個執行時環境,每個執行時環境可以支援乙個作業系統。硬體虛擬機器能夠使為某種作業系統編寫的程式在另外一種作業系統上執行,或者提供比單一作業系統上多程序之間更嚴格的執行時沙箱。硬體虛擬機器現在也被稱作虛擬化或者虛擬伺服器。能提供硬體虛擬機器功能的宿主...
虛擬機器技術kvm,xen,vmware
在工作學習中使用過kvm xen vmware,平時只是環境搭建起來在上面用,並沒有真正去了解下它們到底是什麼東西,今天上網簡單了解下。首先,虛擬化好處是 能夠最大程度利用資源,為企業節約成本。其次,分別了解下kvm,xen,vmware到底是什麼東西。kvm是指基於linux核心 kernel b...