999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于共享內存的測試指揮顯示系統進程數據同步技術研究

2020-12-14 09:12:38涂二看見
計算機應用與軟件 2020年12期
關鍵詞:進程系統

李 強 涂二看見 張 明

(中國華陰兵器試驗中心 陜西 華陰 714200)

0 引 言

測試指揮顯示系統能將測試系統的數據收集并進行顯示,對于指揮員掌握試驗整體態勢、了解試驗進程、輔助進行決策分析具有重要的作用。指揮員在進行試驗測試數據實時評估分析或者對試驗的關鍵進程進行決策時,需要測試指揮顯示系統將試驗中能反映出試驗總體進程的態勢數據、關鍵設備測試數據、實時監視視頻、指令進程數據、調度語音、氣象數據、電磁環境參數、靶標毀傷數據等進行匯集并同步顯示,這就要求測試指揮顯示系統的各個構件之間數據的高度協調和同步。測試指揮顯示系統在設計時,按照“一體化”軟件集成的思想,將通用服務、數據接口以及顯示框架以構件方式進行劃分,便于后期功能拓展。系統運行時,終端上部署的通用服務、數據接口以及不同的顯示構件間需要保持數據的一致性,使得呈現在指揮員面前的各類原始數據、結果數據、態勢曲線分析圖表等保持同步。本文主要針對測試指揮顯示系統多個進程間的數據同步問題進行分析,并提出解決的思路。

1 進程間數據同步的主要方式

進程間的數據同步通常可以采用管道、套接字、共享內存等機制[1]。管道是一種通過具有兩個端點的固定緩沖區進行數據交換的方式,它采用的是類似于通信中半雙工信道的進程通信機制,一個管道可以實現雙向數據傳輸,而同一個時刻只能最多有一個方向的傳輸,管道提供了一種進程間簡單的消息同步方式,管道中的數據通常是以FIFO方式保存,在管道的兩端,進程一邊寫入數據,另一邊則讀取數據[2]。共享內存則是將某一段內存空間通過映射的方式投影在多個用戶進程空間,從而實現多個進程間的數據共享,是進程間進行通信最快捷的方式。使用共享內存技術,不同進程可以同時訪問相同的內存區域,能夠通過共享它們地址空間的若干部分,對存儲在共享內存中的數據進行讀寫,從而實現彼此直接通信[3]。采用共享內存方式進行數據通信時,為避免訪問中出現的同步和互斥問題,需要通過信號量的方式進行進程間的同步和協調操作。套接字則是通過操作系統為用戶進程通信提供一種抽象數據結構來進行用戶進程間的網絡通信和連接的一種方式[3]。套接字實際上是提供進程通信的端點,通過此端點完成數據傳遞。文獻[4]對進程間的數據同步方式進行了測試分析,結果表明使用管道的方式進行數據同步,其數據傳輸時間基本固定,不隨數據報文大小的變化而變化(其傳輸時間基本由管道建立的時間決定),而采用共享內存和套接字的方式其數據傳輸時間都隨傳輸數據報文大小的增加而增加。因此,當傳輸較大數據報文時,采用管道方法比較理想;而在傳輸較小的數據報文時,共享內存方式優勢就比較明顯。從文獻中的測試數據情況來看,在傳輸數據報文小于10 KB時,采用共享內存方式性能最優。進程通信性能測試比較結果如圖1所示。

圖1 進程通信性能測試比較

本文研究的測試指揮顯示系統包括態勢綜合顯示、態勢管理和綜合數據采集服務三大部分。在網絡上部署系統時,通常在一臺終端上部署態勢管理和綜合數據采集服務,在另外多個終端上部署態勢綜合顯示。為保證多個終端與態勢管理之間數據顯示的一致性,通常需要各終端之間快速的數據同步。同步的數據包括各類測試數據、地圖顯示參數、編組信息、錄入參數、統計結果、標繪信息、操作指令等。按照測試顯示系統數據交互協議,目前接收的測試數據為固定字長78 B,編組信息、地圖顯示參數、統計結果數據其數據包均小于10 KB,因此按照上文進程通信性能測試的結果,測試指揮顯示系統最終采用共享內存方式實現多進程間的數據同步。

