国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

插件虛擬機的設(shè)計與實現(xiàn)*

2014-11-10 07:09:40劉洪蕾丁香乾侯瑞春
關(guān)鍵詞:配置文件管理器執(zhí)行器

劉洪蕾,丁香乾,侯瑞春

(中國海洋大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島 266100)

虛擬機并不是新技術(shù),早在20世紀六七十年代,IBM研究中心就在試驗室里實現(xiàn)了其主機的鏡像,算是最原始的虛擬機了。之后一段時間發(fā)展緩慢,一度由于分時操作系統(tǒng)的出現(xiàn)而處于停滯狀態(tài)。20世紀90年代隨著Java虛擬機的推出,使對虛擬機技術(shù)的研究成為處理器設(shè)計人員、軟件設(shè)計人員、服務(wù)器設(shè)計人員和網(wǎng)絡(luò)安全設(shè)計人員的熱門研究課題。虛擬機并不只是應(yīng)用于對操作系統(tǒng),目前,在具體應(yīng)用領(lǐng)域的虛擬機開發(fā)得到迅速發(fā)展。這里將虛擬機的概念首次應(yīng)用到Net環(huán)境下的信息系統(tǒng)的開發(fā)過程中。

為了便于理解插件虛擬機的作用,首先介紹一種自動化業(yè)務(wù)流程規(guī)范語言——業(yè)務(wù)流程執(zhí)行語言BPEL(Business Process Execution Language),這與插件虛擬機中用XML配置文件實現(xiàn)業(yè)務(wù)邏輯有相似之處。BPEL是基于XML和Web服務(wù)的,用XML文檔寫入BPEL中的流程能在Web服務(wù)之間以標準化的交互方式得到精心組織,它簡化了將多個Web服務(wù)合成到一個新的業(yè)務(wù)流程中的操作[1]。這些流程能夠在任何一個符合BPEL規(guī)范的平臺或產(chǎn)品上執(zhí)行。BPEL通過合作伙伴連接來實現(xiàn)服務(wù)的調(diào)用,合作伙伴連接只定義所要調(diào)用的接口,它是一個抽象的網(wǎng)絡(luò)服務(wù)描述語言WSDL(Web Services Description Language)接口,這個接口在 BPEL運行時再綁定到真正的服務(wù)提供者上面[2]。這樣使接口和實現(xiàn)之間達到了一種松散耦合的效果,Web Service實現(xiàn)了接口的可重用性,而BPEL實現(xiàn)的是流程的可重用性。在XML配置文件中,“插件”類似于Web Service的接口,而BPEL對Web Service提供的服務(wù)類似于XML配置文檔對“插件”的執(zhí)行順序的控制。插件虛擬機的研究,提出了一種新的業(yè)務(wù)邏輯部分的實現(xiàn),在此之前,業(yè)務(wù)邏輯部分只能通過程序代碼實現(xiàn),現(xiàn)在轉(zhuǎn)換成只需要編寫描述性的文本語言,從而有效減少開發(fā)工作量,降低軟件開發(fā)成本。

1 相關(guān)名詞簡介

1.1 虛擬機

虛擬機按其表面意思來理解就是指虛擬的機器,這個機器并不是由真實的硬件所組成,而是通過軟件系統(tǒng)虛擬而成的具有跟真正機器類似功能的一種實現(xiàn)[3-5]?!安寮摂M機”的命名,是因為其設(shè)計思想與計算機的基本思想相類似:計算機的工作基于存儲程序與程序控制,其中存儲程序包括對程序及運行中所需數(shù)據(jù)的存儲,程序控制指計算機對程序中一條條指令的取出、分析與執(zhí)行[6];在插件虛擬機中,其主要工作是數(shù)據(jù)的存儲與插件的控制,數(shù)據(jù)的存儲包括外界輸入的數(shù)據(jù)及運行時數(shù)據(jù)的存儲,插件的控制包括插件的取出、分析與執(zhí)行。從功能上看,CPU的內(nèi)部結(jié)構(gòu)分為控制單元、邏輯單元和存儲單元3大部分[7],這3個部分互相協(xié)調(diào)進行分析、判斷、運算,并控制計算機各部件進行工作。插件虛擬機中根據(jù)各部分具體實現(xiàn)的功能,可以把它分為如下幾部分:插件運行時、插件執(zhí)行器、路由規(guī)則器、插件管理器、消息管理器、線程管理器、共享數(shù)據(jù)堆和運行時上下文。通過這幾部分的相互協(xié)作,共同完成信息系統(tǒng)中插件的有序調(diào)用與執(zhí)行。

1.2 插件

