何德濤
(武漢交通職業(yè)學(xué)院,湖北 武漢 430065)
在航海模擬器應(yīng)用不斷發(fā)展的背景下,航海模擬器改進(jìn)與完善成為當(dāng)下航海領(lǐng)域的重點(diǎn)研究課題。航海模擬器系統(tǒng)的性能大多取決于其數(shù)據(jù)通信能力。因此,如何提高航海模擬器數(shù)據(jù)通信能力,成為完善航海模擬器的關(guān)鍵所在。鑒于此,研究數(shù)據(jù)通信技術(shù)在航海模擬器中的應(yīng)用,具有重要的研究?jī)r(jià)值。
航海模擬器屬于一種大型分布交互式仿真系統(tǒng)。它的核心由兩部分組成,即一組計(jì)算機(jī)和一套運(yùn)作于網(wǎng)絡(luò)中的應(yīng)用程序。整個(gè)系統(tǒng)中,計(jì)算機(jī)終端與應(yīng)用程序的協(xié)同性對(duì)系統(tǒng)數(shù)據(jù)通信能力具有決定性影響。在航海模擬器功能越來(lái)越豐富的背景下,系統(tǒng)數(shù)據(jù)通信部分需要承擔(dān)更大的任務(wù),這無(wú)疑會(huì)引發(fā)一系列超負(fù)荷問(wèn)題[1]。比如,大量的數(shù)據(jù)信息可能會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞,進(jìn)而導(dǎo)致由于數(shù)據(jù)傳輸延遲甚至終端而引發(fā)的視鏡機(jī)死機(jī)。顯然,這會(huì)對(duì)航海模擬器的數(shù)據(jù)通信效率和畫面的流暢度產(chǎn)生十分不利的影響。目前,航海模擬器通信系統(tǒng)的主要問(wèn)題,包括海圖機(jī)承擔(dān)較重負(fù)載、通信過(guò)程有待簡(jiǎn)化、數(shù)據(jù)傳輸冗余性過(guò)強(qiáng)等,都需要相關(guān)技術(shù)人員圍繞此展開(kāi)研究與分析,并提出相應(yīng)的解決對(duì)策。
所謂ACE技術(shù),就是指自適配網(wǎng)絡(luò)通信環(huán)境(Adaptive Communication Environment),是一種面向?qū)ο蟮木W(wǎng)絡(luò)通信編程中間件。相較于一些原始的操作系統(tǒng),ACE技術(shù)具有可移植性、簡(jiǎn)易性,在應(yīng)用過(guò)程中不易出現(xiàn)錯(cuò)誤現(xiàn)象。同時(shí),該項(xiàng)技術(shù)還可以對(duì)應(yīng)用程序的創(chuàng)建、組成、配置以及移植進(jìn)行簡(jiǎn)化處理。此外,基于ACE技術(shù)的應(yīng)用模式有很多種類型,在通信系統(tǒng)中無(wú)疑具有更強(qiáng)的適用性。因此,對(duì)于航海模擬器通信服務(wù)器的設(shè)計(jì)而言,ACE技術(shù)顯然具有較高的應(yīng)用價(jià)值,各方面優(yōu)勢(shì)突出。受限于篇幅,本文不對(duì)該項(xiàng)技術(shù)進(jìn)行詳盡闡述,相關(guān)知識(shí)可參考文獻(xiàn)[2]。
Client/server是基于客戶端或服務(wù)器結(jié)構(gòu)的一種通信模式。在該模式下,客戶端與服務(wù)器端會(huì)接收適當(dāng)?shù)娜蝿?wù),使通信系統(tǒng)得以協(xié)同工作。同時(shí),客戶端與服務(wù)器端的硬件環(huán)境優(yōu)勢(shì)也得到了充分發(fā)揮。客戶端的任務(wù)是以用戶為對(duì)象,從客戶端接收用戶的請(qǐng)求,然后由服務(wù)器端對(duì)相應(yīng)的請(qǐng)求進(jìn)行處理與回應(yīng)。Client/server通信模式對(duì)客戶端、服務(wù)器端的協(xié)同性提出了很高要求。該模式的特點(diǎn)在于實(shí)現(xiàn)了資源共享,且在管理方面更具科學(xué)性和專業(yè)性,處理信息時(shí)也更具高效性。顯然,在軟件、硬件資源的保護(hù)方面,Client/server通信模式具有更大的優(yōu)勢(shì),且這種結(jié)構(gòu)在靈活性、拓展性以及開(kāi)放性方面都比較突出,在航海模擬器中具有較高的應(yīng)用價(jià)值。
針對(duì)航海模擬器數(shù)據(jù)通信存在的問(wèn)題,筆者認(rèn)為可以將通信服務(wù)器應(yīng)用于航海模擬器,并運(yùn)用ACE技術(shù),圍繞Client/server,打造數(shù)據(jù)服務(wù)平臺(tái)。其中,Client/server通信模式有多種,本文圍繞其中一種展開(kāi)研究與分析,并將其作為航海模擬器數(shù)據(jù)服務(wù)平臺(tái)的通信模式。它的模型圖如圖1所示。

