?

實時高效的共享內存技術在高速磁浮交通仿真中的應用

2016-11-25 00:00張旭彤
電腦知識與技術 2016年26期
關鍵詞:網絡通信

張旭彤

摘要:該文論述了一種實施高效的共享內存技術,它可用于高速磁浮交通仿真中仿真計算機或者仿真服務器內部的多進程通信管理和信息傳輸,并且能夠滿足磁浮仿真環境中三層硬件架構(頂層工作站、中間層服務器、底層管理計算機)之間的網絡通信要求,以完成對磁浮功能軟件的測試與驗證。在統一的報文格式下,該共享內存技術使用配置文件記錄通信節點的起始端口和IP地址等信息,確保了通信進程的獨立性和實時性。此外,選取共享內存技術以實現仿真環境中應用層和通信層之間的數據傳輸,提高仿真環境處理數據的效率,確保高速磁浮交通仿真的傳輸性能。

關鍵詞:多進程通信;共享內存技術;高速磁浮交通仿真;網絡通信

中圖分類號:TP311.52 文獻標識碼:A 文章編號:1009-3044(2016)26-0248-02

1研究背景

為了實現高速磁浮交通仿真中仿真計算機或仿真服務器內部的信息傳輸或者數據傳輸,以完成對本機所運行的磁浮功能軟件進行環境故障注入條件下的系統功能和性能的測試與驗證,需要使用一種可在多進程之間切換的高效通信技術。高速磁浮仿真的硬件架構分為三層:底層是子系統仿真管理計算機,中間層是仿真支撐服務器,頂層是工作站仿真計算機。由于仿真環境通過以太網相連,網絡中的每一臺機器不僅作為一個通信節點與網絡進行信息傳輸,而且需要與多種類的磁浮功能軟件進行數據交互。共享內存技術作為最高效的本機進程間通信技術,可以快速地將內存中的數據映射到多個不同的進程中。因此,在磁浮交通仿真環境中使用共享內存技術,不僅可以實現仿真計算機內部的多進程通信,還可以提高仿真環境處理數據的效率,減少信息傳遞或者故障注入的響應時間,確保高速磁浮交通仿真的傳輸性能。

2 影響因素分析

由于高速磁浮交通仿真的功能特性與通信要求,數據傳輸的高效性和實時性是通信時的重中之重。而且仿真環境中各個節點的端口信息、數量、IP地址等需要根據通信需求進行改變,因此通過對仿真環境中通信節點的信息傳輸要求分析,可以得到數據通信需具有以下特點:

1) 高速磁浮交通仿真環境中的數據傳輸是大批量、高頻率的,具體的要求要視仿真設備終端采集數據的頻率和請求發送的頻率而定;

2) 數據傳輸要具有實時性,將仿真設備采集的數據實時傳給網絡中的通信層,并且對異?;蛘哧惻f數據進行清除;

3) 仿真環境中磁浮計算機與通信節點采用“一對多”的關系;

4) 通信節點的端口信息、地址等可能改變,需要手動配置通信節點的信息;

5) 為了維護磁浮仿真環境的可擴展性,通信節點可能發生增加或刪除的情況,需要對通信節點做增刪操作。

3 方案設計

在高速磁浮交通仿真環境中,每一臺計算機中的軟件架構分為通信層與應用層。通信層進程主要負責為應用層和其他通信節點提供通信服務,并且監控網絡中的通信狀態,定時記錄通信日志等;應用層進程即為環境中各個磁浮模塊運行的磁浮功能軟件,與用戶及通信層進程進行交互。為了確保高速磁浮交通仿真的傳輸性能,本機間進程通過共享內存方式進行通信,并且同時為通信層與應用層提供可讀寫的共享內存接口,將共享內存技術封裝為DLL動態鏈接庫的方式分別提供給通信層與應用層以完成進程間的交互。其次,使用Windows系統的Initialization File(.ini文件)對可變化的通信節點進行配置和管理。

3.1 共享內存技術

高速磁浮交通仿真的共享內存技術采用一種“主—從式”的技術架構。在高速磁浮交通仿真計算機中,共享內存同時提供給計算機中的通信層和應用層,由通信層進行統一地新建和管理,應用層只能發送請求以獲得對共享內存的讀寫權限。共享內存技術主要是通過內存映射文件的方式進行工作,內存映射文件通過將文件內容復制給虛擬地址空間,通過互斥鎖管理內存的讀寫情況,完成多進程之間的通信。當內存映射文件被創建后,需要通信的線程分別將此對象載入自己的地址空間。此過程完成后,對此塊內存的讀寫會實時的反映到另一個使用此共享內存的進程中。

共享內存技術以DLL動態鏈接庫中函數的形式提供給通信層與應用層。載入動態鏈接庫文件并成功調用相應的初始化函數之后,進程便有了對相應共享內存的讀寫權限。當有報文到達時,進程將報文傳給對應的共享內存塊(從對應的共享內存塊中取出)。在每一個共享內存塊中,使用互斥鎖Mutex控制一個進程內多個線程對其的使用權。當某一個線程對共享內存塊進行讀(寫)操作時,將Mutex置為鎖狀態,使其他調用相同共享內存塊的線程置為阻塞狀態,直到該讀(寫)操作結束并且Mutex為解鎖狀態,再將內存塊的使用權交給其他線程。在每一個共享內存塊中,使用事件Event實現共享內存的讀寫同步機制。當某一個“寫入”共享內存塊的Mutex為解鎖狀態并且內存內容為空時,則將SetEvent()函數置為掛起狀態,等待線程的調用以及寫操作的信號。當某一個“讀出”共享內存塊的Mutex為解鎖狀態并且內存內容不為空時,無需線程調用自動將SetEvent()函數置為發信號狀態以進行讀操作。直到線程讀取完畢,解除發信號狀態以實現讀寫同步機制。通過實現共享內存的讀寫同步機制,可以大大提高進程通信的實時性以保證磁浮仿真環境的傳輸效率。