在開發(fā)信息系統(tǒng)軟件的時候,現(xiàn)在最常見的做法是把軟件按功能模塊來劃分,將每個功能模塊分別設(shè)計好之后,最后再組合起來形成最終的信息系統(tǒng)軟件。目前,在程序復(fù)用方面,最常見的是組件復(fù)用,最具有代表性的是微軟公司的組件對象模型COM(Component Object Model)和 Sun公司的企業(yè)級 JavaBean EJB(Enterprise JavaBean)。COM是基于分布式對象模型的開放標準,它詳細規(guī)定了一個COM組件所應(yīng)具有的二進制內(nèi)存結(jié)構(gòu)是組件集成的框架,這個框架支持對象的互操作性和可重用性[8-9],COM組件的創(chuàng)建由COM庫和類工廠協(xié)作完成,它是ActiveX技術(shù)的基礎(chǔ),并且運用于大多數(shù)的Windows編程;EJB是一種基于Java環(huán)境的針對服務(wù)器端的組件模型[10],其設(shè)計目標與核心應(yīng)用是部署分布式應(yīng)用程序,同時它定義了一個用于開發(fā)基于組件的企業(yè)多重應(yīng)用程序的標準,EJB技術(shù)簡化了用Java語言編寫企業(yè)級應(yīng)用系統(tǒng)的開發(fā)、配置和執(zhí)行[11]。插件虛擬機中的“插件”是在模塊、控件-組件中抽象出來的,單個模塊中可以包含多個插件,插件中可以包含控件和組件,在復(fù)雜的應(yīng)用系統(tǒng)中可以實現(xiàn)插件的嵌套,例如:信息系統(tǒng)首先劃分為幾個插件,插件中可以包含功能模塊,然后功能模塊中再包含插件。

2 虛擬機的設(shè)計及實現(xiàn)

2.1 組成結(jié)構(gòu)

插件虛擬機的工作是圍繞“插件”的調(diào)用展開的,信息系統(tǒng)被劃分為插件的形式,插件被統(tǒng)一定義在配置文件中,其中插件的編碼與實現(xiàn)插件的類相互對應(yīng),便于插件虛擬機在合適的場景與環(huán)境中調(diào)用插件。根據(jù)插件虛擬機要完成的功能將其分為以下幾部分,其結(jié)構(gòu)圖如圖1所示。

圖1 插件虛擬機結(jié)構(gòu)圖

(1)插件虛擬機運行時,為插件提供面向操作系統(tǒng)和Net環(huán)境的基礎(chǔ)服務(wù),解釋模塊配置文件,根據(jù)模塊配置文件創(chuàng)建各種子系統(tǒng);

(2)上下文管理器,提供對插件虛擬機傳入的參數(shù)的封裝;

(3)共享數(shù)據(jù)堆,提供插件間的數(shù)據(jù)共享服務(wù);

(4)消息管理器,提供插件間的消息發(fā)送功能;

(5)插件管理器,負責(zé)查找、加載、緩存插件;

(6)插件執(zhí)行器,負責(zé)從插件池中取出插件,執(zhí)行插件,并根據(jù)插件參數(shù)確定插件顯示模式;

(7)路由規(guī)則器,主要負責(zé)確定下一個需要執(zhí)行的插件的id,并將插件id發(fā)送給插件執(zhí)行器,由插件執(zhí)行器運行id對應(yīng)的插件;

(8)線程管理器,提供操作系統(tǒng)的線程封裝服務(wù),提供線程間數(shù)據(jù)傳遞服務(wù)。

2.2 插件虛擬機的實現(xiàn)

插件虛擬機的實現(xiàn),有其完備的執(zhí)行過程,不僅能夠完成基本的功能,而且能夠處理運行過程中產(chǎn)生的各種異常。其主要的技術(shù)點包括:插件間數(shù)據(jù)的存儲、插件的生命周期以及接口規(guī)范等。啟動插件虛擬機,會檢查各部分的完整性并加載XML配置文件中定義的所有“插件”,用戶界面輸入的數(shù)據(jù)會在插件虛擬機中的得到相應(yīng)的處理并觸發(fā)相應(yīng)“插件”的執(zhí)行。插件虛擬機的工作流程如圖2所示。

圖2 插件虛擬機流程圖

插件虛擬機運行時,主要包括以下步驟:

(1)插件虛擬機運行時加載并讀取配置文件信息,根據(jù)配置文件創(chuàng)建子系統(tǒng)。子系統(tǒng)包括:路由規(guī)則器、消息管理器、共享數(shù)據(jù)堆、線程管理器、上下文管理器、插件管理器、插件執(zhí)行器。然后,插件虛擬機運行時調(diào)用插件管理器;

