專利名稱:分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及到虛擬試驗(yàn)系統(tǒng)領(lǐng)域,特指一種適用于分布式虛擬試驗(yàn)系統(tǒng)中的 節(jié)點(diǎn)同步方法。
背景技術(shù):
虛擬試驗(yàn)系統(tǒng)由于其耗費(fèi)小、可重復(fù)且無破壞的特點(diǎn),逐漸成為一種重要的評(píng)價(jià) 手段和試驗(yàn)手段,在國(guó)民經(jīng)濟(jì)的各領(lǐng)域得到快速發(fā)展。在分布式虛擬試驗(yàn)系統(tǒng)中,多個(gè)分布 在不同位置的節(jié)點(diǎn)共同完成試驗(yàn)任務(wù),各節(jié)點(diǎn)一般是通過局域網(wǎng)相連,通過計(jì)算機(jī)網(wǎng)絡(luò)完 成相互間的通信和數(shù)據(jù)交互。由于各節(jié)點(diǎn)分布在不同的地理位置,相互間需要實(shí)時(shí)交互數(shù) 據(jù),如何保證各個(gè)節(jié)點(diǎn)的數(shù)據(jù)以及與時(shí)間有關(guān)的事件在時(shí)間邏輯上的一致性是虛擬試驗(yàn)系 統(tǒng)需要解決的一個(gè)關(guān)鍵問題。目前常用的方法有兩種一是采用時(shí)間同步算法實(shí)現(xiàn)各節(jié)點(diǎn)時(shí)鐘的精確同 步,在時(shí)間觸發(fā)機(jī)制下實(shí)現(xiàn)數(shù)據(jù)同步;二是是采用高層體系結(jié)構(gòu)(HLA, High Level Architecture),在HLA的時(shí)間管理機(jī)制下實(shí)現(xiàn)各節(jié)點(diǎn)的同步推進(jìn)。方法一要實(shí)現(xiàn)較好同步效果的前提是能實(shí)現(xiàn)較精確的時(shí)鐘同步,但是,一方面時(shí) 間同步算法的執(zhí)行會(huì)增加系統(tǒng)的開銷,降低系統(tǒng)運(yùn)行效率,另一方面,網(wǎng)絡(luò)傳輸延時(shí)的不確 定性使得時(shí)鐘同步的精度很難得到保證。方法二中,在基于HLA的時(shí)間同步方式下,需要運(yùn)行支撐環(huán)境(RTI)的支持,在系 統(tǒng)運(yùn)行全過程,需要維持一個(gè)聯(lián)邦執(zhí)行的存在,每個(gè)參與運(yùn)算的節(jié)點(diǎn)作為一個(gè)聯(lián)邦成員加 入聯(lián)邦。聯(lián)邦時(shí)間推進(jìn)采用步長(zhǎng)推進(jìn)的方式,在每個(gè)執(zhí)行步長(zhǎng)內(nèi),聯(lián)邦成員完成模型計(jì)算、 結(jié)果輸出和數(shù)據(jù)發(fā)送等任務(wù)。當(dāng)所有聯(lián)邦成員均完成當(dāng)前步長(zhǎng)內(nèi)的計(jì)算任務(wù)時(shí),聯(lián)邦向下 一步推進(jìn);如果有一個(gè)成員未完成當(dāng)前步長(zhǎng)的任務(wù),聯(lián)邦將繼續(xù)等待直到滿足推進(jìn)條件。在 HLA的時(shí)間管理機(jī)制下,由于各節(jié)點(diǎn)步長(zhǎng)推進(jìn)時(shí)存在互相控制和約束的關(guān)系,系統(tǒng)各節(jié)點(diǎn)的 數(shù)據(jù)能保持嚴(yán)格的同步。但是這種以成員間的相互控制和約束實(shí)現(xiàn)的嚴(yán)格同步也帶來了由 于某個(gè)節(jié)點(diǎn)的延遲導(dǎo)致整個(gè)系統(tǒng)延遲的危險(xiǎn)。另一方面,由于HLA本身的機(jī)制復(fù)雜,對(duì)虛擬 試驗(yàn)系統(tǒng)而言存在較多的冗余,會(huì)在一定程度上降低系統(tǒng)的效率和實(shí)時(shí)性。在虛擬試驗(yàn)系統(tǒng)中,可將時(shí)間劃分為墻上時(shí)間和邏輯時(shí)間兩大類。墻上時(shí)間就是 真實(shí)世界的時(shí)間,邏輯時(shí)間是虛擬試驗(yàn)系統(tǒng)中從虛擬試驗(yàn)起始點(diǎn)開始計(jì)算的各節(jié)點(diǎn)約定步 長(zhǎng)推進(jìn)的時(shí)間值。因此,虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步又可分為基于真實(shí)時(shí)間的同步和基于 邏輯時(shí)間的同步。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題就在于針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供 一種原理簡(jiǎn)單、操作簡(jiǎn)便、能保證節(jié)點(diǎn)時(shí)間同步、簡(jiǎn)化系統(tǒng)設(shè)計(jì)、提高整個(gè)系統(tǒng)運(yùn)行效率的 分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案一種分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,步驟為
(1)配置節(jié)點(diǎn)并啟動(dòng)虛擬試驗(yàn)系統(tǒng)進(jìn)行初始化在虛擬試驗(yàn)系統(tǒng)中設(shè)置通過網(wǎng)絡(luò)互聯(lián) 的一控制節(jié)點(diǎn)和一個(gè)以上的運(yùn)算節(jié)點(diǎn),所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中均設(shè)置有用于完成節(jié)點(diǎn) 數(shù)據(jù)處理和模型計(jì)算任務(wù)的工作線程、數(shù)據(jù)發(fā)送線程、數(shù)據(jù)接收線程以及共享內(nèi)存區(qū);所述 控制節(jié)點(diǎn)的工作線程為控制線程;
(2)分級(jí)同步
(2. 1)第一級(jí)同步在所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中,所述數(shù)據(jù)發(fā)送線程通過在所述共享 內(nèi)存區(qū)讀取所述工作線程提供的數(shù)據(jù)實(shí)現(xiàn)邏輯時(shí)間同步;
(2. 2)第二級(jí)同步在上述節(jié)點(diǎn)之間,所述控制線程通過網(wǎng)絡(luò)統(tǒng)一控制并協(xié)調(diào)各運(yùn)算節(jié) 點(diǎn)內(nèi)的工作線程,實(shí)現(xiàn)節(jié)點(diǎn)間的邏輯時(shí)間和步長(zhǎng)推進(jìn)的同步;
(2. 3)第三級(jí)同步在所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中,所述數(shù)據(jù)接收線程通過所述共享內(nèi) 存區(qū)將數(shù)據(jù)交給工作線程實(shí)現(xiàn)邏輯時(shí)間的同步。作為本發(fā)明的進(jìn)一步改進(jìn)
所述共享內(nèi)存區(qū)包括數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū),所述數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū)中分別 設(shè)有用于標(biāo)示當(dāng)前數(shù)據(jù)是否更新的數(shù)據(jù)更新標(biāo)志。所述步驟(2. 1)的具體步驟為在各節(jié)點(diǎn)內(nèi),均維持著一個(gè)本地邏輯時(shí)鐘,其邏輯 時(shí)間以虛擬試驗(yàn)開始為起算節(jié)點(diǎn)并在控制線程協(xié)調(diào)下逐步遞增;新的步長(zhǎng)開始后,所述工 作線程保持檢測(cè)數(shù)據(jù)接收區(qū)的數(shù)據(jù)更新標(biāo)志;若數(shù)據(jù)已更新,則讀取數(shù)據(jù)、進(jìn)行計(jì)算并將需 要發(fā)送的計(jì)算結(jié)果保存在數(shù)據(jù)發(fā)送區(qū)中,更新數(shù)據(jù)發(fā)送區(qū)的數(shù)據(jù)更新標(biāo)志;數(shù)據(jù)發(fā)送線程 檢測(cè)到數(shù)據(jù)發(fā)送區(qū)的數(shù)據(jù)更新標(biāo)志為有效后,將數(shù)據(jù)讀取、封裝并加上邏輯時(shí)戳,通過網(wǎng)絡(luò) 發(fā)送給其他節(jié)點(diǎn),向控制節(jié)點(diǎn)請(qǐng)求推進(jìn)到下一步長(zhǎng)。所述工作線程檢測(cè)所述數(shù)據(jù)接收區(qū)的數(shù)據(jù)更新標(biāo)志時(shí),工作線程在經(jīng)過%次查詢 等待仍未收到新數(shù)據(jù)時(shí),則放棄等待,向所述控制節(jié)點(diǎn)請(qǐng)求推進(jìn)至下一步長(zhǎng),其中%為根據(jù) 虛擬試驗(yàn)對(duì)步長(zhǎng)的要求而設(shè)置的閥值。所述步驟(2. 2)的具體步驟為在所述各節(jié)點(diǎn)之間,所述控制線程在收到所有節(jié) 點(diǎn)發(fā)送的步長(zhǎng)推進(jìn)請(qǐng)求后,綜合判斷系統(tǒng)當(dāng)前狀況,向各節(jié)點(diǎn)發(fā)送步長(zhǎng)推進(jìn)命令,各節(jié)點(diǎn)在 控制線程的統(tǒng)一協(xié)調(diào)下實(shí)現(xiàn)同步向前推進(jìn);所述控制線程還負(fù)責(zé)維護(hù)虛擬試驗(yàn)系統(tǒng)的邏輯 時(shí)間,并定期向所有節(jié)點(diǎn)廣播更新的邏輯時(shí)間。所述步驟(2.3)在虛擬試驗(yàn)系統(tǒng)運(yùn)行期間,所述數(shù)據(jù)接收線程保持對(duì)端口的偵聽, 收到數(shù)據(jù)后進(jìn)行以下三種情況的處理
a.所述數(shù)據(jù)接收線程接收到所述節(jié)點(diǎn)之間的交互數(shù)據(jù)后,根據(jù)本地邏輯時(shí)間和所述 交互數(shù)據(jù)所附帶的邏輯時(shí)戳的大小對(duì)比判斷數(shù)據(jù)的有效性,若數(shù)據(jù)有效則存入共享內(nèi)存區(qū) 中的數(shù)據(jù)接收區(qū)、更新數(shù)據(jù)接收區(qū)的更新標(biāo)志并通知工作線程;若數(shù)據(jù)無效則丟棄數(shù)據(jù),繼 續(xù)偵聽;
b.所述數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的邏輯時(shí)間廣播后,校正本地邏輯時(shí)間
值;
c.所述數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的控制命令后,解讀控制命令,并采取相應(yīng) 動(dòng)作。所述虛擬試驗(yàn)系統(tǒng)中分設(shè)控制網(wǎng)和運(yùn)行網(wǎng),所述控制命令、邏輯時(shí)間廣播和所述步長(zhǎng)推進(jìn)請(qǐng)求通過所述控制網(wǎng)傳送;所述節(jié)點(diǎn)之間的交互數(shù)據(jù)通過運(yùn)行網(wǎng)傳送。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于
1、本發(fā)明的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,通過分級(jí)同步實(shí)現(xiàn)節(jié)點(diǎn)間的同 步過程,優(yōu)先保證了各個(gè)節(jié)點(diǎn)的工作線程的運(yùn)行效率,可避免兩個(gè)同步節(jié)點(diǎn)由于相互制約、 限制引起的死鎖、沖突等現(xiàn)象,進(jìn)而提高了整個(gè)系統(tǒng)運(yùn)行效率。本發(fā)明的方法實(shí)施簡(jiǎn)單,運(yùn) 行可靠,實(shí)現(xiàn)了高效、簡(jiǎn)潔、實(shí)用,系統(tǒng)資源占用率低,以較小的代價(jià)實(shí)現(xiàn)了分布式系統(tǒng)的同步。2、本發(fā)明的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,無需運(yùn)行支撐環(huán)境的支持、 不需要維護(hù)一個(gè)聯(lián)邦執(zhí)行的存在,在一定程度上節(jié)約了系統(tǒng)資源;在實(shí)現(xiàn)時(shí)間同步時(shí),不需 要增加額外的時(shí)鐘源,簡(jiǎn)化了系統(tǒng)。3、本發(fā)明的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,運(yùn)行網(wǎng)和控制網(wǎng)分離,可避 免由于數(shù)據(jù)交互繁忙造成控制命令傳達(dá)不及時(shí)的問題,保證了控制端所發(fā)出的命令和邏輯 時(shí)間廣播值能及時(shí)準(zhǔn)確的傳送至系統(tǒng)各節(jié)點(diǎn),且保證了系統(tǒng)運(yùn)行期間節(jié)點(diǎn)間的數(shù)據(jù)交互不 會(huì)影響控制命令的快速有效傳輸。
圖1是本發(fā)明的節(jié)點(diǎn)同步方法的總流程示意圖。圖2是本發(fā)明具體實(shí)施例中的同步系統(tǒng)結(jié)構(gòu)示意圖。圖3是本發(fā)明具體實(shí)施例中的節(jié)點(diǎn)內(nèi)工作線程與數(shù)據(jù)發(fā)送線程同步流程示意圖。圖4是本發(fā)明具體實(shí)施例中的節(jié)點(diǎn)內(nèi)數(shù)據(jù)發(fā)送線程與控制線程同步流程示意圖。圖5是本發(fā)明具體實(shí)施例中的數(shù)據(jù)接收線程工作流程示意圖。
具體實(shí)施例方式以下將結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。如圖1所示,本發(fā)明的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,包括以下步驟
1、配置節(jié)點(diǎn)參見圖2所示,在虛擬試驗(yàn)系統(tǒng)中設(shè)置通過網(wǎng)絡(luò)互聯(lián)的一控制節(jié)點(diǎn)和 二個(gè)以上的運(yùn)算節(jié)點(diǎn),在各節(jié)點(diǎn)內(nèi)設(shè)置用于完成節(jié)點(diǎn)的數(shù)據(jù)處理和模型計(jì)算任務(wù)的工作線 程、用于輸出數(shù)據(jù)的數(shù)據(jù)發(fā)送線程、用于輸入數(shù)據(jù)的數(shù)據(jù)接收線程以及供前述三者共享的 共享內(nèi)存區(qū)(視實(shí)際交互數(shù)據(jù)大小而定)??刂乒?jié)點(diǎn)的工作線程為控制線程??刂凭€程的 一個(gè)重要功能是維護(hù)系統(tǒng)的邏輯時(shí)間,并定期向系統(tǒng)內(nèi)的所有節(jié)點(diǎn)發(fā)布更新的邏輯時(shí)間。 共享內(nèi)存區(qū)包括數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū),數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū)中分別設(shè)有用于標(biāo)示 當(dāng)前數(shù)據(jù)是否更新的數(shù)據(jù)更新標(biāo)志。本實(shí)施例中,參見圖2所示,虛擬試驗(yàn)系統(tǒng)中包含n(n ^ 2)個(gè)運(yùn)算節(jié)點(diǎn)和一個(gè)控 制節(jié)點(diǎn),節(jié)點(diǎn)間通過計(jì)算機(jī)網(wǎng)絡(luò)連接。虛擬試驗(yàn)系統(tǒng)中分設(shè)控制網(wǎng)和運(yùn)行網(wǎng)。控制命令、邏 輯時(shí)間廣播、步長(zhǎng)推進(jìn)請(qǐng)求和節(jié)點(diǎn)狀態(tài)報(bào)告通過控制網(wǎng)傳送;節(jié)點(diǎn)間的交互數(shù)據(jù)通過運(yùn)行 網(wǎng)傳送。運(yùn)行網(wǎng)和控制網(wǎng)是相互分離、相互獨(dú)立的,能保證系統(tǒng)運(yùn)行期間節(jié)點(diǎn)間的數(shù)據(jù)交互 不會(huì)影響控制命令的快速有效傳輸。在各節(jié)點(diǎn)內(nèi),均維持著一個(gè)本地邏輯時(shí)鐘,該本地邏輯時(shí)鐘所示的邏輯時(shí)間即為 系統(tǒng)當(dāng)前的邏輯時(shí)間,系統(tǒng)所有節(jié)點(diǎn)的邏輯時(shí)間以控制節(jié)點(diǎn)的邏輯時(shí)間為準(zhǔn)。一方面,邏輯時(shí)間以虛擬試驗(yàn)開始為起算節(jié)點(diǎn)并在控制線程協(xié)調(diào)下逐步遞增(系統(tǒng)各節(jié)點(diǎn)的邏輯時(shí)間的 維護(hù)有兩種途徑,一是各節(jié)點(diǎn)根據(jù)控制節(jié)點(diǎn)的步長(zhǎng)推進(jìn)命令遞增邏輯時(shí)間,二是控制節(jié)點(diǎn) 定期向系統(tǒng)內(nèi)所有節(jié)點(diǎn)廣播邏輯時(shí)間值,以便各節(jié)點(diǎn)校正本地邏輯時(shí)間);另一方面,控制 線程定期向系統(tǒng)內(nèi)所有節(jié)點(diǎn)廣播當(dāng)前邏輯時(shí)間值,各節(jié)點(diǎn)以控制線程廣播的邏輯時(shí)鐘來修 正本地時(shí)鐘。虛擬試驗(yàn)系統(tǒng)啟動(dòng)后,先進(jìn)行初始化,流程如下
1)首先啟動(dòng)控制端程序;
2)通過控制端程序啟動(dòng)運(yùn)算節(jié)點(diǎn)程序,并通過控制端程序讀取配置文件,配置文件包 含了節(jié)點(diǎn)間數(shù)據(jù)的發(fā)送和接收關(guān)系;
3)初始化參數(shù)配置,系統(tǒng)邏輯時(shí)鐘歸零。2、分級(jí)同步在本發(fā)明實(shí)施例中,節(jié)點(diǎn)間的多線程分級(jí)同步過程實(shí)際上是節(jié)點(diǎn)間 工作線程所發(fā)送和接收的數(shù)據(jù),通過數(shù)據(jù)發(fā)送線程、數(shù)據(jù)接收線程的分級(jí)同步,在控制線程 的統(tǒng)一協(xié)調(diào)下,在邏輯時(shí)序上實(shí)現(xiàn)同步一致的過程。本發(fā)明將兩個(gè)節(jié)點(diǎn)間的同步過程將被 劃分為多個(gè)中間過程,通過分級(jí)同步實(shí)現(xiàn)最終的同步。分級(jí)同步的好處是可以避免兩個(gè)同 步點(diǎn)由于相互制約、限制引起的死鎖、沖突等現(xiàn)象,可以提高系統(tǒng)運(yùn)行效率。在分布式虛擬 試驗(yàn)系統(tǒng)中,各節(jié)點(diǎn)的數(shù)據(jù)運(yùn)算和處理是由各節(jié)點(diǎn)的線程完成的。因此,節(jié)點(diǎn)的同步實(shí)際上 可歸結(jié)為線程的同步。在多線程機(jī)制下的分級(jí)同步方法,就是在線程同步過程中創(chuàng)建新的 線程,通過多個(gè)線程同步過程實(shí)現(xiàn)最終的同步。因此,本發(fā)明分布式虛擬試驗(yàn)系統(tǒng)各節(jié)點(diǎn)的 同步是在控制線程的統(tǒng)一協(xié)調(diào)下,通過多級(jí)線程的同步,最終實(shí)現(xiàn)各節(jié)點(diǎn)工作線程的同步。 第一級(jí)同步是在各節(jié)點(diǎn)內(nèi)部,工作線程和數(shù)據(jù)發(fā)送線程通過共享內(nèi)存方式實(shí)現(xiàn)的同步;第 二級(jí)同步是在控制線程統(tǒng)一協(xié)調(diào)下實(shí)現(xiàn)的各分布節(jié)點(diǎn)基于步長(zhǎng)推進(jìn)方式實(shí)現(xiàn)的同步;第三 級(jí)同步是數(shù)據(jù)接收線程通過比較所收到數(shù)據(jù)的邏輯時(shí)戳和本地邏輯時(shí)間值判斷數(shù)據(jù)的有 效性,并通過共享內(nèi)存方式將數(shù)據(jù)交給工作線程實(shí)現(xiàn)的同步。在上述三級(jí)同步機(jī)制下,可實(shí) 現(xiàn)各節(jié)點(diǎn)數(shù)據(jù)在時(shí)間邏輯上的一致性。本實(shí)施例中,分級(jí)同步的詳細(xì)步驟為
2. I第一級(jí)同步在各節(jié)點(diǎn)內(nèi),數(shù)據(jù)發(fā)送線程通過在共享內(nèi)存區(qū)讀取工作線程提供的 數(shù)據(jù)實(shí)現(xiàn)邏輯時(shí)間同步。新的步長(zhǎng)開始后,工作線程保持檢測(cè)數(shù)據(jù)接收區(qū)的更新標(biāo)志,若數(shù)據(jù)已更新,則讀 取數(shù)據(jù)、進(jìn)行計(jì)算(進(jìn)行模型計(jì)算,若是第一次執(zhí)行則根據(jù)初始化參數(shù)計(jì)算,否則根據(jù)接收 到的數(shù)據(jù)計(jì)算)并將需要發(fā)送的計(jì)算結(jié)果保存在數(shù)據(jù)發(fā)送區(qū)中,更新數(shù)據(jù)發(fā)送區(qū)的更新標(biāo) 志。如圖3所示,數(shù)據(jù)發(fā)送線程的工作流程如下
1)向控制線程發(fā)送消息,報(bào)告本地節(jié)點(diǎn)狀態(tài);
2)讀取數(shù)據(jù)發(fā)送區(qū)的數(shù)據(jù)更新標(biāo)志,判斷數(shù)據(jù)是否更新;
3)如果數(shù)據(jù)已更新轉(zhuǎn)到4),否則轉(zhuǎn)到5);
4)將數(shù)據(jù)發(fā)送區(qū)的數(shù)據(jù)讀取、封裝并加上邏輯時(shí)戳,按照節(jié)點(diǎn)間的數(shù)據(jù)交互關(guān)系,通 過計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送給系統(tǒng)內(nèi)的其他節(jié)點(diǎn);其中,邏輯時(shí)戳值為當(dāng)前本地邏輯時(shí)間大小加I ;
5)若工作線程允許推進(jìn),則轉(zhuǎn)到6),否則轉(zhuǎn)到2);
6)向控制線程報(bào)告狀態(tài),并請(qǐng)求推進(jìn);
7)等待推進(jìn)命令;8)收到推進(jìn)命令,轉(zhuǎn)到(1),收到退出命令后退出。工作線程檢測(cè)數(shù)據(jù)接收區(qū)的更新標(biāo)志時(shí),工作線程在經(jīng)過%次查詢等待仍未收到 新數(shù)據(jù),則放棄等待,向控制節(jié)點(diǎn)請(qǐng)求推進(jìn)至下一步長(zhǎng),n0為根據(jù)虛擬試驗(yàn)對(duì)步長(zhǎng)的要求而 設(shè)置的閥值。2. 2第二級(jí)同步在節(jié)點(diǎn)間,控制線程通過網(wǎng)絡(luò)統(tǒng)一控制并協(xié)調(diào)各運(yùn)算節(jié)點(diǎn)內(nèi)的 工作線程,實(shí)現(xiàn)節(jié)點(diǎn)間的邏輯時(shí)間和步長(zhǎng)推進(jìn)的同步。如圖4所示,在節(jié)點(diǎn)間,每個(gè)節(jié)點(diǎn)的一個(gè)步長(zhǎng)工作結(jié)束后,數(shù)據(jù)發(fā)送線程向控制線 程發(fā)送步長(zhǎng)推進(jìn)請(qǐng)求??刂凭€程負(fù)責(zé)接收系統(tǒng)內(nèi)所有節(jié)點(diǎn)的狀態(tài)報(bào)告,根據(jù)各節(jié)點(diǎn)的狀態(tài) 報(bào)告判斷節(jié)點(diǎn)的工作狀況以及當(dāng)前系統(tǒng)邏輯時(shí)間的推進(jìn)情況??刂凭€程在收到所有節(jié)點(diǎn)發(fā) 送的步長(zhǎng)推進(jìn)請(qǐng)求后,綜合判斷系統(tǒng)當(dāng)前狀況,向各節(jié)點(diǎn)發(fā)送步長(zhǎng)推進(jìn)命令,各節(jié)點(diǎn)在控制 線程的統(tǒng)一協(xié)調(diào)下實(shí)現(xiàn)同步向前推進(jìn)??刂凭€程還負(fù)責(zé)維護(hù)虛擬試驗(yàn)系統(tǒng)的邏輯時(shí)間,并定期向所有節(jié)點(diǎn)廣播更新的邏 輯時(shí)間。2.3第三級(jí)同步在各節(jié)點(diǎn)內(nèi),數(shù)據(jù)接收線程通過共享內(nèi)存區(qū)將數(shù)據(jù)交給工作線 程實(shí)現(xiàn)邏輯時(shí)間的同步。如圖5所示,在虛擬試驗(yàn)系統(tǒng)運(yùn)行期間,數(shù)據(jù)接收線程保持對(duì)端口的偵聽,收到數(shù) 據(jù)后進(jìn)行以下三種情況的處理
a.數(shù)據(jù)接收線程接收到節(jié)點(diǎn)間的交互數(shù)據(jù)后,根據(jù)本地邏輯時(shí)間和交互數(shù)據(jù)所附帶 的邏輯時(shí)戳的大小對(duì)比判斷數(shù)據(jù)的有效性,若數(shù)據(jù)有效則存入共享內(nèi)存區(qū)中的數(shù)據(jù)接收 區(qū)、更新數(shù)據(jù)接收區(qū)的更新標(biāo)志并通知工作線程;若數(shù)據(jù)無效則丟棄數(shù)據(jù)繼續(xù)偵聽。b.數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的邏輯時(shí)間廣播后,校正本地邏輯時(shí)間值。c.數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的控制命令后,解讀控制命令,并采取相應(yīng) 動(dòng)作。通過以上分級(jí)同步步驟,最終實(shí)現(xiàn)所有節(jié)點(diǎn)的工作線程的邏輯時(shí)間和步長(zhǎng)推進(jìn)的 同步。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施 例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域 的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,應(yīng)視為本發(fā)明的保 護(hù)范圍。
權(quán)利要求
1.一種分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,步驟為(1)配置節(jié)點(diǎn)并啟動(dòng)虛擬試驗(yàn)系統(tǒng)進(jìn)行初始化在虛擬試驗(yàn)系統(tǒng)中設(shè)置通過網(wǎng)絡(luò)互聯(lián) 的一控制節(jié)點(diǎn)和一個(gè)以上的運(yùn)算節(jié)點(diǎn),所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中均設(shè)置有用于完成節(jié)點(diǎn) 數(shù)據(jù)處理和模型計(jì)算任務(wù)的工作線程、數(shù)據(jù)發(fā)送線程、數(shù)據(jù)接收線程以及共享內(nèi)存區(qū);所述 控制節(jié)點(diǎn)的工作線程為控制線程;(2)分級(jí)同步(2. 1)第一級(jí)同步在所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中,所述數(shù)據(jù)發(fā)送線程通過在所述共享 內(nèi)存區(qū)讀取所述工作線程提供的數(shù)據(jù)實(shí)現(xiàn)邏輯時(shí)間同步;(2. 2)第二級(jí)同步在上述節(jié)點(diǎn)之間,所述控制線程通過網(wǎng)絡(luò)統(tǒng)一控制并協(xié)調(diào)各運(yùn)算節(jié) 點(diǎn)內(nèi)的工作線程,實(shí)現(xiàn)節(jié)點(diǎn)間的邏輯時(shí)間和步長(zhǎng)推進(jìn)的同步;(2. 3)第三級(jí)同步在所述控制節(jié)點(diǎn)和運(yùn)算節(jié)點(diǎn)中,所述數(shù)據(jù)接收線程通過所述共享內(nèi) 存區(qū)將數(shù)據(jù)交給工作線程實(shí)現(xiàn)邏輯時(shí)間的同步。
2.根據(jù)權(quán)利要求1所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于所述 共享內(nèi)存區(qū)包括數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū),所述數(shù)據(jù)發(fā)送區(qū)和數(shù)據(jù)接收區(qū)中分別設(shè)有用于 標(biāo)示當(dāng)前數(shù)據(jù)是否更新的數(shù)據(jù)更新標(biāo)志。
3.根據(jù)權(quán)利要求1或2所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,所 述步驟(2. 1)的具體步驟為在各節(jié)點(diǎn)內(nèi),均維持著一個(gè)本地邏輯時(shí)鐘,其邏輯時(shí)間以虛擬 試驗(yàn)開始為起算節(jié)點(diǎn)并在控制線程協(xié)調(diào)下逐步遞增;新的步長(zhǎng)開始后,所述工作線程保持 檢測(cè)數(shù)據(jù)接收區(qū)的數(shù)據(jù)更新標(biāo)志;若數(shù)據(jù)已更新,則讀取數(shù)據(jù)、進(jìn)行計(jì)算并將需要發(fā)送的計(jì) 算結(jié)果保存在數(shù)據(jù)發(fā)送區(qū)中,更新數(shù)據(jù)發(fā)送區(qū)的數(shù)據(jù)更新標(biāo)志;數(shù)據(jù)發(fā)送線程檢測(cè)到數(shù)據(jù) 發(fā)送區(qū)的數(shù)據(jù)更新標(biāo)志為有效后,將數(shù)據(jù)讀取、封裝并加上邏輯時(shí)戳,通過網(wǎng)絡(luò)發(fā)送給其他 節(jié)點(diǎn),向控制節(jié)點(diǎn)請(qǐng)求推進(jìn)到下一步長(zhǎng)。
4.根據(jù)權(quán)利要求3所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,所述 工作線程檢測(cè)所述數(shù)據(jù)接收區(qū)的數(shù)據(jù)更新標(biāo)志時(shí),工作線程在經(jīng)過%次查詢等待仍未收到 新數(shù)據(jù)時(shí),則放棄等待,向所述控制節(jié)點(diǎn)請(qǐng)求推進(jìn)至下一步長(zhǎng),其中為根據(jù)虛擬試驗(yàn)對(duì)步 長(zhǎng)的要求而設(shè)置的閥值。
5.根據(jù)權(quán)利要求4所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,所述 步驟(2. 2)的具體步驟為在所述各節(jié)點(diǎn)之間,所述控制線程在收到所有節(jié)點(diǎn)發(fā)送的步長(zhǎng) 推進(jìn)請(qǐng)求后,綜合判斷系統(tǒng)當(dāng)前狀況,向各節(jié)點(diǎn)發(fā)送步長(zhǎng)推進(jìn)命令,各節(jié)點(diǎn)在控制線程的統(tǒng) 一協(xié)調(diào)下實(shí)現(xiàn)同步向前推進(jìn);所述控制線程還負(fù)責(zé)維護(hù)虛擬試驗(yàn)系統(tǒng)的邏輯時(shí)間,并定期 向所有節(jié)點(diǎn)廣播更新的邏輯時(shí)間。
6.根據(jù)權(quán)利要求5所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,所述 步驟(2. 3)在虛擬試驗(yàn)系統(tǒng)運(yùn)行期間,所述數(shù)據(jù)接收線程保持對(duì)端口的偵聽,收到數(shù)據(jù)后進(jìn) 行以下三種情況的處理a.所述數(shù)據(jù)接收線程接收到所述節(jié)點(diǎn)之間的交互數(shù)據(jù)后,根據(jù)本地邏輯時(shí)間和所述 交互數(shù)據(jù)所附帶的邏輯時(shí)戳的大小對(duì)比判斷數(shù)據(jù)的有效性,若數(shù)據(jù)有效則存入共享內(nèi)存區(qū) 中的數(shù)據(jù)接收區(qū)、更新數(shù)據(jù)接收區(qū)的更新標(biāo)志并通知工作線程;若數(shù)據(jù)無效則丟棄數(shù)據(jù),繼 續(xù)偵聽;b.所述數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的邏輯時(shí)間廣播后,校正本地邏輯時(shí)間值;c.所述數(shù)據(jù)接收線程接收到來自控制節(jié)點(diǎn)的控制命令后,解讀控制命令,并采取相應(yīng) 動(dòng)作。
7.根據(jù)權(quán)利要求6所述的分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,其特征在于,所述 虛擬試驗(yàn)系統(tǒng)中分設(shè)控制網(wǎng)和運(yùn)行網(wǎng),所述控制命令、邏輯時(shí)間廣播和所述步長(zhǎng)推進(jìn)請(qǐng)求 通過所述控制網(wǎng)傳送;所述節(jié)點(diǎn)之間的交互數(shù)據(jù)通過運(yùn)行網(wǎng)傳送。
全文摘要
一種分布式虛擬試驗(yàn)系統(tǒng)中的節(jié)點(diǎn)同步方法,包括以下步驟(1)配置節(jié)點(diǎn)在虛擬試驗(yàn)系統(tǒng)中設(shè)置通過網(wǎng)絡(luò)互聯(lián)的一控制節(jié)點(diǎn)和一個(gè)以上的運(yùn)算節(jié)點(diǎn);啟動(dòng)虛擬試驗(yàn)系統(tǒng)并初始化;(2)分級(jí)同步第一級(jí)同步在各節(jié)點(diǎn)內(nèi),數(shù)據(jù)發(fā)送線程通過在共享內(nèi)存區(qū)讀取工作線程提供的數(shù)據(jù)實(shí)現(xiàn)邏輯時(shí)間同步;第二級(jí)同步在節(jié)點(diǎn)間,控制線程通過網(wǎng)絡(luò)統(tǒng)一控制并協(xié)調(diào)各運(yùn)算節(jié)點(diǎn)內(nèi)的工作線程,實(shí)現(xiàn)節(jié)點(diǎn)間的邏輯時(shí)間和步長(zhǎng)推進(jìn)的同步;第三級(jí)同步在各節(jié)點(diǎn)內(nèi),數(shù)據(jù)接收線程通過共享內(nèi)存區(qū)將數(shù)據(jù)交給工作線程實(shí)現(xiàn)邏輯時(shí)間的同步。本發(fā)明具有原理簡(jiǎn)單、操作簡(jiǎn)便、能保證節(jié)點(diǎn)時(shí)間同步、簡(jiǎn)化系統(tǒng)設(shè)計(jì)、提高整個(gè)系統(tǒng)運(yùn)行效率等優(yōu)點(diǎn)。
文檔編號(hào)G06F9/52GK102662770SQ20121013006
公開日2012年9月12日 申請(qǐng)日期2012年4月28日 優(yōu)先權(quán)日2012年4月28日
發(fā)明者劉純武, 張羿猛, 胡君朋, 蘇紹璟, 蔡郭汕, 郭曉俊, 黃芝平 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)