3.2 共享內存代理

在高速磁浮仿真環境中,由于通信節點的數量較多并且具有不確定性,對建立的大量共享內存塊進行查找會降低進程通信的傳輸效率,進程可能會花費大量的時間查找對應的共享內存塊,即使該共享內存塊可能早以銷毀。因此在建立一組共享內存塊的基礎上,此共享內存技術同時建立一個共享內存代理Container。

共享內存代理Container將所有的共享內存塊組成一個Map,并且以窗口的形式存儲。共享內存代理存儲共享內存塊的數量、網絡狀態和地址指針等信息。進程只需提供通信節點名稱以及收發地址即可調用共享內存代理,使用對應的共享內存塊進行通信。同時共享內存代理使用3.1中的互斥體Mutex控制多進程對共享內存塊的讀寫操作。共享內存代理使用事件Event維護共享內存塊的網絡狀態,當Mutex為鎖狀態時,代理向特定的共享內存塊發送Event信號,將共享內存塊置為“讀(寫)”狀態或者返回共享內存塊不存在或錯誤信號給進程。

此外,共享內存塊在建立的時候需要存儲名稱、ip地址、是否記錄日志等各種各樣的信息,但是共享內存代理只存儲內存塊的指針信息、是否可以讀寫的狀態等少量信息。所以進程只需要提供少量的信息就可以調用共享內存代理,讓代理去處理讀寫的問題,進程只需等待反饋即可。因此,使用共享內存代理解決了查找大量共享內存塊所帶來的效率降低問題,加快了進程讀寫的速度。

3.3 配置文件

共享內存使用Windows系統的Initialization File(.ini文件)對通信節點的端口信息、端口數量、起始地址、IP地址等其他信息進行配置和管理。由于高速磁浮交通仿真使用P2P通信協議作為通信架構,因此每一臺仿真計算機都擁有多個不同功能的通信節點。共享內存通過讀取.ini文件中通信節點信息,使用CreateFileMapping()創建文件映射,新建出通信結點數量的兩倍的共享內存塊。通過讀取通信節點的名稱,為每一個通信節點分配一個“讀出”共享內存塊和一個“寫入”共享內存塊,并且每一個共享內存塊使用MapViewOfFile()或MapViewOfFileEx()函數,將文件映射到調用的進程地址空間中。用戶只需要修改文本信息即可達到增刪改共享內存的效果,以此提高了共享內存技術的高效性。

4 實驗結果

根據共享內存的設計方案,編寫對應的.ini配置文件,將共享內存技術封裝為DLL文件提供給通信層和應用層之后,在傳輸速率為100Mbps的局域網中進行測試驗證,得到結果如下表:

5 結束語

文中論述的共享內存技術確保了高速磁浮交通仿真環境可以實時高效的進行進程間通信,實現了頂層工作站、中層服務器與底層管理計算機之間的進程交互要求,并且在傳輸大量數據的前提下,確保了數據傳輸的速度與效率。同時通信層與應用層完全互相獨立,通信節點可根據用戶需求靈活配置,極大地增加了該共享內存技術的可擴展性,為今后的磁浮仿真環境的通信需求調整、通信節點增刪提供了良好的基礎。并且該共享內存技術不僅適用于此磁浮仿真環境中,還可應用于類似的交通局域網的網絡通信中。

參考文獻:

[1] Ivar Jacobson, Martin Griss, Patrik Jonsson. Software Reuse—Architecture, Process and Organization for Business Success[M]. Addison Wesley Longman, 1997.

[2] 汪翔, 袁輝. Visual C++實踐與提高(網絡編程篇) [M]. 北京: 中國鐵道出版社, 2001.

[3] 余可曼, 陳平, 金連甫. 網絡通信中間件的設計及實現[J]. 計算機工程, 2001, 27(5).

[4] Gary B Shelly, Thomas J Cashman, Harry J Rosenblatt.系統分析與設計教程[M]. 李芳, 朱群雄, 陳軼群, 等,譯.北京: 機械工業出版社, 2004.

[5] 梁庚, 白焰. Windows下進程間通信方式探討[J]. 微型電腦應用, 2006, 22(12).

[6] 馬魁濤, 蔡穎, 郭寶峰. Win32進程間信息共享的實現方法研究[J]. 計算機應用與軟件, 2007, 23(12).

[7] 周偉明. 多核計算與程序設計[M]. 武漢: 華中科技大學出版社, 2009.

猜你喜歡
網絡通信
基于NoC架構的網絡通信抗干擾方法研究
基于網絡通信的智能照明系統設計
基于CAN總線的網絡通信信道的建模與研究
移動計算機網絡通信技術研究
遠程網絡通信中安全監測平臺設計
計算機網絡通信常見問題與技術發展研究
網絡通信中信息隱藏技術的應用
基于網絡通信的校園智能音箱設計
談計算機網絡通信常見問題及技術發展
汽車檢測控制系統網絡通信技術分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合