專利名稱:嵌入式可裁剪式虛擬機的制作方法
技術領域:
本發(fā)明涉及一種嵌入式可裁剪式虛擬機,屬于嵌入式系統(tǒng)領域。
背景技術:
物聯(lián)網(wǎng)嵌入式虛擬機技術是一種用于工業(yè)現(xiàn)場,通過網(wǎng)絡實現(xiàn)動態(tài)配置、腳本控 制的技術,被廣泛用于嵌入式設備、網(wǎng)絡、機器視覺等眾多領域。在自動化生產(chǎn)線、遠程設備 調(diào)試上,嵌入式虛擬機技術起著關鍵性作用。廠家使用嵌入式虛擬機技術通過網(wǎng)絡進行系 統(tǒng)配置、遠程調(diào)試與控制,從而可降低現(xiàn)場人工操作量、提高調(diào)試效率、方便控制系統(tǒng)流程。目前,國際市場中根據(jù)虛擬機的應用領域分為3類,即服務器虛擬機、PC虛擬機、 嵌入式虛擬機。服務器虛擬機有Hyper-V、VMware Server、Xen, Virtual Server等,在系 統(tǒng)安全性、部署軟件、開發(fā)測試等方面具有重要作用。PC虛擬機有VMware Workstation, Virtualbox,Virtualbox等,使單一架構的PC機同時具有多種操作系統(tǒng),并能同時訪問。嵌 入式虛擬機還處于發(fā)展階段,目前主要有google公司的DalviKCognex公司用于機器視覺 腳本的虛擬機,但均無可裁剪性。意味著它們只能運用在嵌入式中高端芯片之上,對于那些 低端的8位、16位CPU,則無法展示其優(yōu)勢,甚至無法運行。隨著物聯(lián)網(wǎng)的快速發(fā)展,對嵌入式底層設備提出了更高要求。物聯(lián)網(wǎng)將底層設備 統(tǒng)一在一起,這就勢必引出遠程配置、控制、調(diào)試、安全等關鍵技術問題。為使其有一個公共 的開發(fā)平臺,研發(fā)一種高性價比、通用性強的嵌入式可裁剪式虛擬機具有重要意義。隨著物聯(lián)網(wǎng)技術的發(fā)展,用戶需要基于底層嵌入式設備實現(xiàn)遠程系統(tǒng)配置與調(diào) 試。嵌入式底層設備具有多樣化性,如果為每個嵌入式底層設備開發(fā)相關網(wǎng)絡通信模塊,勢 必加大投入。目前,只有Tridium公司推出開源軟件編程開放平臺,包括Sedona編程語言、 工具包、虛擬機、編譯器、圖形化開發(fā)調(diào)試工具等。它是控制網(wǎng)成為物聯(lián)網(wǎng)形態(tài)一種軟件體 系架構,目的是把現(xiàn)場總線上的物理設備形成Sedona設備,通過B/S訪問模式對Sedona設 備進行管理和監(jiān)控。但該種結構只是簡單的通過網(wǎng)絡將各種資源整合到服務器中,而且只 能對某一區(qū)域內(nèi)的設備進行“物聯(lián)”,還沒有達到遠程配置調(diào)試的目的。嵌入式可裁剪式虛擬機可以根據(jù)實際需求動態(tài)改變自身功能,滿足不同的嵌入式 環(huán)境需求,向上可以滿足ARM、DSP這種高性能芯片,向下可以用于單片機這類低端芯片,并 且該虛擬機的可移植層提高了虛擬機跨平臺的能力,用戶只需簡單的配置就可以將虛擬機 移植到所需平臺上。再者,該虛擬機可以通過腳本進行遠程配置系統(tǒng)信息,遠程調(diào)試,減少 人力。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術中存在的不足,提供一種嵌入式可裁剪式虛擬機, 可根據(jù)需求實現(xiàn)模塊的裁剪,既滿足需求,又節(jié)省系統(tǒng)資源,是一種適合于工業(yè)現(xiàn)場遠程調(diào) 控和配置,并滿足功能要求的嵌入式可裁剪式虛擬機。按照本發(fā)明提供的技術方案,所述嵌入式可裁剪式虛擬機包括
3一個用于管理虛擬機內(nèi)存的內(nèi)存管理模塊,負責一切實例對象及相關內(nèi)存的申請與銷毀;
一個用于class文件編譯成本地代碼的即時編譯模塊,以提高程序執(zhí)行效率; 一個用于解釋執(zhí)行字節(jié)碼的解釋器; 一個用于管理線程的線程管理模塊; 一個本地接口,負責調(diào)用相關工具模塊;
一個運行時數(shù)據(jù)區(qū),用于存儲包括方法區(qū)、堆、運行時棧、本地方法棧信息; 一個可移植層,以提升虛擬機的跨平臺能力;
所述內(nèi)存管理模塊與所述即時編譯模塊、解釋器、本地接口、運行時數(shù)據(jù)區(qū)和可移植層 均相連;運行時數(shù)據(jù)區(qū)與所述即時編譯模塊、解釋器、本地接口和可移植層均相連;即時編 譯模塊連接本地接口 ;解釋器連接本地接口 ;虛擬機整體與可移植層相連。所述線程管理模塊分為用戶級和內(nèi)核級兩種管理方式,當腳本程序中沒有人機交 互指令時采用用戶級線程管理,否則采用內(nèi)核級線程管理。所述可移植層將底層的不同應用程序編程接口抽象成統(tǒng)一接口,供虛擬機調(diào)用。該虛擬機采用自身的內(nèi)存管理算法,或采用可移植層中所提供的內(nèi)存管理算法, 或采用用戶自定義的內(nèi)存管理算法。所述可移植層包含內(nèi)存、網(wǎng)絡、線程、I/O、文件五部分模塊,通過網(wǎng)絡進行系統(tǒng)動 態(tài)配置。本發(fā)明的優(yōu)點是由于采用模塊化設計,降低開發(fā)成本,促進軟件復用,方便二次 開發(fā)。解釋器和即時編譯模塊的存在提升了嵌入式系統(tǒng)的選擇空間,本地接口設計加強了 功能的擴展,可移植層模塊提高了虛擬機的可移植性。嵌入式可裁剪式虛擬機的發(fā)明使物 聯(lián)網(wǎng)嵌入式底層設備的遠程動態(tài)配置、調(diào)試更加快捷。該嵌入式可裁剪式虛擬機通過腳本 文件進行遠程配置、調(diào)試,用戶無需攜帶專業(yè)設備到工業(yè)現(xiàn)場進行調(diào)試,既提高了效率,又 減少了開發(fā)成本。
圖1為本發(fā)明的結構框圖。圖2為可裁剪式虛擬機組件層次結構圖。圖3(a)為虛擬機自身的內(nèi)存申請流程圖。圖3(b)為虛擬機自身的內(nèi)存調(diào)整流程圖。圖3(c)為虛擬機自身的內(nèi)存釋放流程圖。圖4為解釋器和即時編譯模塊執(zhí)行流程圖。圖5為可移植層原理圖。圖6(a)為可移植層內(nèi)部模塊內(nèi)存調(diào)用流程圖。圖6(b)為可移植層內(nèi)部模塊線程管理流程圖。
具體實施例方式下面結合附圖和實施例對本發(fā)明作進一步說明。如圖1所示,所述的嵌入式可裁剪式虛擬機由內(nèi)存管理、即時編譯、解釋器、線程管理、本地接口、可移植層等模塊組成。具體包括一個用于管理虛擬機內(nèi)存的內(nèi)存管理模 塊,負責一切實例對象及其它相關內(nèi)存的申請與銷毀;一個用于class文件編譯成本地代 碼的即時編譯模塊,以提高程序執(zhí)行效率;一個用于解釋執(zhí)行字節(jié)碼的解釋器;一個用于 管理線程的線程管理模塊;一個本地接口,負責調(diào)用相關工具模塊;一個運行時數(shù)據(jù)區(qū),存 儲了方法區(qū)、堆、運行時棧、本地方法棧等信息;一個包含多種軟硬平臺的可移植層,負責虛 擬機的跨軟硬兩種平臺。虛擬機在類裝載、運行等過程中需要大量申請內(nèi)存,只要和內(nèi)存相關部分,都由內(nèi) 存管理模塊維護,內(nèi)存管理模塊連接虛擬機其他的所有模塊;即時編譯模塊是將class文 件編譯成本地代碼所用,連接本地接口、運行時數(shù)據(jù)區(qū)、內(nèi)存管理;解釋器主要完成代碼的 解釋執(zhí)行,連接本地接口、運行時數(shù)據(jù)區(qū)、內(nèi)存管理;線程管理主要對用戶腳本內(nèi)的各個線 程進行管理,與運行時數(shù)據(jù)區(qū)、內(nèi)存管理相連;本地接口主要為虛擬機提供調(diào)用本地方法的 接口,與運行時數(shù)據(jù)區(qū)、解釋器、即時編譯模塊、內(nèi)存管理相連;運行時數(shù)據(jù)區(qū)與虛擬機的其 他模塊均相連;可移植層與整個虛擬機相連,提升虛擬機的跨平臺能力。所述的內(nèi)存管理模塊對裝載和運行過程中產(chǎn)生的內(nèi)存進行管理。即時編譯模塊可 根據(jù)實際需求將腳本程序編譯成本地代碼,提高運行速度。解釋器模塊對腳本程序解釋執(zhí) 行。本地接口調(diào)用嵌入式本地工具代碼,提高系統(tǒng)運行速度。所述的嵌入式可裁剪式虛擬機可移植層主要由多種平臺的內(nèi)存、線程、網(wǎng)絡、文 件、I/O等部分組成,具體采用何種平臺代碼由虛擬機運行時動態(tài)確定。用戶腳本(User Script)采用Java語言編寫,編譯后通過網(wǎng)絡將class文件下載 到RAM中;配置信息則是對相關終端設備進行配置。虛擬機在配置完成后,通過Java本地 接口(Java Native Interface,JNI)調(diào)用相關模塊或其它本地代碼來完成用戶腳本的執(zhí) 行,最后達到控制、顯示的效果。圖2所示,該虛擬機由解釋器、線程、即時編譯模塊、網(wǎng)絡、內(nèi)存等組成,不同平臺 對應不同組件,虛擬機會根據(jù)實際需求而生成。另外,用戶還可以自行開發(fā)某個組件來替換 原有組件。如圖3 (a) (b) (c)所示的嵌入式可裁剪式虛擬機自身的內(nèi)存管理方式,虛擬機 在實現(xiàn)時會多次申請內(nèi)存,如果都由系統(tǒng)內(nèi)核來管理,勢必造成額外的運行開銷,并產(chǎn)生內(nèi) 存碎片。虛擬機自身具有可靠的內(nèi)存管理避免了虛擬機無法申請到內(nèi)存而造成崩潰。虛擬 機采用兩個雙向鏈表空閑表和使用表,為了便于代碼實現(xiàn),分配時從尾端開始向前進行分 配,每次分配后需修改IdleBlockSize (IdleBlockSize為空閑區(qū)的大小)。內(nèi)存節(jié)點結構 由 DataSize、RealSize、TestBlock、Memory、OtherBlock 組成,其含義分別為申請的內(nèi)存大 小、該結構所占空間大小、檢測塊,為四個字節(jié)的字符‘T’、實際申請的內(nèi)存塊、空間余量,主 要用于內(nèi)存調(diào)整函數(shù)。圖4所示,虛擬機會根據(jù)運行環(huán)境的資源開銷程度來確定是否采用即時編譯技 術,一旦采用該技術,虛擬機會檢測運行環(huán)境并將代碼編譯成本地代碼,提高運行速度,但 也增加了系統(tǒng)開銷。而解釋器的運行速度雖然沒有即時編譯那么快,但也足以在許多場合 適用,且其系統(tǒng)開銷較小。圖5所示,本發(fā)明嵌入式可裁剪式虛擬機將底層的不同API(應用程序編程接口 )抽 象成統(tǒng)一接口以達到虛擬機的高效移植。這些模塊主要有線程、內(nèi)存、網(wǎng)絡等,抽象后的模塊分別命名為P1 thread、ρlmemory、ρInet,在各個模塊的名字前加“ρ 1 ”表示這是可移植層 抽象后的模塊。以線程(Thread)模塊為例,虛擬機只會調(diào)用plthread,由此提高了虛擬機 的移植性。各模塊連接方式如圖5所示各個平臺的線程模塊被抽象到plthread模塊中,內(nèi) 存模塊抽象到Plmemory中,網(wǎng)絡模塊抽象到plnet中,其它模塊類似。抽象后的plthread、 plmem0ry、plnet、其它模塊整合成可移植層,可移植層與虛擬機相連接,為虛擬機的跨平臺 提供可能。所述的可移植層將底層不同平臺中具有同一功能API抽象成統(tǒng)一接口,主要包含 各種平臺的內(nèi)存、網(wǎng)絡、線程、I/O、文件五部分模塊,并能通過網(wǎng)絡進行系統(tǒng)動態(tài)配置。以線 程模塊為例,不同平臺(DSP、ARM或其它)的線程模塊被抽象成可移植層的plthread模塊, 虛擬機只會調(diào)用plthread,并根據(jù)初始的宏定義來確定具體采用何種平臺的相關代碼。開 發(fā)者只要將可移植層設計完善,使其盡量包含多的平臺,用戶只需簡單的定義相關宏就能 實現(xiàn)虛擬機的移植,以滿足不同的嵌入式環(huán)境需求,既可以滿足ARM、DSP這種高性能芯片, 又可以用于單片機這類低端芯片,提高了開發(fā)效率和應用范圍。有了可移植層的支持,不同 類庫中的與平臺相關的代碼完全被可移植層捕獲,并由其確定調(diào)用對象,加強了系統(tǒng)的功 能擴展。所述的可移植層包含多種軟硬平臺信息,使虛擬機完全可以跨平臺,而不單單是 腳本程序的跨平臺,該方案大大提高了虛擬機的可移植性。圖6 (a) (b)所示,虛擬機可以采用自身的內(nèi)存管理算法,也可以采用可移植層中 所提供的內(nèi)存管理算法,更可以采用用戶開發(fā)的高效算法,這完全取決于用戶??梢浦矊訛?虛擬機提供了兩種方式的線程管理用戶級線程管理和內(nèi)核級線程管理。對于需要人機交 互的多線程進行API重寫,使虛擬機中對于線程API的調(diào)用都依賴可移植層,提高了可移植 性;在確定沒有人機交互的腳本程序,對線程進行用戶級管理,這樣可以避免內(nèi)核調(diào)度,節(jié) 約運行時間。本嵌入式可裁剪式虛擬機采用“即時編譯+解釋器”的組合模式,根據(jù)系統(tǒng)執(zhí)行的 代碼量和所能承受的負擔來確定采用何種方式,提高處理效率。虛擬機模塊化、可裁剪,動 態(tài)調(diào)用工具模塊,動態(tài)配置系統(tǒng)信息,功能強,可廣泛用于物聯(lián)網(wǎng)底層各種嵌入式設備,如 機器視覺,覆蓋領域廣闊。
權利要求
1.嵌入式可裁剪式虛擬機,其特征是包括一個用于管理虛擬機內(nèi)存的內(nèi)存管理模塊,負責一切實例對象及相關內(nèi)存的申請與銷毀;一個用于Class文件編譯成本地代碼的即時編譯模塊,以提高程序執(zhí)行效率; 一個用于解釋執(zhí)行字節(jié)碼的解釋器; 一個用于管理線程的線程管理模塊; 一個本地接口,負責調(diào)用相關工具模塊;一個運行時數(shù)據(jù)區(qū),用于存儲包括方法區(qū)、堆、運行時棧、本地方法棧信息; 一個可移植層,以提升虛擬機的跨平臺能力;所述內(nèi)存管理模塊與所述即時編譯模塊、解釋器、本地接口、運行時數(shù)據(jù)區(qū)和可移植層 均相連;運行時數(shù)據(jù)區(qū)與所述即時編譯模塊、解釋器、本地接口和可移植層均相連;即時編 譯模塊連接本地接口 ;解釋器連接本地接口 ;虛擬機整體與可移植層相連。
2.如權利要求1所述嵌入式可裁剪式虛擬機,其特征是所述線程管理模塊分為用戶級 和內(nèi)核級兩種管理方式,當腳本程序中沒有人機交互指令時采用用戶級線程管理,否則采 用內(nèi)核級線程管理。
3.如權利要求1所述嵌入式可裁剪式虛擬機,其特征是所述可移植層將底層的不同應 用程序編程接口抽象成統(tǒng)一接口,供虛擬機調(diào)用。
4.如權利要求1所述嵌入式可裁剪式虛擬機,其特征是虛擬機采用自身的內(nèi)存管理算 法,或采用可移植層中所提供的內(nèi)存管理算法,或采用用戶自定義的內(nèi)存管理算法。
5.如權利要求1所述嵌入式可裁剪式虛擬機,其特征是所述可移植層包含內(nèi)存、網(wǎng)絡、 線程、I/O、文件五部分模塊,通過網(wǎng)絡進行系統(tǒng)動態(tài)配置。
全文摘要
本發(fā)明提供了一種應用于物聯(lián)網(wǎng)底層嵌入式設備的可裁剪式虛擬機,包括一個內(nèi)存管理模塊、一個即時編譯模塊、一個解釋器模塊、一個線程管理模塊、一個本地接口模塊、一個運行時數(shù)據(jù)區(qū)、一個可移植層模塊??梢浦矊影瑑?nèi)存、網(wǎng)絡、線程、文件、I/O等模塊,通過網(wǎng)絡進行系統(tǒng)動態(tài)配置,使虛擬機實現(xiàn)跨平臺??刹眉羰教摂M機適用于物聯(lián)網(wǎng)底層不同層次嵌入式設備的需求,具有應用范圍廣、體積小、能耗低、功能強、配置靈活的特點,可廣泛用于物聯(lián)網(wǎng)底層各種嵌入式設備,如機器視覺,覆蓋領域廣闊。
文檔編號G06F9/455GK102004662SQ20101057677
公開日2011年4月6日 申請日期2010年12月7日 優(yōu)先權日2010年12月7日
發(fā)明者白瑞林, 趙潔 申請人:江南大學