(2)插件管理器加載配置文件中涉及到的插件,由加載單元通過Net環(huán)境調(diào)用操作系統(tǒng),在操作系統(tǒng)下查找插件。插件虛擬機運行時包含在名為pluginvm core.dll的動態(tài)鏈接庫中,為插件提供面向操作系統(tǒng)和Net環(huán)境的基礎(chǔ)服務(wù)。具體包括:

①文件操作及路徑查找服務(wù);

②唯一主機碼創(chuàng)建(包含CPU-網(wǎng)卡),即密碼驗證服務(wù),通過讀取主機唯一的CPU序列號以及網(wǎng)卡的序列號,按照相應(yīng)的公式計算出驗證碼,與軟件中存儲的密碼相匹配,保障了軟件安裝合法性,可以有效防止盜版;

③加密解密;

④面向Window操作系統(tǒng)API的托管封裝;

⑤解釋模塊配置文件,根據(jù)模塊配置文件創(chuàng)建各種子系統(tǒng)。

插件管理器查找到所有的配置文件中涉及到的插件后,確認可用的插件然后加載,插件管理器加載完畢后,等待插件執(zhí)行器調(diào)用。

加載配置文件中將插件加載至插件管理器中,由插件管理器統(tǒng)一管理加載的插件,并且將參數(shù)存儲至上下文管理器中。上下文管理器提供對運行插件虛擬機傳入的參數(shù)的封裝,具體為一個面向?qū)ο蟮墓1恚?/p>

(3)路由規(guī)則器根據(jù)插件執(zhí)行器調(diào)用插件后返回的結(jié)果或者根據(jù)加載單元提供的插件調(diào)用入口點確定插件執(zhí)行器需要執(zhí)行的插件編碼,并將該插件編碼傳遞給插件執(zhí)行器;

(4)插件執(zhí)行器接收路由規(guī)則器傳入的插件編碼,并從上下文管理器中獲得和本插件相關(guān)的參數(shù);插件執(zhí)行器通過調(diào)用插件的約定方法并在調(diào)用時傳入從上下文管理器中獲得的參數(shù)來執(zhí)行插件;

將插件執(zhí)行過程中產(chǎn)生的數(shù)據(jù),存儲至共享數(shù)據(jù)堆中,以供其他插件調(diào)用。不同的插件可以將需要共享的數(shù)據(jù)放入共享數(shù)據(jù)堆中,插件虛擬機退出后共享數(shù)據(jù)堆可以自動回收。插件虛擬機維護共享數(shù)據(jù)堆中的數(shù)據(jù)的引用計數(shù),當(dāng)數(shù)據(jù)引用計數(shù)為0的時候,共享數(shù)據(jù)將被自動回收。

插件執(zhí)行器負責(zé)從插件管理器中取出插件,調(diào)用插件的特定方法 Excute Plugin(PluginParam param)執(zhí)行插件;插件執(zhí)行器還負責(zé)處理插件異常信息,如果遇到需要退出插件虛擬機的異常則直接調(diào)用插件虛擬機提供的退出函數(shù)ExitVm(Excption ecode)退出插件虛擬機。

插件執(zhí)行器執(zhí)行完畢當(dāng)前插件后,還將當(dāng)前插件運行完畢后返回的數(shù)據(jù)轉(zhuǎn)發(fā)至路由規(guī)則器中,路由規(guī)則器根據(jù)插件執(zhí)行器返回的數(shù)據(jù)確定下一個需要執(zhí)行的插件的編碼,并將插件編碼發(fā)送給插件執(zhí)行器,由插件執(zhí)行器運行編碼對應(yīng)的插件。

(5)插件間可以通過插件虛擬機發(fā)送/接收消息。消息管理器包括消息隊列和消息派發(fā)器,消息隊列接收消息,并將其加入隊列,消息派發(fā)器按照隊列順序?qū)⑾⑴砂l(fā)給該消息所指定的插件。消息中攜帶有需要執(zhí)行插件的信息,消息管理器向插件管理器中的需要執(zhí)行的插件 (若插件管理器中沒有加載所述的需要執(zhí)行的插件,則由插件管理器重新加載,然后由插件執(zhí)行器執(zhí)行。具體過程與初始加載插件時一致:由加載單元通過Net環(huán)境調(diào)用操作系統(tǒng),在操作系統(tǒng)下查找插件。加載后的插件存儲至插件管理器中,參數(shù)存儲至參數(shù)封裝單元中,然后由插件執(zhí)行器可以調(diào)用)派發(fā)該消息,由插件管理器將該插件的編碼傳給插件執(zhí)行器,最終插件執(zhí)行器根據(jù)該插件的編碼執(zhí)行該插件。消息管理器的功能還有:消息隊列,負責(zé)存儲插件發(fā)送過來的消息,并按照先后順序排成隊列的形式。其中,插件需要實現(xiàn)AcceptRunMsg(RunMessage msg)接口接收插件管理器發(fā)送的消息。

