欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)的制作方法

文檔序號:12463375閱讀:318來源:國知局
Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)的制作方法與工藝
本發(fā)明涉及飛行模擬
技術(shù)領(lǐng)域
,更具體地說,本發(fā)明涉及一種在Windows操作系統(tǒng)下的飛行模擬系統(tǒng)。
背景技術(shù)
:隨著數(shù)字計算機的出現(xiàn)和發(fā)展,自20世紀(jì)80年代起,數(shù)字技術(shù)逐漸被應(yīng)用到飛行模擬器的開發(fā)研究中,目前數(shù)字式飛行模擬器已成為國內(nèi)外眾多知名飛行模擬器研究機構(gòu)和生產(chǎn)廠商的主要研究對象。國外從事飛行模擬器研制的公司主要有:加拿大的CAE公司和Mechtrontix公司,英國的Thales公司、美國的FlightSafety公司和Frasca公司以及法國Thomson公司等。國外眾多的大學(xué)和科研機構(gòu)也紛紛開展了高逼真度飛行模擬器的研究工作,著名的有荷蘭Delft大學(xué)的Simona研究所、荷蘭NLR航空實驗室和加拿大多倫多大學(xué)等,這些研究機構(gòu)為飛行模擬器提供了從仿真軟件體系結(jié)構(gòu)、運動系統(tǒng)設(shè)計到模擬座艙設(shè)計等多方面具有前瞻性和基礎(chǔ)性的研究工作。與國外相比,我國飛行模擬器的研究工作起步較晚,研究技術(shù)尚不成熟。僅有極少數(shù)公司能夠從事飛行模擬器的研制工作,如北京航空模擬器公司和北京藍天航空模擬器公司等。1993年北京航空模擬器公司聯(lián)合北京航空航天大學(xué)研制成功的運七-100飛機飛行模擬器,它是國內(nèi)首臺采用數(shù)字計算機技術(shù)研制而成的飛行模擬器,其性能已達到了國外80年代末先進水平,對國內(nèi)飛行模擬器的發(fā)展具有里程碑意義。2003年北京藍天航空模擬器公司研制成功的新舟-60飛機飛行模擬器,它是國內(nèi)首臺獲得民航總局C級認(rèn)證的飛行模擬器,代表了國產(chǎn)飛行模擬器的最高水平。新舟-60飛行模擬器的主仿真計算機系統(tǒng)是基于VME總線的X86單板計算機構(gòu)建出的并行多處理器,采用共享內(nèi)存機制、Vxworks嵌入式實時操作系統(tǒng)和信號燈機制等完成了對并行執(zhí)行仿真任務(wù)的時鐘控制、數(shù)據(jù)流控制和接口控制。同時它還具備完善的航電設(shè)備模擬系統(tǒng),視景系統(tǒng)和運動系統(tǒng)等。對飛行模擬器開展研究的國內(nèi)大學(xué)和科研機構(gòu)主要有北京航空航天大學(xué)、西北工業(yè)大學(xué)、哈爾濱工業(yè)大學(xué)、空軍軍訓(xùn)器材研究所和空軍哈爾濱仿真技術(shù)研究所等,其中比較有代表性的飛行模擬器是空軍哈爾濱仿真技術(shù)研究所研制成功的Y12-M飛機飛行模擬器和伊爾-76飛機飛行模擬器。傳統(tǒng)的飛行模擬器依賴單個計算機對模擬系統(tǒng)中節(jié)點進行調(diào)度和運算,而單機性能難以大幅提高,因此傳統(tǒng)基于單機的飛行模擬系統(tǒng)性能受限于單機性能。同時單機的系統(tǒng)故障會導(dǎo)致整個整個模擬系統(tǒng)的運行異常,因此基于單機的飛行模擬系統(tǒng)健壯性較差?,F(xiàn)有基于分布式的飛行模擬器通常節(jié)點間通信采用對整塊共享內(nèi)存進行分段存儲的方式,每個節(jié)點的內(nèi)存塊映射到整個共享內(nèi)存中的一段,沒有對數(shù)據(jù)進行有效管理,存在數(shù)據(jù)索引困難、查找速度慢的問題。此外現(xiàn)有飛行模擬器分布式通信主要依賴GE公司的VMIC反射內(nèi)存卡,GE公司反射內(nèi)存卡在Windows操作系統(tǒng)下不開放源代碼,因此存在安全性上的問題。若需要搭建基于VMIC反射內(nèi)存卡的星形網(wǎng)絡(luò),還需搭配專用交換機,組網(wǎng)成本較高。另外分布式程序開發(fā)與調(diào)試較單機困難?,F(xiàn)有飛行模擬器各節(jié)點模型無統(tǒng)一的抽象模型,造成了代碼冗余、不規(guī)范的問題,不利于軟件開發(fā)和后期維護。技術(shù)實現(xiàn)要素:本發(fā)明的一個目的是解決上述至少一個問題或缺陷,并提供后面將說明的至少一個優(yōu)點。本發(fā)明還有一個目的是提供一種Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng),其通過內(nèi)存數(shù)據(jù)庫解決模擬器節(jié)點間數(shù)據(jù)管理、共享的問題。通過在通信部分提供基于以太網(wǎng)的分布式共享內(nèi)存、VMIC反射內(nèi)存卡共享內(nèi)存和本地共享內(nèi)存三種運行方式,解決飛行模擬器在各種使用場景下的需求。通過采用節(jié)點模型組件化的方式,以XML格式為配置文件,定義了標(biāo)準(zhǔn)的接口規(guī)范和體系結(jié)構(gòu)標(biāo)準(zhǔn),實現(xiàn)了代碼的可重用、可移植。為了實現(xiàn)根據(jù)本發(fā)明的這些目的和其它優(yōu)點,提供了一種Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng),包括:組件化節(jié)點部分,其用于為飛行模擬器中各節(jié)點程序提供統(tǒng)一的管理和注冊方式;內(nèi)存數(shù)據(jù)庫部分,其用于為所述組件化節(jié)點部分內(nèi)數(shù)據(jù)提供一種快速索引、查找方式;以及通信部分,其為所述內(nèi)存數(shù)據(jù)庫部分提供統(tǒng)一的讀寫數(shù)據(jù)接口,用于為所述內(nèi)存數(shù)據(jù)庫部分屏蔽底層通信細節(jié)的復(fù)雜性,提供統(tǒng)一的抽象,提高飛機模擬系統(tǒng)部署環(huán)境的靈活性;其中,所述組件化節(jié)點部分以XML格式為配置文件,定義了標(biāo)準(zhǔn)的Model基類接口和體系結(jié)構(gòu)標(biāo)準(zhǔn),實現(xiàn)了代碼的可重用、可移植;所述內(nèi)存數(shù)據(jù)庫部分采用B+樹的數(shù)據(jù)結(jié)構(gòu)建立表索引,變量索引及映射索引;所述通信部分采用三種運行方式,解決飛行模擬器在各種使用場景下的需求。優(yōu)選的是,其中,所述組件化節(jié)點部分包括:組件標(biāo)準(zhǔn)接口模塊、組件注冊模塊和組件管理模塊,所述組件標(biāo)準(zhǔn)接口模塊為節(jié)點提供標(biāo)準(zhǔn)的接口;所述組件注冊模塊負(fù)責(zé)對組件完成注冊相關(guān)操作;所述組件管理模塊用鏈表的方式對所有節(jié)點實現(xiàn)統(tǒng)一的管理。優(yōu)選的是,其中,內(nèi)存數(shù)據(jù)庫部分包括:數(shù)據(jù)操作模塊、映射操作模塊和索引樹模塊,所述數(shù)據(jù)操作模塊為節(jié)點提供內(nèi)存數(shù)據(jù)庫的訪問接口;所述內(nèi)存映射操作模塊為節(jié)點提供讀取映射數(shù)據(jù)的接口,映射用于將節(jié)點產(chǎn)生實際數(shù)據(jù)和所述內(nèi)存數(shù)據(jù)庫實際存放數(shù)據(jù)進行轉(zhuǎn)換;所述索引樹模塊用于存放所述內(nèi)存數(shù)據(jù)庫的實際數(shù)據(jù)。優(yōu)選的是,其中,所述通信部分包括:反射內(nèi)存操作模塊、本地共享內(nèi)存模塊和分布式共享內(nèi)存模塊,所述反射內(nèi)存操作模塊采用基于VMIC反射內(nèi)存卡,為飛行模擬器提供高性能分布式通信支撐;所述本地共享內(nèi)存模塊可以讓人員方便對模擬系統(tǒng)在單機上進行調(diào)試、開發(fā);所述分布式共享內(nèi)存模塊采用基于以太網(wǎng)的共享內(nèi)存方案,為飛行模擬系統(tǒng)提供分布式數(shù)據(jù)共享支撐,保證網(wǎng)絡(luò)中各節(jié)點可以進行快速的數(shù)據(jù)交換。優(yōu)選的是,其中,所述索引樹模塊包括三個用于索引的B+樹和五個用于存放臨時數(shù)據(jù)的鏈表。優(yōu)選的是,其中,所述反射內(nèi)存操作模塊包括用戶態(tài)接口單元和內(nèi)核態(tài)驅(qū)動單元,所述用戶態(tài)接口單元為內(nèi)存數(shù)據(jù)庫提供訪問反射內(nèi)存操作模塊的接口,并將數(shù)據(jù)發(fā)送給所述內(nèi)核態(tài)驅(qū)動單元,所述內(nèi)核態(tài)驅(qū)動單元接收由所述用戶態(tài)單元傳入的數(shù)據(jù)并將其寫入板卡自身內(nèi)存;所述本地共享內(nèi)存模塊由內(nèi)存管理單元構(gòu)成,所述內(nèi)存管理單元負(fù)責(zé)將同一塊物理內(nèi)存映射到各節(jié)點的虛擬內(nèi)存地址空間內(nèi),實現(xiàn)了節(jié)點間數(shù)據(jù)共享;所述分布式共享內(nèi)存模塊包括:接口單元、協(xié)議處理單元和通信單元,所述接口單元向內(nèi)存數(shù)據(jù)庫部分提供讀寫數(shù)據(jù)的接口,協(xié)議處理單元調(diào)用所述通信單元將數(shù)據(jù)包組播到網(wǎng)絡(luò)上各節(jié)點,所述通信單元同時負(fù)責(zé)接受所接受的數(shù)據(jù)包并交給協(xié)議處理單元進行解包,解析出數(shù)據(jù)包種信息后交給接口單元將數(shù)據(jù)寫入節(jié)點本地內(nèi)存。優(yōu)選的是,其中,VMIC反射內(nèi)存卡網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用環(huán)形網(wǎng)絡(luò)或星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。優(yōu)選的是,其中,三個用于索引的B+樹為索引變量表的變量表樹、索引變量的變量樹與索引映射的映射樹;五個用于存放臨時數(shù)據(jù)的鏈表為節(jié)點信息鏈表、空閑塊鏈表、變量表鏈表、映射表鏈表和主機鏈表。優(yōu)選的是,其中,所述分布式共享內(nèi)存模塊的網(wǎng)絡(luò)結(jié)構(gòu)采用星型拓?fù)浣Y(jié)構(gòu)。本發(fā)明至少包括以下有益效果:1、利用提供采用以B+樹為數(shù)據(jù)結(jié)構(gòu)的內(nèi)存數(shù)據(jù)庫,為節(jié)點內(nèi)數(shù)據(jù)提供一種快速索引、查找方式;2、通過三種通信方式,提高飛行模擬系統(tǒng)應(yīng)用范圍靈活性:以太網(wǎng)的分布式共享內(nèi)存可以提供一種在對實時性要求不高場景下低成本分布式通信方式,VMIC反射內(nèi)存卡可以提供一種低延時、高帶寬的通信方式,本地共享內(nèi)存可以讓人員方便對模擬系統(tǒng)在單機上進行調(diào)試、開發(fā);3、利用采用組件化思想的節(jié)點模型,為各節(jié)點程序提供統(tǒng)一的管理、注冊方式,降低了程序的開發(fā)難度并提高了程序的可擴展性。本發(fā)明的其它優(yōu)點、目標(biāo)和特征將部分通過下面的說明體現(xiàn),部分還將通過對本發(fā)明的研究和實踐而為本領(lǐng)域的技術(shù)人員所理解。附圖說明圖1為本發(fā)明的一個實施例中Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)的結(jié)構(gòu)示意圖;圖2說明的是Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)中組件化節(jié)點部分組件化實現(xiàn)流程圖;圖3為數(shù)據(jù)操作模塊結(jié)構(gòu)示意圖;圖4說明的映射操作模塊結(jié)構(gòu)示意圖;圖5說明的是索引樹模塊結(jié)構(gòu)示意圖;圖6說明的是本地共享內(nèi)存模塊結(jié)構(gòu)示意圖;圖7說明的是反射內(nèi)存操作模塊結(jié)構(gòu)示意圖;圖8說明的是分布式共享內(nèi)存模塊結(jié)構(gòu)示意圖;圖9說明的是組件標(biāo)準(zhǔn)接口模塊結(jié)構(gòu)示意圖;圖10說明的是組件注冊模塊結(jié)構(gòu)示意圖;圖11說明的是組件管理模塊結(jié)構(gòu)示意圖。具體實施方式下面結(jié)合附圖對本發(fā)明做進一步的詳細說明,以令本領(lǐng)域技術(shù)人員參照說明書文字能夠據(jù)以實施。圖1示出了根據(jù)本發(fā)明的一種實現(xiàn)形式,示出了Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)。其中包括:組件化節(jié)點部分,其用于為飛行模擬器中各節(jié)點程序提供統(tǒng)一的管理和注冊方式;內(nèi)存數(shù)據(jù)庫部分,其用于為所述組件化節(jié)點部分內(nèi)數(shù)據(jù)提供一種快速索引、查找方式;以及通信部分,其為所述內(nèi)存數(shù)據(jù)庫部分提供統(tǒng)一的讀寫數(shù)據(jù)接口,用于為所述內(nèi)存數(shù)據(jù)庫部分屏蔽底層通信細節(jié)的復(fù)雜性,提供統(tǒng)一的抽象,提高飛機模擬系統(tǒng)部署環(huán)境的靈活性;其中,所述組件化節(jié)點部分以XML格式為配置文件,定義了標(biāo)準(zhǔn)的Model基類接口和體系結(jié)構(gòu)標(biāo)準(zhǔn),實現(xiàn)了代碼的可重用、可移植;所述內(nèi)存數(shù)據(jù)庫部分采用B+樹的數(shù)據(jù)結(jié)構(gòu)建立表索引,變量索引及映射索引;所述通信部分采用三種運行方式,解決飛行模擬器在各種使用場景下的需求。所述組件化節(jié)點部分包括:組件標(biāo)準(zhǔn)接口模塊、組件注冊模塊和組件管理模塊,所述組件標(biāo)準(zhǔn)接口模塊為節(jié)點提供標(biāo)準(zhǔn)的接口;所述組件注冊模塊負(fù)責(zé)對組件完成注冊相關(guān)操作;所述組件管理模塊用鏈表的方式對所有節(jié)點實現(xiàn)統(tǒng)一的管理。所述內(nèi)存數(shù)據(jù)庫部分包括:數(shù)據(jù)操作模塊、映射操作模塊和索引樹模塊,所述數(shù)據(jù)操作模塊為節(jié)點提供內(nèi)存數(shù)據(jù)庫的訪問接口;所述內(nèi)存映射操作模塊為節(jié)點提供讀取映射數(shù)據(jù)的接口,映射用于將節(jié)點產(chǎn)生實際數(shù)據(jù)和所述內(nèi)存數(shù)據(jù)庫實際存放數(shù)據(jù)進行轉(zhuǎn)換;所述索引樹模塊用于存放所述內(nèi)存數(shù)據(jù)庫的實際數(shù)據(jù)。所述通信部分包括:反射內(nèi)存操作模塊、本地共享內(nèi)存模塊和分布式共享內(nèi)存模塊,所述反射內(nèi)存操作模塊采用基于VMIC反射內(nèi)存卡,為飛行模擬器提供高性能分布式通信支撐;所述本地共享內(nèi)存模塊可以讓人員方便對模擬系統(tǒng)在單機上進行調(diào)試、開發(fā);所述分布式共享內(nèi)存模塊采用基于以太網(wǎng)的共享內(nèi)存方案,為飛行模擬系統(tǒng)提供分布式數(shù)據(jù)共享支撐,保證網(wǎng)絡(luò)中各節(jié)點可以進行快速的數(shù)據(jù)交換。內(nèi)存數(shù)據(jù)庫部分為節(jié)點內(nèi)數(shù)據(jù)提供一種快速索引、查找方式;通信部分為內(nèi)存數(shù)據(jù)庫屏蔽掉底層通信細節(jié)的復(fù)雜性,提供統(tǒng)一的抽象,提高模擬系統(tǒng)部署環(huán)境的靈活性;組件化的節(jié)點部分為各節(jié)點程序提供統(tǒng)一的管理、注冊方式,降低了程序的開發(fā)難度并提高了程序的可擴展性。在其中一種實施例中,內(nèi)存數(shù)據(jù)庫為各節(jié)點間數(shù)據(jù)交換提供支撐,將數(shù)據(jù)進行統(tǒng)一管理,對上層節(jié)點屏蔽了底層操作細節(jié)。內(nèi)存數(shù)據(jù)庫通過通信部分屏蔽了底層通信網(wǎng)絡(luò)的復(fù)雜性,支持本地和分布式的數(shù)據(jù)交互。在單機式的應(yīng)用場景下,采用本地共享內(nèi)存機制。在分布式的應(yīng)用場景下,采用分布式共享內(nèi)存或者VMIC反射內(nèi)存卡進行通信。在實現(xiàn)內(nèi)存數(shù)據(jù)庫時,以表方式將數(shù)據(jù)統(tǒng)一存儲,與此同時為了加快數(shù)據(jù)的讀寫速度,采用B+樹建立表索引,變量索引及映射索引。為了保證數(shù)據(jù)存取的一致性,在本地緩存與內(nèi)存數(shù)據(jù)庫進行數(shù)據(jù)交互時,采取同步機制,保證整個內(nèi)存數(shù)據(jù)庫數(shù)據(jù)的全局一致性。內(nèi)存數(shù)據(jù)庫部分由數(shù)據(jù)操作模塊、映射操作模塊和索引樹模塊構(gòu)成,數(shù)據(jù)操作模塊為上層節(jié)點模型提供數(shù)據(jù)讀寫接口,映射操作模塊為程序提供讀取映射關(guān)系的接口,索引樹模塊存放內(nèi)存數(shù)據(jù)庫實際的數(shù)據(jù)。在其中一種實施例中,通信部分為內(nèi)存數(shù)據(jù)庫提供統(tǒng)一的讀寫數(shù)據(jù)接口,屏蔽掉底層復(fù)雜的通信模型。通信部分由基于以太網(wǎng)的分布式共享內(nèi)存模塊、依據(jù)反射內(nèi)存卡的反射內(nèi)存操作模塊和本地共享內(nèi)存模塊構(gòu)成。分布式共享內(nèi)存模塊采用一種基于以太網(wǎng)的共享內(nèi)存方案,被用來為飛行模擬系統(tǒng)提供分布式數(shù)據(jù)共享支撐,在組播技術(shù)和共享內(nèi)存技術(shù)的支持下,保證網(wǎng)絡(luò)中各節(jié)點可以進行快速的數(shù)據(jù)交換,為用戶提供簡單的內(nèi)存讀寫接口,降低了對相關(guān)技術(shù)人員的要求,同時還具有低成本的特點,可以進行大型分布式仿真系統(tǒng)部署。分布式共享內(nèi)存模塊包括:接口單元、協(xié)議處理單元和通信單元。接口單元向內(nèi)存數(shù)據(jù)庫部分提供讀寫數(shù)據(jù)的接口。內(nèi)存管理單元寫入操作由兩個部分組成:將數(shù)據(jù)寫入本地內(nèi)存和調(diào)用協(xié)議處理單元對所寫入的數(shù)據(jù)進行打包,然后協(xié)議處理單元調(diào)用通信單元將數(shù)據(jù)包組播到網(wǎng)絡(luò)上各節(jié)點。通信單元同時負(fù)責(zé)接受所接受的數(shù)據(jù)包并交給協(xié)議處理單元進行解包,解析出數(shù)據(jù)包種信息后交給接口單元將數(shù)據(jù)寫入節(jié)點本地內(nèi)存。分布式共享內(nèi)存模塊網(wǎng)絡(luò)結(jié)構(gòu)采用星型拓?fù)浣Y(jié)構(gòu)。網(wǎng)絡(luò)中每個節(jié)點開辟具有相同大小的內(nèi)存塊,當(dāng)網(wǎng)絡(luò)中任意節(jié)點根據(jù)其地址偏移量所對應(yīng)的內(nèi)存塊數(shù)據(jù)進行了更新,經(jīng)過修改的內(nèi)存塊立即通過組播將本機所對應(yīng)內(nèi)存塊數(shù)據(jù)映射到其他節(jié)點的共享內(nèi)存區(qū)相同偏移地址的內(nèi)存塊上。即每個節(jié)點將數(shù)據(jù)寫入本地內(nèi)存的同時也寫入其他所有節(jié)點的相同地址,用戶對本地內(nèi)存的讀寫也相當(dāng)于對全局內(nèi)存進行讀寫,而全局內(nèi)存對所有節(jié)點都是可見且共享的,從而在節(jié)點間實現(xiàn)了全局?jǐn)?shù)據(jù)共享。通過這種方式,所有節(jié)點都能夠透明并確定地傳送數(shù)據(jù)塊到其他節(jié)點,同時根據(jù)組播的工作方式,所有節(jié)點數(shù)據(jù)的更新時間與網(wǎng)絡(luò)上實際鏈接的節(jié)點數(shù)量無關(guān)。反射內(nèi)存操作模塊是基于VMIC反射內(nèi)存卡的共享內(nèi)存模塊,VMIC共享內(nèi)存是一種基于反射內(nèi)存卡的快速實時網(wǎng)絡(luò),可以為飛行模擬器提供高性能分布式通信支撐。網(wǎng)絡(luò)中各節(jié)點反射內(nèi)存卡間通過光纖進行互聯(lián),數(shù)據(jù)的發(fā)送與接收直接通過板卡上硬件完成,從而具有了高帶寬、低延時的特性。反射內(nèi)存操作模塊包括:用戶態(tài)接口單元和內(nèi)核態(tài)驅(qū)動單元。用戶態(tài)接口單元為內(nèi)存數(shù)據(jù)庫部分提供訪問共享內(nèi)存的接口,并將數(shù)據(jù)發(fā)送給內(nèi)核態(tài)驅(qū)動單元。內(nèi)核態(tài)驅(qū)動單元接收由用戶態(tài)接口單元傳入數(shù)據(jù)并將其寫入板卡自身內(nèi)存。VMIC反射內(nèi)存卡網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用環(huán)形網(wǎng)絡(luò)或星形網(wǎng)絡(luò)。每塊板卡擁有獨立的板載內(nèi)存,其通過DMA的方式映射到本機內(nèi)存地址上。當(dāng)驅(qū)動單元通過讀寫內(nèi)存的方式對板載內(nèi)存進行修改后,板卡立刻將該數(shù)據(jù)及其地址廣播出去,其他節(jié)點上板卡收到數(shù)據(jù)后立刻對板卡上相同地址的數(shù)據(jù)進行修改,從而實現(xiàn)了各節(jié)點間的全局?jǐn)?shù)據(jù)共享。當(dāng)VMIC反射內(nèi)存卡采用星形拓?fù)浣Y(jié)構(gòu)時,數(shù)據(jù)刷新時間與節(jié)點數(shù)量無關(guān)。本地共享內(nèi)存為飛行模擬器提供單機環(huán)境下的通信支撐,此時各節(jié)點以進程的形式進行模擬,因為其接口定義與各種分布式內(nèi)存操作接口一致,所以可以讓模擬系統(tǒng)的分布式開發(fā)在單機下運行。本地共享內(nèi)存由內(nèi)存管理單元構(gòu)成,其負(fù)責(zé)將同一塊物理內(nèi)存映射到各節(jié)點的虛擬內(nèi)存地址空間內(nèi),當(dāng)某一個節(jié)點對該物理內(nèi)存進行修改,其他節(jié)點地址空間內(nèi)相應(yīng)頁面同樣收到修改,從而實現(xiàn)了節(jié)點間數(shù)據(jù)共享。在其中一種實施例中,組件化節(jié)點部分中的節(jié)點模型采用了標(biāo)準(zhǔn)、統(tǒng)一的模型接口,從而實現(xiàn)了組件模型注冊、管理,并能夠驅(qū)動各個組建模型運行;通過底層虛擬總線的支撐,可完成各個模型之間的通信,由于該虛擬總線基于內(nèi)存數(shù)據(jù)庫且擁有粗粒度鎖機制,因此各個組件模型彼此通信時具有較高的實時性和數(shù)據(jù)的一致性。為了使用戶自定義的組件模型能夠被模擬系統(tǒng)加載、運行,需要用戶自定義的組件模型遵守一定的接口規(guī)范。組件化整體實現(xiàn)流程如圖2所示。組件模型定義了標(biāo)準(zhǔn)的接口規(guī)范,即Model基類。在Model類中,定義了所有組建模型必須遵從的接口標(biāo)準(zhǔn),所有用戶自定義的組件模型必須繼承該Model類,并按照自身需求實現(xiàn)Model基類中定義的虛方法,完成組件的實現(xiàn)。組件化節(jié)點部分由組件標(biāo)準(zhǔn)接口模塊、組件注冊模塊和組件管理模塊構(gòu)成,組件標(biāo)準(zhǔn)接口模塊為節(jié)點提供標(biāo)準(zhǔn)的接口,組件注冊模塊負(fù)責(zé)對組件完成注冊相關(guān)操作,組件管理模塊用鏈表的方式對所有節(jié)點實現(xiàn)統(tǒng)一的管理。在其中一種實施例中,內(nèi)存數(shù)據(jù)庫部分為各節(jié)點間數(shù)據(jù)交換提供支撐,將數(shù)據(jù)進行統(tǒng)一管理,對上層節(jié)點屏蔽了底層操作細節(jié),其由數(shù)據(jù)操作模塊、映射操作模塊和索引樹模塊構(gòu)成。數(shù)據(jù)操作模塊為節(jié)點提供內(nèi)存數(shù)據(jù)庫部分的訪問接口。如圖3,在使用內(nèi)存數(shù)據(jù)庫部分時,首先需要加載內(nèi)存數(shù)據(jù)庫,讀取配置文件,根據(jù)配置信息初始化通信層,然后初始化共享內(nèi)存,將空閑塊鏈表、變量表鏈表、映射鏈表和主機鏈表設(shè)置為空。之后將B+樹載入共享內(nèi)存:獲取B+樹在當(dāng)前地址空間中的偏移量和B+樹的大小。之后根據(jù)配置文件,獲取配置文件中的主機信息并將其插入主機鏈表。之后創(chuàng)建變量表根據(jù)配置文件初始化變量表鏈表和映射表鏈表。此時,配置文件中所有的信息都已經(jīng)加載到內(nèi)存數(shù)據(jù)庫的內(nèi)存之中,然后通過遍歷鏈表的方式分別將內(nèi)存中的信息插入變量樹、變量表樹和映射樹。遍歷MMDB的變量表樹,根據(jù)當(dāng)前的指向的變量表在變量樹中查找變量,將其從內(nèi)存數(shù)據(jù)庫中拷貝到當(dāng)前節(jié)點的內(nèi)存空間中。遍歷完變量表樹后開始遍歷映射樹,根據(jù)映射樹中的數(shù)據(jù)解析映射關(guān)系,用于實際數(shù)據(jù)和內(nèi)存數(shù)據(jù)庫中數(shù)據(jù)之間的轉(zhuǎn)換。此時,可以開始內(nèi)存數(shù)據(jù)庫讀寫操作。對通過數(shù)據(jù)操作模塊進行讀寫操作時,首先應(yīng)用程序需要通知模塊其在上一步獲取的映射名和實際的數(shù)據(jù)。然后調(diào)用數(shù)據(jù)操作模塊中的讀寫操作,將數(shù)據(jù)放入節(jié)點的讀寫緩存,等待模塊進行同步,完成數(shù)據(jù)從本地內(nèi)存到內(nèi)存數(shù)據(jù)庫內(nèi)存的拷貝。當(dāng)數(shù)據(jù)操作模塊開始同步時,首先進入臨界區(qū),然后遍歷節(jié)點的輸入輸出緩存,將緩存中存儲的數(shù)據(jù)按照其映射中解析的地址寫入內(nèi)存數(shù)據(jù)庫內(nèi)存中,完成數(shù)據(jù)同步,使節(jié)點本地緩存和內(nèi)存數(shù)據(jù)庫中數(shù)據(jù)一致。如圖4所示,內(nèi)存映射操作模塊為節(jié)點提供讀取映射數(shù)據(jù)的接口,映射用于將節(jié)點產(chǎn)生實際數(shù)據(jù)和內(nèi)存數(shù)據(jù)庫實際存放數(shù)據(jù)進行轉(zhuǎn)換。節(jié)點首先將要使用的映射名傳給映射模塊用于注冊該映射,映射操作模塊以該映射名為查詢條件,在映射樹中進行查詢,如果可以查詢到該映射關(guān)系,則將該節(jié)點相應(yīng)數(shù)據(jù)位設(shè)置為該映射,完成注冊。索引樹模塊結(jié)構(gòu)如圖5所示:索引樹模塊負(fù)責(zé)存放內(nèi)存數(shù)據(jù)庫部分的實際數(shù)據(jù),其中包含有三個用于索引的B+樹和五個用于存放臨時數(shù)據(jù)的鏈表。鏈表如下:1)節(jié)點信息鏈表,在分布式通信模式下,記錄每個節(jié)點的鎖信息;2)空閑塊鏈表,存放未使用的空閑塊;3)變量表鏈表,存放通過配置文件解析到的表內(nèi)容;4)映射表鏈表,存放通過配置文件解析到的映射關(guān)系;5)主機鏈表,存放通過配置文件解析到的主機信息。為了快速查詢變量表,變量和映射信息,建立B+樹來進行索引,加快查詢速度。B+樹如下:1)變量表樹,索引變量表2)變量樹,索引變量3)映射樹,索引映射。同時B+樹內(nèi)存中包含一張空閑塊鏈表,以供B+樹內(nèi)存創(chuàng)建B+樹時使用。在其中一種實施例中,MMDB數(shù)據(jù)庫分為本地共享內(nèi)存(LSM)、基于以太網(wǎng)的分布式共享內(nèi)存(DSM)和基于反射內(nèi)存網(wǎng)(VMIC)的分布式共享內(nèi)存三種方式的內(nèi)存數(shù)據(jù)模式,本地共享內(nèi)存主要以共享內(nèi)存的方式實現(xiàn)對本地存儲數(shù)據(jù)操作,基于以太網(wǎng)的分布式內(nèi)存和VMIC共享內(nèi)存主要實現(xiàn)對數(shù)據(jù)的分布式操作。通過本地共享內(nèi)存在不同進程間共享數(shù)據(jù)的原理是將同一塊物理頁面映射到多個進程的虛擬地址空間內(nèi),這樣當(dāng)某個進程修改該段地址內(nèi)容的時候其他進程對應(yīng)的地址空間也會收到內(nèi)容,從而實現(xiàn)了進程間的數(shù)據(jù)共享。本地共享內(nèi)存模塊結(jié)構(gòu)如圖6所示:本地共享內(nèi)存模塊的接口如下:LoadLSM加載本地共享內(nèi)存CopyToLSM將數(shù)據(jù)拷貝到本地共享內(nèi)存CopyFromLSM將本地共享內(nèi)存的數(shù)據(jù)拷貝出來在使用本地共享內(nèi)存時,首先需要使用LoadLSM函數(shù)初始化本地共享內(nèi)存,將CopyToSM和CopyFromSM函數(shù)指針指向CopyToLSM和CopyFromLSM,然后使用CreateFileMapping函數(shù)申請一塊內(nèi)存地址并返回句柄,然后使用MapViewOfFile函數(shù)將該段內(nèi)存地址映射到調(diào)用進程的內(nèi)存空間中,之后將SystemManager初始化為0,從而完成本地共享內(nèi)存初始化。CopyToLSM和CopyFromLSM由memcpy函數(shù)實現(xiàn),用于將一段數(shù)據(jù)拷貝到內(nèi)存數(shù)據(jù)庫部分的地址空間內(nèi)?;赩MIC反射內(nèi)存卡的反射內(nèi)存操作模塊每塊VMIC板卡擁有獨立的板載內(nèi)存,其通過DMA的方式映射到本機內(nèi)存地址上。當(dāng)驅(qū)動模塊通過讀寫內(nèi)存的方式對板載內(nèi)存進行修改后,板卡立刻將該數(shù)據(jù)及其地址廣播出去,其他節(jié)點上板卡收到數(shù)據(jù)后立刻對板卡上相同地址的數(shù)據(jù)進行修改,從而實現(xiàn)了各節(jié)點間的全局?jǐn)?shù)據(jù)共享?;赩MIC反射內(nèi)存卡的反射內(nèi)存操作模塊的結(jié)構(gòu)如圖7所示:基于VMIC反射內(nèi)存卡的反射內(nèi)存操作模塊的接口如下:LoadVMIC加載反射內(nèi)存網(wǎng)共享內(nèi)存CopyToVMIC將數(shù)據(jù)拷貝到反射內(nèi)存網(wǎng)中CopyFromVMIC將反射內(nèi)存網(wǎng)的數(shù)據(jù)拷貝出來在使用基于VMIC反射內(nèi)存卡的反射內(nèi)存操作模塊時,首先需要使用LoadVMIC函數(shù)初始化本地共享內(nèi)存模塊,將CopyToSM和CopyFromSM函數(shù)指針指向CopyToVMIC和CopyFromVMIC,然后使用反射內(nèi)存卡廠商提供的RFM2gOpen打開內(nèi)存卡設(shè)備,之后獲取板載內(nèi)存大小,并將該內(nèi)存映射到節(jié)點的地址空間內(nèi)。之后獲取該節(jié)點的ID,如果該節(jié)點為Master,則將SystemManager初始化為0,打開反射內(nèi)存卡中斷,完成基于VMIC反射內(nèi)存網(wǎng)的反射內(nèi)存的初始化。CopyToVMIC和CopyFromVMIC由RFM2gWrite和RFM2gRead封裝,負(fù)責(zé)將數(shù)據(jù)拷貝到反射內(nèi)存卡板載內(nèi)存?;赩MIC反射內(nèi)存卡的反射內(nèi)存操作模塊由用戶態(tài)接口單元和內(nèi)核態(tài)驅(qū)動單元構(gòu)成,用戶態(tài)接口單元負(fù)責(zé)和上層內(nèi)存數(shù)據(jù)庫進行交互并將數(shù)據(jù)傳給驅(qū)動部分,內(nèi)核態(tài)驅(qū)動單元接收到數(shù)據(jù)后傳給VMIC反射內(nèi)存卡硬件?;谝蕴W(wǎng)的分布式共享內(nèi)存模塊網(wǎng)絡(luò)中每個節(jié)點開辟具有相同大小的內(nèi)存塊,當(dāng)網(wǎng)絡(luò)中任意節(jié)點根據(jù)其地址偏移量所對應(yīng)的內(nèi)存塊數(shù)據(jù)進行了更新,經(jīng)過修改的內(nèi)存塊立即通過組播將本機所對應(yīng)內(nèi)存塊數(shù)據(jù)映射到其他節(jié)點的共享內(nèi)存區(qū)相同偏移地址的內(nèi)存塊上。即每個節(jié)點將數(shù)據(jù)寫入本地內(nèi)存的同時也寫入其他所有節(jié)點的相同地址,用戶對本地內(nèi)存的讀寫也相當(dāng)于對全局內(nèi)存進行讀寫,而全局內(nèi)存對所有節(jié)點都是可見且共享的,從而在節(jié)點間實現(xiàn)了全局?jǐn)?shù)據(jù)共享?;谝蕴W(wǎng)分布式共享內(nèi)存模塊的結(jié)構(gòu)如圖8所示:基于以太網(wǎng)的分布式共享內(nèi)存模塊的接口及實現(xiàn):LoadDSM加載分布式共享內(nèi)存CopyToDSM將數(shù)據(jù)拷貝到共享內(nèi)存中CopyFromDSM將分享內(nèi)存的數(shù)據(jù)拷貝出來在使用基于以太網(wǎng)的分布式共享內(nèi)存模塊時,首先需要使用LoadDSM函數(shù)初始化本地共享內(nèi)存模塊,將CopyToSM和CopyFromSM函數(shù)指針指向CopyToDSM和CopyFromDSM。然后為SystemManager申請一塊內(nèi)存空間并設(shè)置為0,然后分別為發(fā)送和接收線程以組播的方式創(chuàng)建套接字。之后創(chuàng)建發(fā)送和接收線程,并開辟一塊緩沖區(qū)用于暫存收發(fā)數(shù)據(jù)。發(fā)送線程負(fù)責(zé)將緩沖區(qū)中經(jīng)協(xié)議處理單元打包的字節(jié)流組播到網(wǎng)絡(luò)中。接收線程負(fù)責(zé)保持掛起狀態(tài)等待接收數(shù)據(jù),一旦網(wǎng)絡(luò)中傳來數(shù)據(jù)負(fù)責(zé)將字節(jié)流轉(zhuǎn)交給解包線程,然后立刻繼續(xù)等待數(shù)據(jù)。解包線程接收到數(shù)據(jù)后根據(jù)字節(jié)流首部的4字節(jié)內(nèi)存可以得知字節(jié)流所含的數(shù)據(jù)包個數(shù)。得知數(shù)據(jù)包數(shù)量后開始遍歷,按照偏移、數(shù)據(jù)段大小和數(shù)據(jù)的格式進行解包,得出實際的數(shù)據(jù),并調(diào)用接口單元的CopyFromDSM將數(shù)據(jù)寫入節(jié)點本地內(nèi)存。CopyToDSM函數(shù)負(fù)責(zé)接收偏移地址、數(shù)據(jù)段大小和數(shù)據(jù),然后調(diào)用協(xié)議處理單元將數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)中可發(fā)送的字節(jié)流。接口單元負(fù)責(zé)將協(xié)議處理單元傳入的數(shù)據(jù)寫入節(jié)點本地內(nèi)存并將本地節(jié)點傳出的數(shù)據(jù)轉(zhuǎn)交給協(xié)議處理單元。協(xié)議處理單元負(fù)責(zé)將傳輸部分傳入的字節(jié)流進行解包交給接口,并將內(nèi)存管理部分的數(shù)據(jù)轉(zhuǎn)換為字節(jié)流交給通信部分用于發(fā)送,通信部分負(fù)責(zé)收發(fā)打包后的字節(jié)流在其中一種實施例中,組件化節(jié)點部分包括:組件標(biāo)準(zhǔn)接口模塊、組件注冊模塊與組件管理模塊組件標(biāo)準(zhǔn)接口模塊為了使用戶自定義的組件模型能夠被模擬系統(tǒng)加載、驅(qū)動運行,需要用戶自定義的組件模型遵守一定的接口規(guī)范。框架為組件模型定義了標(biāo)準(zhǔn)的接口規(guī)范,即Model基類。在Model類中,定義了所有組建模型必須遵從的接口標(biāo)準(zhǔn),所有用戶自定義的組件模型必須繼承該Model類,并可選擇性的重寫Model類中規(guī)定的外部接口。Model組件所定義的可供用戶自定義的外部標(biāo)準(zhǔn)接口如圖9所示。Model類其實為模型接口規(guī)范,其中定義了Init()、Start()、Step()、Stop、Worker()和Unload()6個外部接口,可供用戶選擇性實現(xiàn)。如果開發(fā)諸如FMS、DISP、NAV等組件時,僅需該組件類繼承Model類,并且選擇性實現(xiàn)相關(guān)接口即可。模擬器運行平臺為用戶自定義組件模型提供了開發(fā)向?qū)?,方便用戶自定義開發(fā)不同功能、不同類型的組件。為了使用戶自定義開發(fā)的所有組件都遵循Model定義的接口,從而被系統(tǒng)調(diào)度,需要所有組件類都必須繼承Model類,且按實際需要重寫以上6個用戶外部接口。組件注冊模塊如圖10所示,當(dāng)用戶自定義組件完成之后,便可以將其以插件的形式被系統(tǒng)所識別、驅(qū)動運行。為了使調(diào)度框架識別新的插件,需要在配置文件中進行相關(guān)配置,根據(jù)配置文件中的配置信息,調(diào)度框架便可自行完成組件的注冊工作。在配置文件中,與組件注冊相關(guān)的信息至少應(yīng)包含:組件類所屬插件名稱(插件以動態(tài)庫的形式被加載)、組件類名、實例化組件對象的名稱等信息。調(diào)度框架讀取上述信息后,會加載插件,并且調(diào)用該組件類的工廠方法實例化組件對象,完成組件的注冊工作。組件管理模塊結(jié)構(gòu)如圖11所示:系統(tǒng)為了能夠管理已經(jīng)加載的插件,需要專門的數(shù)據(jù)結(jié)構(gòu)對注冊的插件進行管理。運行平臺會維護一個主機鏈表,在每個主機節(jié)點上,都會根據(jù)配置文件中的定義,存儲每個將要被載入的模型對象的基本屬性。各個插件配置好之后,系統(tǒng)會根據(jù)上述的節(jié)點鏈表中各個節(jié)點項中記錄的信息,調(diào)用插件中模型類的工廠方法生成對應(yīng)的對象實例。這里說明的模塊數(shù)量和處理規(guī)模是用來簡化本發(fā)明的說明的。對本發(fā)明的Windows操作系統(tǒng)環(huán)境下的飛行模擬系統(tǒng)的應(yīng)用、修改和變化對本領(lǐng)域的技術(shù)人員來說是顯而易見的。如上所述,根據(jù)本發(fā)明,本方案主要由三個模塊組成:內(nèi)存數(shù)據(jù)庫部分、支持基于以太網(wǎng)的分布式共享內(nèi)存、基于VMIC反射內(nèi)存卡的反射內(nèi)存和本地共享內(nèi)存的三大功能的通信部分和組件化節(jié)點部分。通過內(nèi)存數(shù)據(jù)庫部分解決模擬器節(jié)點間數(shù)據(jù)管理、共享的問題。通過在通信部分提供基于以太網(wǎng)的分布式共享內(nèi)存、基于VMIC反射內(nèi)存卡的反射內(nèi)存和本地共享內(nèi)存三種運行方式,解決飛行模擬器在各種使用場景下的需求。通過采用節(jié)點模型組件化的方式,以XML格式為配置文件,定義了標(biāo)準(zhǔn)的接口規(guī)范和體系結(jié)構(gòu)標(biāo)準(zhǔn),實現(xiàn)了代碼的可重用、可移植。盡管本發(fā)明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用。它完全可以被適用于各種適合本發(fā)明的領(lǐng)域。對于熟悉本領(lǐng)域的人員而言,可容易地實現(xiàn)另外的修改。因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細節(jié)和這里示出與描述的圖例。當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
巴彦淖尔市| 新巴尔虎左旗| 萨嘎县| 武平县| 广宗县| 绍兴市| 鸡东县| 光泽县| 武乡县| 汨罗市| 双江| 分宜县| 邻水| 滦南县| 烟台市| 呼玛县| 象山县| 腾冲县| 余庆县| 漳浦县| 彭泽县| 炎陵县| 克山县| 泸溪县| 平顺县| 南昌县| 九江县| 将乐县| 永德县| 西盟| 微博| 包头市| 洞头县| 盐池县| 昌图县| 蒲城县| 辉南县| 郯城县| 治多县| 永春县| 射阳县|