2 基于多環形隊列的共享內存異步傳輸數據同步機制

2.1 共享內存的一般模型

共享內存方式實現進程間數據同步可以用圖2進行描述。按照共享內存的數據寫入或讀取方式,將用戶進程分為客戶端和服務端。客戶端讀取數據和服務端寫入數據。服務器端寫入數據時(圖中用進程A表示)首先建立共享內存,然后可以往共享內存中寫入數據,并將內存區映射成可以被多個進程訪問的共享內存;客戶端讀取數據時(圖中用進程B表示)首先獲得共享內存的地址,然后通過地址映射,就可以從中讀出數據。文獻[4]設計了單項鏈表的共享內存方式進行進程同步測試,其數據同步帶寬遠遠大于測試指揮顯示系統同步的需求。

圖2 共享內存通信一般模型

然而,測試指揮顯示系統的數據同步涉及多個進程,因此在設計共享內存時,需要為每個進程分別建立一個數據緩沖區進行數據同步。由于各進程內部處理數據的速率并不一樣,處理每一批數據所消耗時間也就不相同,當這種差別較大時,就會造成相對應的數據緩沖區阻塞,對整個系統運行的性能產生影響,特別是在數據長度比較大時,需要引入信號量來協調對共享內存段的訪問,這會增加較多的時間開銷。因此在共享內存需求不斷增大時,需要采用一定的方式對共享內存數據同步方式進行優化,以消除共享內存增長引入信號量帶來的性能影響。

針對上述不足,本文提出一種基于多環形隊列的共享內存異步傳輸同步機制,將數據讀寫分別用多個環形隊列進行調度,很好地解決共享內存段讀寫互斥操作帶來的信號量開銷問題,同時降低收發進程構件的耦合度,提高系統整體性能。

2.2 設計思路

多環形隊列共享內存異步傳輸數據同步模型如圖3所示。

圖3 多環形隊列共享內存異步傳輸數據同步模型

在多環形隊列共享內存異步傳輸數據同步機制中,系統進行數據同步的共享內存區分成兩部分:管理控制塊和數據區。管理控制塊由管理控制信息、多個寫隊列環、多個讀隊列環組成,管理控制信息保存各寫隊列環對應的數據區大小,各寫隊列環寫入數據索引和讀取狀態標志等。寫隊列環保存的是一組空閑數據內存塊的索引;讀隊列環保存的則是已經讀取到顯示構件中的數據內存塊索引。

系統工作時,首先申請一塊內存區域作為共享內存緩沖池,并根據接入數據的種類和顯示構件多少生成相應數量的寫隊列環和讀隊列環,同時系統為各寫隊列環分配不同大小的空閑數據塊。空閑數據塊的大小和對應的數據類型有關,為了節省系統開銷,空閑數據塊大小固定。

數據發送時,系統根據發送的數據類型,查找相應的寫隊列環,并在這個寫隊列環上獲取到一個空閑數據塊索引,并將數據拷貝到該數據塊中,并更新管理控制數據塊中對應的寫入隊列的寫入索引。數據讀取時,系統根據管理控制數據塊中的標志位,將寫入塊索引放至讀取環的末尾,只有所有讀取環都寫入該索引后,管理控制數據塊中的標志位才重新復位,并更新對應的寫隊列環中數據索引。通過對讀寫環形隊列的不間斷交替操作,極大地弱化了共享內存空間物理結構帶來的影響,從而實現了收發雙方數據的異步傳輸,降低了模塊間的耦合度。采用這種共享內存動態管理的模式可以極大地提高內存的利用效率,并且使用多個讀寫隊列環進行數據同步還可以避免多個進程訪問調度帶來的性能影響。

