• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      劉洪蕾,丁香乾,侯瑞春

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

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

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

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

      1.1 虛擬機(jī)

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

      1.2 插件

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

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

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

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

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

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

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

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

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

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

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

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

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

      2.2 插件虛擬機(jī)的實(shí)現(xiàn)

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

      圖2 插件虛擬機(jī)流程圖

      插件虛擬機(jī)運(yùn)行時(shí),主要包括以下步驟:

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

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

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

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

      ③加密解密;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      [4]鄧維,廖小飛,金海.基于虛擬機(jī)的數(shù)據(jù)中心能耗管理機(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]詹姆斯,瑞維著,安虹,等譯.虛擬機(jī):系統(tǒng)與進(jìn)程的通用平臺(tái)第二版[M].北京:機(jī)械工業(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].計(jì)算機(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ì)和模塊化管理[J].中國信息界,2012(11):56-59.

      猜你喜歡
      配置文件管理器執(zhí)行器
      提示用戶配置文件錯(cuò)誤 這樣解決
      應(yīng)急狀態(tài)啟動(dòng)磁盤管理器
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      Windows文件緩沖處理技術(shù)概述
      測控技術(shù)(2018年12期)2018-11-25 09:37:50
      忘記ESXi主機(jī)root密碼怎么辦
      飛機(jī)裝配預(yù)連接緊固件自動(dòng)化安裝末端執(zhí)行器設(shè)計(jì)
      考慮執(zhí)行器飽和的改進(jìn)無模型自適應(yīng)控制
      一類具有執(zhí)行器飽和的非線性系統(tǒng)抗飽和方法研究
      胶州市| 宽甸| 如皋市| 鄂托克前旗| 二连浩特市| 萝北县| 墨竹工卡县| 深州市| 高清| 建阳市| 乌兰浩特市| 贡觉县| 股票| 台北市| 东丽区| 定兴县| 油尖旺区| 缙云县| 昌平区| 克拉玛依市| 横峰县| 新闻| 招远市| 红安县| 天柱县| 诸城市| 金阳县| 法库县| 正宁县| 福安市| 兰西县| 平远县| 西平县| 日喀则市| 乐平市| 竹溪县| 那曲县| 萝北县| 苏尼特左旗| 印江| 宿州市|