目前,隨著軟件行業(yè)的發(fā)展,其規(guī)模和復(fù)雜性提高、使用范圍擴大,為了便于維護和管理,軟件開發(fā)過程中逐漸出現(xiàn)對開發(fā)方法的研究、軟件管理的規(guī)范、體系結(jié)構(gòu)的分離[12]。在開發(fā)信息系統(tǒng)軟件過程中,通常會將一個系統(tǒng)分為幾個相互獨立的功能模塊,由不同人員來開發(fā),最后再根據(jù)用戶的操作邏輯和業(yè)務(wù)邏輯組織起來。通過對插件虛擬機的研究,實現(xiàn)了縮減業(yè)務(wù)邏輯部分代碼,首次提出用配置文件的描述語言代替業(yè)務(wù)邏輯部分的代碼;其次,以“插件”的形式來實現(xiàn)信息系統(tǒng)中程序的復(fù)用,同一“插件”可以被多個模塊的配置文件使用。由此,可以降低軟件開發(fā)成本,縮短周期,增強可讀性,更加便于維護和管理。

[1]劉樹軍,王炳同,李莉.基于 WS-BPEL的 Web服務(wù)組合技術(shù)[J].計算機系統(tǒng)應(yīng)用,2012(8):206-209.

[2]陳建飛,申晨光,韓偉力.面向WS-BPEL的訪問控制策略合成研究[J].計算機應(yīng)用與軟件,2012,29(3):195-197.

[3]劉菲軍,陳俊杰,郭濤,等.云計算下虛擬機部署機制的研究[J].電腦開發(fā)與應(yīng)用,2012(5):4-6.

[4]鄧維,廖小飛,金海.基于虛擬機的數(shù)據(jù)中心能耗管理機制[J].中興通訊技術(shù),2012(4):15-18.

[5]Wu Dongyao, Wei Jun, Gao Chushu, et al.Event-driven process execution model for virtual machine[J].Computer Integrated Manufacturing Systems, 2012(8): 1675-1685.

[6]詹姆斯,瑞維著,安虹,等譯.虛擬機:系統(tǒng)與進程的通用平臺第二版[M].北京:機械工業(yè)出版社,2009.4 2f

[7]EMOTO, MASAHIKO, YOSHIDA, et al.Application of virtual machine technology to real-time mapping of Thomson scattering data to flux coordinates for the LHD[J].Fusion Engineering and Design, 2012(87): 2076-2080.

[8]劉春泉,周紹梅,劉小東.COM在軟件復(fù)用中的應(yīng)用[J].計算機與現(xiàn)代化,2005(5):28-30.

[9]潘恒.中間件技術(shù)——COM組件的探究[J].科協(xié)論壇:下半月,2011(4):61-62.

[10]喬波.新一代 EJB組件技術(shù)研究[J].科技信息,2009(5):62-63.

[11]劉秋梅,鄭耿忠.EJB組件技術(shù)在數(shù)字參考咨詢系統(tǒng)中的應(yīng)用[J].圖書館學(xué)刊,2010(12):85-87.

[12]夏明忠,夏以軒,李兵元.軟件模塊化設(shè)計和模塊化管理[J].中國信息界,2012(11):56-59.

猜你喜歡
配置文件管理器執(zhí)行器
提示用戶配置文件錯誤 這樣解決
應(yīng)急狀態(tài)啟動磁盤管理器
搭建簡單的Kubernetes集群
互不干涉混用Chromium Edge
Windows文件緩沖處理技術(shù)概述
測控技術(shù)(2018年12期)2018-11-25 09:37:50
忘記ESXi主機root密碼怎么辦
飛機裝配預(yù)連接緊固件自動化安裝末端執(zhí)行器設(shè)計
考慮執(zhí)行器飽和的改進無模型自適應(yīng)控制
一類具有執(zhí)行器飽和的非線性系統(tǒng)抗飽和方法研究
福建省| 北京市| 靖西县| 阳朔县| 扶沟县| 莫力| 武夷山市| 锡林郭勒盟| 新巴尔虎右旗| 青龙| 五常市| 兴宁市| 同德县| 天镇县| 茂名市| 班戈县| 融水| 乌兰察布市| 隆昌县| 宣威市| 九龙县| 古丈县| 睢宁县| 霸州市| 武山县| 屏东市| 都江堰市| 江北区| 社旗县| 秀山| 肇庆市| 游戏| 孝感市| 马边| 虎林市| 安宁市| 辽源市| 固镇县| 孝感市| 北流市| 阳朔县|