圖1 在不同計(jì)算機(jī)上運(yùn)行客戶機(jī)程序與服務(wù)器程序模型
本文所述的航海模擬器具有多本船配置,在數(shù)據(jù)服務(wù)平臺(tái)的構(gòu)建過(guò)程中,由于存在較多的客戶端,因此服務(wù)器需要承擔(dān)比較繁重的任務(wù)。因此,必須提高通信系統(tǒng)運(yùn)行的可靠性和有效性,而這就要求將提高通信并發(fā)能力作為數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)的重點(diǎn)。此外,航海模擬器規(guī)模與功能的擴(kuò)展,也對(duì)其數(shù)據(jù)通信量提出了更高要求。為了實(shí)現(xiàn)航海模擬器的拓展,必須對(duì)其數(shù)據(jù)服務(wù)平臺(tái)的通信并發(fā)能力的提升與優(yōu)化予以高度重視。
正如上文所述,數(shù)據(jù)通信系統(tǒng)的性能很大程度上取決于通信并發(fā)策略。因此,在航海模擬器數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)中,必須關(guān)注數(shù)據(jù)通信系統(tǒng)的應(yīng)用環(huán)境優(yōu)化問(wèn)題,并對(duì)通信并發(fā)策略進(jìn)行合理選擇。現(xiàn)階段,關(guān)于通信并發(fā)策略的選擇有很多模型,本文主要對(duì)單線程、線程池兩種模型進(jìn)行介紹與分析[3]。
3.2.1 單線程模型
對(duì)于單線程模型而言,服務(wù)器需要根據(jù)請(qǐng)求順序,在同一個(gè)線程統(tǒng)一完成對(duì)全部客戶端請(qǐng)求的處理。換言之,任何請(qǐng)求在得到響應(yīng)前必須要完成前一個(gè)請(qǐng)求的處理。
相較于其他模型,單線程模型的優(yōu)勢(shì)在于系統(tǒng)運(yùn)作成本大幅度降低。不管是同步、創(chuàng)建與銷毀線程,還是切換上下文,難度相較于以往都有所降低。當(dāng)然,需要注意的是,當(dāng)代航海模擬器開(kāi)始運(yùn)用多核技術(shù)。在此背景下,如果簡(jiǎn)單運(yùn)用單線程模型,那么計(jì)算機(jī)中央處理器的性能可能無(wú)法得到充分發(fā)揮。以I/O密集型的應(yīng)用為例,該模式在面對(duì)多個(gè)請(qǐng)求時(shí),響應(yīng)速度可能相對(duì)較慢,會(huì)影響到系統(tǒng)性能。此外,同一時(shí)刻,系統(tǒng)應(yīng)對(duì)的請(qǐng)求如果過(guò)于繁雜,那么采用單線程模型就會(huì)存在無(wú)法承擔(dān)的問(wèn)題,進(jìn)而導(dǎo)致服務(wù)請(qǐng)求被無(wú)限擱置。
3.2.2 線程池模型
如果運(yùn)用線程池模型,那么相關(guān)開(kāi)銷問(wèn)題就可以得到解決。在對(duì)系統(tǒng)進(jìn)行初始化處理的過(guò)程中,會(huì)有多個(gè)線程在線程池提前派生出來(lái)。在服務(wù)器請(qǐng)求到達(dá)的過(guò)程中,管理器會(huì)從線程池中指派線程處理相關(guān)請(qǐng)求,并將此線程從線程池中移除掉。完成請(qǐng)求處理后,這一線程又會(huì)重新返回到線程池中。一般而言,線程池大小不會(huì)發(fā)生改變,不僅節(jié)能,而且節(jié)約成本。
對(duì)于航海模擬器數(shù)據(jù)通信系統(tǒng)而言,整個(gè)系統(tǒng)如上文所述屬于I/O密集型,這對(duì)其響應(yīng)請(qǐng)求的能力提出了較高要求。數(shù)據(jù)通信系統(tǒng)需要耗費(fèi)較多時(shí)間來(lái)處理相關(guān)任務(wù),需要承受較大負(fù)載。因此,在對(duì)比選擇通信并發(fā)策略時(shí),線程池模型應(yīng)予以優(yōu)先考慮。它在航海模擬器數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)中具有更強(qiáng)的適用性。
在線程池模型中,連接建立接收器后,對(duì)接受處理器進(jìn)行監(jiān)理,并在任務(wù)處理中加以運(yùn)用。關(guān)于線程池模型的種類,目前常見(jiàn)的有領(lǐng)導(dǎo)者/追隨者模型和半同步/半異步模型。需要注意的是,根據(jù)線程池技術(shù)的不同,在面對(duì)請(qǐng)求時(shí),其處理方式也有所差異。
例如,領(lǐng)導(dǎo)者/追隨者線程池模型要求在同一時(shí)間內(nèi)不能有多個(gè)領(lǐng)導(dǎo)者,追隨者線程則全部處于睡眠模式。外部事件會(huì)觸發(fā)領(lǐng)導(dǎo)者線程,此時(shí)領(lǐng)導(dǎo)者線程會(huì)挑選追隨者線程,并將其作為下一線程的領(lǐng)導(dǎo)者,然后對(duì)相應(yīng)的外部事件進(jìn)行處理。當(dāng)處理完事件后,這一線程則會(huì)轉(zhuǎn)化為追隨者,并重復(fù)上述流程,繼續(xù)待命。當(dāng)線程領(lǐng)導(dǎo)者被新的線程領(lǐng)導(dǎo)者取代后,新的線程領(lǐng)導(dǎo)者則需承擔(dān)上任線程領(lǐng)導(dǎo)者的工作。
再如,半同步/半異步線程池模型,主要分為同步層、隊(duì)列層以及異步層。通常,異步具有較高效率,但在編程中由于復(fù)雜的操作而不具有適用性。反之,同步對(duì)于編程來(lái)講相對(duì)簡(jiǎn)易。因此,如何將同步與異步優(yōu)勢(shì)結(jié)合,成為研究的重點(diǎn)。半同步/半異步線程池模型正是基于此圍繞隊(duì)列層進(jìn)行了設(shè)計(jì),其中異步層的任務(wù)主要是請(qǐng)求接收,而隊(duì)列層則是承擔(dān)待處理請(qǐng)求的存放工作,同步層的任務(wù)則是從隊(duì)列層中提取并處理相應(yīng)的請(qǐng)求[4]。
相較之下,領(lǐng)導(dǎo)者/追隨者線程池模型在處理請(qǐng)求方面的效率具有較突出的優(yōu)勢(shì),不需要切換上下文,只需一個(gè)線程就可以完成任務(wù)。當(dāng)然,這種模型的劣勢(shì)在于靈活性不足,線程池模型隊(duì)列的缺失將導(dǎo)致其在調(diào)度方面存在缺陷。而半同步/半異步線程池模型的優(yōu)勢(shì)則在于靈活性較高,能夠在隊(duì)列層中進(jìn)行任務(wù)調(diào)度,但由于存在切換上下文操作,因此在效率方面有待提升。
在航海模擬器數(shù)據(jù)服務(wù)平臺(tái)設(shè)計(jì)中,如果要提高任務(wù)調(diào)度的靈活度,那么可以有效考慮半同步/半異步線程池模型;如果要提高效率,那么領(lǐng)導(dǎo)者/追隨者線程池模型則具有更強(qiáng)的適用性。受限于本文對(duì)數(shù)據(jù)通信技術(shù)在航海模擬器的應(yīng)用研究尚未詳盡,在未來(lái)航海模擬器應(yīng)用領(lǐng)域的發(fā)展中,相關(guān)技術(shù)人員需要圍繞此展開(kāi)進(jìn)一步探究,并提出更優(yōu)的改進(jìn)策略,以此發(fā)揮數(shù)據(jù)通信技術(shù)的優(yōu)勢(shì)與特點(diǎn),為推進(jìn)航海模擬器應(yīng)用領(lǐng)域的發(fā)展提供助益。
參考文獻(xiàn):
[1] 朱春镕.航海模擬器中數(shù)據(jù)通信技術(shù)的應(yīng)用研究[D].大連:大連海事大學(xué),2015.
[2] 陳 兵,于芳濤.簡(jiǎn)易船載航海數(shù)據(jù)記錄儀S-VDR的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2007,22(2):34-36,44.
[3] 張士君.現(xiàn)代網(wǎng)絡(luò)通信技術(shù)的應(yīng)用研究[J].科技展望,2016,26(14):6.
[4] 呂英龍,王 劍.北斗衛(wèi)星通信技術(shù)在航標(biāo)遙測(cè)遙控系統(tǒng)中的應(yīng)用[J].港口科技,2016,(1):42-44.