資源描述:
《實(shí)時(shí)高效的共享內(nèi)存技術(shù)在高速磁浮交通仿真中的應(yīng)用》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、實(shí)時(shí)高效的共享內(nèi)存技術(shù)在高速磁浮交通仿真中的應(yīng)用 摘要:該文論述了一種實(shí)施高效的共享內(nèi)存技術(shù),它可用于高速磁浮交通仿真中仿真計(jì)算機(jī)或者仿真服務(wù)器內(nèi)部的多進(jìn)程通信管理和信息傳輸,并且能夠滿足磁浮仿真環(huán)境中三層硬件架構(gòu)(頂層工作站、中間層服務(wù)器、底層管理計(jì)算機(jī))之間的網(wǎng)絡(luò)通信要求,以完成對磁浮功能軟件的測試與驗(yàn)證。在統(tǒng)一的報(bào)文格式下,該共享內(nèi)存技術(shù)使用配置文件記錄通信節(jié)點(diǎn)的起始端口和IP地址等信息,確保了通信進(jìn)程的獨(dú)立性和實(shí)時(shí)性。此外,選取共享內(nèi)存技術(shù)以實(shí)現(xiàn)仿真環(huán)境中應(yīng)用層和通信層之間的數(shù)據(jù)傳輸,提高仿真環(huán)境處理數(shù)據(jù)的效率,確保高速磁浮交通仿真的傳輸性能?! £P(guān)鍵詞:多進(jìn)程通信;共享內(nèi)存
2、技術(shù);高速磁浮交通仿真;網(wǎng)絡(luò)通信 中圖分類號:TP311.52文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2016)26-0248-02 1研究背景7 為了實(shí)現(xiàn)高速磁浮交通仿真中仿真計(jì)算機(jī)或仿真服務(wù)器內(nèi)部的信息傳輸或者數(shù)據(jù)傳輸,以完成對本機(jī)所運(yùn)行的磁浮功能軟件進(jìn)行環(huán)境故障注入條件下的系統(tǒng)功能和性能的測試與驗(yàn)證,需要使用一種可在多進(jìn)程之間切換的高效通信技術(shù)。高速磁浮仿真的硬件架構(gòu)分為三層:底層是子系統(tǒng)仿真管理計(jì)算機(jī),中間層是仿真支撐服務(wù)器,頂層是工作站仿真計(jì)算機(jī)。由于仿真環(huán)境通過以太網(wǎng)相連,網(wǎng)絡(luò)中的每一臺機(jī)器不僅作為一個(gè)通信節(jié)點(diǎn)與網(wǎng)絡(luò)進(jìn)行信息傳輸,而且需要與多種類的磁浮功能軟件進(jìn)行
3、數(shù)據(jù)交互。共享內(nèi)存技術(shù)作為最高效的本機(jī)進(jìn)程間通信技術(shù),可以快速地將內(nèi)存中的數(shù)據(jù)映射到多個(gè)不同的進(jìn)程中。因此,在磁浮交通仿真環(huán)境中使用共享內(nèi)存技術(shù),不僅可以實(shí)現(xiàn)仿真計(jì)算機(jī)內(nèi)部的多進(jìn)程通信,還可以提高仿真環(huán)境處理數(shù)據(jù)的效率,減少信息傳遞或者故障注入的響應(yīng)時(shí)間,確保高速磁浮交通仿真的傳輸性能?! ?影響因素分析 由于高速磁浮交通仿真的功能特性與通信要求,數(shù)據(jù)傳輸?shù)母咝院蛯?shí)時(shí)性是通信時(shí)的重中之重。而且仿真環(huán)境中各個(gè)節(jié)點(diǎn)的端口信息、數(shù)量、IP地址等需要根據(jù)通信需求進(jìn)行改變,因此通過對仿真環(huán)境中通信節(jié)點(diǎn)的信息傳輸要求分析,可以得到數(shù)據(jù)通信需具有以下特點(diǎn): 1)高速磁浮交通仿真環(huán)境中的數(shù)據(jù)傳輸
4、是大批量、高頻率的,具體的要求要視仿真設(shè)備終端采集數(shù)據(jù)的頻率和請求發(fā)送的頻率而定; 2)數(shù)據(jù)傳輸要具有實(shí)時(shí)性,將仿真設(shè)備采集的數(shù)據(jù)實(shí)時(shí)傳給網(wǎng)絡(luò)中的通信層,并且對異?;蛘哧惻f數(shù)據(jù)進(jìn)行清除; 3)仿真環(huán)境中磁浮計(jì)算機(jī)與通信節(jié)點(diǎn)采用“一對多”的關(guān)系; 4)通信節(jié)點(diǎn)的端口信息、地址等可能改變,需要手動配置通信節(jié)點(diǎn)的信息; 5)為了維護(hù)磁浮仿真環(huán)境的可擴(kuò)展性,通信節(jié)點(diǎn)可能發(fā)生增加或刪除的情況,需要對通信節(jié)點(diǎn)做增刪操作?! ?方案設(shè)計(jì)7 在高速磁浮交通仿真環(huán)境中,每一臺計(jì)算機(jī)中的軟件架構(gòu)分為通信層與應(yīng)用層。通信層進(jìn)程主要負(fù)責(zé)為應(yīng)用層和其他通信節(jié)點(diǎn)提供通信服務(wù),并且監(jiān)控網(wǎng)絡(luò)中的通信狀態(tài),定
5、時(shí)記錄通信日志等;應(yīng)用層進(jìn)程即為環(huán)境中各個(gè)磁浮模塊運(yùn)行的磁浮功能軟件,與用戶及通信層進(jìn)程進(jìn)行交互。為了確保高速磁浮交通仿真的傳輸性能,本機(jī)間進(jìn)程通過共享內(nèi)存方式進(jìn)行通信,并且同時(shí)為通信層與應(yīng)用層提供可讀寫的共享內(nèi)存接口,將共享內(nèi)存技術(shù)封裝為DLL動態(tài)鏈接庫的方式分別提供給通信層與應(yīng)用層以完成進(jìn)程間的交互。其次,使用Windows系統(tǒng)的InitializationFile(.ini文件)對可變化的通信節(jié)點(diǎn)進(jìn)行配置和管理。 3.1共享內(nèi)存技術(shù) 高速磁浮交通仿真的共享內(nèi)存技術(shù)采用一種“主―從式”的技術(shù)架構(gòu)。在高速磁浮交通仿真計(jì)算機(jī)中,共享內(nèi)存同時(shí)提供給計(jì)算機(jī)中的通信層和應(yīng)用層,由通信層進(jìn)
6、行統(tǒng)一地新建和管理,應(yīng)用層只能發(fā)送請求以獲得對共享內(nèi)存的讀寫權(quán)限。共享內(nèi)存技術(shù)主要是通過內(nèi)存映射文件的方式進(jìn)行工作,內(nèi)存映射文件通過將文件內(nèi)容復(fù)制給虛擬地址空間,通過互斥鎖管理內(nèi)存的讀寫情況,完成多進(jìn)程之間的通信。當(dāng)內(nèi)存映射文件被創(chuàng)建后,需要通信的線程分別將此對象載入自己的地址空間。此過程完成后,對此塊內(nèi)存的讀寫會實(shí)時(shí)的反映到另一個(gè)使用此共享內(nèi)存的進(jìn)程中。7 共享內(nèi)存技術(shù)以DLL動態(tài)鏈接庫中函數(shù)的形式提供給通信層與應(yīng)用層。載入動態(tài)鏈接庫文件并成功調(diào)用相應(yīng)的初始化函數(shù)之后,進(jìn)程便有了對相應(yīng)共享內(nèi)存的讀寫權(quán)限。當(dāng)有報(bào)文到達(dá)時(shí),進(jìn)程將報(bào)文傳給對應(yīng)的共享內(nèi)存塊(從對應(yīng)的共享內(nèi)存塊中取出)。在
7、每一個(gè)共享內(nèi)存塊中,使用互斥鎖Mutex控制一個(gè)進(jìn)程內(nèi)多個(gè)線程對其的使用權(quán)。當(dāng)某一個(gè)線程對共享內(nèi)存塊進(jìn)行讀(寫)操作時(shí),將Mutex置為鎖狀態(tài),使其他調(diào)用相同共享內(nèi)存塊的線程置為阻塞狀態(tài),直到該讀(寫)操作結(jié)束并且Mutex為解鎖狀態(tài),再將內(nèi)存塊的使用權(quán)交給其他線程。在每一個(gè)共享內(nèi)存塊中,使用事件Event實(shí)現(xiàn)共享內(nèi)存的讀寫同步機(jī)制。當(dāng)某一個(gè)“寫入”共享內(nèi)存塊的Mutex為解鎖狀態(tài)并且內(nèi)存內(nèi)容為空時(shí),則將SetEvent()函數(shù)置為掛起狀態(tài),等