3 方法設計

3.1 測試指揮顯示系統構成

測試指揮顯示系統為了實現各顯示終端與系統管理端的主從控制模式,設計了基于多環形隊列的共享內存和多進程協作機制,通過終端系統軟件的進程管理對共享內存中的資源以及進行資源請求的事件進行統一管理。每個終端軟件都有共享內存管理進程,可以對資源池中的共享內存塊進行調度管理,將人員編組、地圖標繪、控制指令、態勢信息等按相應的數據包大小構建寫隊列環。讀隊列環則按照終端系統軟件部署的顯示構件進行分配。調度管理進程通過共享內存資源池中定義的管理控制信息對讀寫進程進行調度管理。每個終端軟件上還需要部署數據收發進程,在系統進程管理下實時對系統端的數據進行數據同步操作,及時更新資源池中的數據,使各終端數據與系統管理端保持同步。測試指揮顯示系統結構如圖4所示。

圖4 測試指揮顯示系統結構圖

3.2 讀寫數據同步的工作流程

系統進行數據同步機制設計時,在共享內存空間內需要根據發送數據的類型創建不同的寫隊列環,包括人員編組、地圖標繪、控制指令、態勢信息等。發送進程訪問管理控制塊中相應的寫隊列環,如果隊列環不為空,則執行出隊操作,將寫隊列環head指針指向的空閑數據塊初始化,然后進行數據拷貝操作,同時將指向該數據塊的索引寫入管理控制塊的管理控制信息中,并通過該共享內存塊結構體內的條件變量,向管理進程發布數據更新事件消息。所有的顯示構件(接收方)在收到事件消息提醒后,遍歷對應的讀隊列環,獲取head索引指向的數據塊的數據,同時將數據塊結構體中的計算器增加1,若判斷計算器的數量等于寫隊列環的數量,則判斷所有接收進程都已經完成數據的讀取操作,并更新管理控制信息相應寫隊列環索引的標志位。終端進程發送接收流程如圖5所示。

圖5 系統數據同步工作流程

4 系統性能分析

為了驗證系統采用多環形隊列共享內存異步傳輸數據同步方式的實際性能是否滿足系統的實時性要求,采用VC++9.0編寫模擬數據發送軟件(軟件界面如圖6所示),對測試指揮顯示系統的數據讀取、顯示進行比較測試。測試環境為:主機:CPU i7-6700內存8 GB;網絡環境:百兆局域網。測試指揮顯示系統終端顯示軟件如圖7所示。

圖6 模擬數據發送軟件界面

圖7 測試指揮顯示系統終端軟件界面

4.1 數據傳輸延遲測試

為了測試數據傳輸延遲,模擬數據發送軟件以固定頻率向系統管理終端發送一定大小的數據,需要從管理端同步數據的顯示端數量從1增加到4。利用數據發送和顯示端接收的時間差計算傳輸的延遲。在本實驗中,發送方每秒分別發送500、1 000、1 500、2 000、2 500個固定大小的數據包,計算各自的平均數據傳輸延遲,實驗結果如圖8所示。可見,多環形隊列共享內存異步傳輸數據同步,數據傳輸延遲均隨著傳輸數據大小及接收方數量的增加而緩慢增加,但受同步終端數量影響不明顯。

圖8 數據測試結果

4.2 最大吞吐量測試

測試指揮顯示系統接收外部數據,每個數據包最大不超過5 KB,因此,在進行系統最大吞吐量測試時,模擬數據發送端傳輸的數據包大小固定為5 KB。發送方總計發送10 000個數據包,測試在不同發送頻率下的帶寬。帶寬的計算方式為:帶寬=數據包數量×5KB/時間,其中帶寬、數據包、時間均按發送和接收分別計算。最大吞吐量則為其不丟包時的最大帶寬。數據測試結果如圖9所示。

