虛擬機器技術簡介之四 API層虛擬機器

2021-06-16 02:09:19 字數 2789 閱讀 3437

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...