圖9 數據測試結果

進程間交換數據的傳統方法是在共享內存中開辟數組,系統數據交換性能在數據包個數一定范圍內是基本穩定的,但在數據超過共享內存空間時,系統響應時間會產生比較大的性能滑坡。采用多環形隊列共享內存異步傳輸數據同步對共享空間訪問進行優化,可以顯著提升系統性能,其傳輸延遲和吞吐量受客戶端數量影響不大。

5 結 語

測試指揮顯示系統將試驗中的態勢數據、關鍵設備測試數據、實時監視視頻、指令進程數據、調度語音、氣象數據、電磁環境參數、靶標毀傷數據,以及各類數據統計結果進行綜合顯示,是試驗指揮決策的關鍵環節。系統進程間數據的同步效率,直接影響其效能的發揮。本文針對較大數據量的數據同步問題,設計一種基于多環形隊列共享內存異步傳輸數據同步方法,替代傳統的內存數組的共享方式,很好地解決了大數據量匯集時共享內存數據同步效率降低的問題,提高了系統的適應性和可靠性,也為設計需要匯集較大數據量,且有多個進程進行數據同步協同工作類似指揮顯示系統軟件提供很好的解決思路。

猜你喜歡
進程系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: swag国产精品| 毛片在线播放网址| 日本免费高清一区| 无码AV动漫| 国产一级α片| 啪啪国产视频| 亚洲 成人国产| 国产91高跟丝袜| 无码久看视频| 欧美a级完整在线观看| 国产区网址| 亚洲国产精品一区二区第一页免| 欧美一区二区自偷自拍视频| 中国美女**毛片录像在线| 在线另类稀缺国产呦| 亚洲AⅤ无码国产精品| 日韩成人高清无码| 国产jizzjizz视频| 在线精品亚洲一区二区古装| 亚洲高清中文字幕| 五月婷婷导航| 欧洲日本亚洲中文字幕| 亚洲成av人无码综合在线观看| 国产va视频| 精品偷拍一区二区| 欧美激情成人网| 全午夜免费一级毛片| 国产精品人莉莉成在线播放| 欧美色香蕉| 亚洲大学生视频在线播放| 久久综合五月| 国产午夜精品一区二区三区软件| 久久美女精品国产精品亚洲| 亚洲黄色视频在线观看一区| 99资源在线| 国产精品免费p区| 九色免费视频| 波多野结衣视频网站| 免费在线看黄网址| 久久精品国产国语对白| 日本精品视频一区二区| 国产va免费精品| 婷婷色丁香综合激情| 喷潮白浆直流在线播放| 免费人成视网站在线不卡| 久久精品视频亚洲| 久久久久无码国产精品不卡 | 国产欧美日韩另类精彩视频| 999精品在线视频| 国产永久免费视频m3u8| 狼友视频一区二区三区| 国产精品亚洲va在线观看| 色婷婷色丁香| 亚洲国产成人麻豆精品| 香蕉蕉亚亚洲aav综合| 国产免费一级精品视频| 久久婷婷国产综合尤物精品| 国产精品综合色区在线观看| 亚洲高清免费在线观看| 精品三级在线| 农村乱人伦一区二区| 国产网站免费看| 麻豆精品在线播放| 国产高清在线观看91精品| 欧美一级在线看| 亚洲最大福利网站| 2020国产在线视精品在| 无码国产伊人| 亚洲人成影院午夜网站| 在线高清亚洲精品二区| 黄色网页在线观看| 日韩欧美国产综合| 乱人伦99久久| 国产精品视频系列专区| 成人精品亚洲| 伊人婷婷色香五月综合缴缴情| 国产亚洲欧美日韩在线观看一区二区| 2021国产精品自拍| 2021国产乱人伦在线播放| 成人自拍视频在线观看| 日韩欧美中文| 国产91丝袜在线播放动漫|