亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于共享內(nèi)存的測試指揮顯示系統(tǒng)進(jìn)程數(shù)據(jù)同步技術(shù)研究

        2020-12-14 09:12:38涂二看見
        計算機(jī)應(yīng)用與軟件 2020年12期
        關(guān)鍵詞:共享內(nèi)存傳輸數(shù)據(jù)隊列

        李 強(qiáng) 涂二看見 張 明

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

        0 引 言

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

        1 進(jìn)程間數(shù)據(jù)同步的主要方式

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

        圖1 進(jìn)程通信性能測試比較

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

        2 基于多環(huán)形隊列的共享內(nèi)存異步傳輸數(shù)據(jù)同步機(jī)制

        2.1 共享內(nèi)存的一般模型

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

        圖2 共享內(nèi)存通信一般模型

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

        針對上述不足,本文提出一種基于多環(huán)形隊列的共享內(nèi)存異步傳輸同步機(jī)制,將數(shù)據(jù)讀寫分別用多個環(huán)形隊列進(jìn)行調(diào)度,很好地解決共享內(nèi)存段讀寫互斥操作帶來的信號量開銷問題,同時降低收發(fā)進(jìn)程構(gòu)件的耦合度,提高系統(tǒng)整體性能。

        2.2 設(shè)計思路

        多環(huán)形隊列共享內(nèi)存異步傳輸數(shù)據(jù)同步模型如圖3所示。

        圖3 多環(huán)形隊列共享內(nèi)存異步傳輸數(shù)據(jù)同步模型

        在多環(huán)形隊列共享內(nèi)存異步傳輸數(shù)據(jù)同步機(jī)制中,系統(tǒng)進(jìn)行數(shù)據(jù)同步的共享內(nèi)存區(qū)分成兩部分:管理控制塊和數(shù)據(jù)區(qū)。管理控制塊由管理控制信息、多個寫隊列環(huán)、多個讀隊列環(huán)組成,管理控制信息保存各寫隊列環(huán)對應(yīng)的數(shù)據(jù)區(qū)大小,各寫隊列環(huán)寫入數(shù)據(jù)索引和讀取狀態(tài)標(biāo)志等。寫隊列環(huán)保存的是一組空閑數(shù)據(jù)內(nèi)存塊的索引;讀隊列環(huán)保存的則是已經(jīng)讀取到顯示構(gòu)件中的數(shù)據(jù)內(nèi)存塊索引。

        系統(tǒng)工作時,首先申請一塊內(nèi)存區(qū)域作為共享內(nèi)存緩沖池,并根據(jù)接入數(shù)據(jù)的種類和顯示構(gòu)件多少生成相應(yīng)數(shù)量的寫隊列環(huán)和讀隊列環(huán),同時系統(tǒng)為各寫隊列環(huán)分配不同大小的空閑數(shù)據(jù)塊??臻e數(shù)據(jù)塊的大小和對應(yīng)的數(shù)據(jù)類型有關(guān),為了節(jié)省系統(tǒng)開銷,空閑數(shù)據(jù)塊大小固定。

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

        3 方法設(shè)計

        3.1 測試指揮顯示系統(tǒng)構(gòu)成

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

        圖4 測試指揮顯示系統(tǒng)結(jié)構(gòu)圖

        3.2 讀寫數(shù)據(jù)同步的工作流程

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

        圖5 系統(tǒng)數(shù)據(jù)同步工作流程

        4 系統(tǒng)性能分析

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

        圖6 模擬數(shù)據(jù)發(fā)送軟件界面

        圖7 測試指揮顯示系統(tǒng)終端軟件界面

        4.1 數(shù)據(jù)傳輸延遲測試

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

        圖8 數(shù)據(jù)測試結(jié)果

        4.2 最大吞吐量測試

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

        圖9 數(shù)據(jù)測試結(jié)果

        進(jìn)程間交換數(shù)據(jù)的傳統(tǒng)方法是在共享內(nèi)存中開辟數(shù)組,系統(tǒng)數(shù)據(jù)交換性能在數(shù)據(jù)包個數(shù)一定范圍內(nèi)是基本穩(wěn)定的,但在數(shù)據(jù)超過共享內(nèi)存空間時,系統(tǒng)響應(yīng)時間會產(chǎn)生比較大的性能滑坡。采用多環(huán)形隊列共享內(nèi)存異步傳輸數(shù)據(jù)同步對共享空間訪問進(jìn)行優(yōu)化,可以顯著提升系統(tǒng)性能,其傳輸延遲和吞吐量受客戶端數(shù)量影響不大。

        5 結(jié) 語

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

        猜你喜歡
        共享內(nèi)存傳輸數(shù)據(jù)隊列
        基于單片機(jī)的物聯(lián)網(wǎng)傳輸數(shù)據(jù)高并發(fā)讀寫系統(tǒng)設(shè)計
        基于深度強(qiáng)化學(xué)習(xí)的物聯(lián)網(wǎng)傳輸數(shù)據(jù)實時調(diào)度方法
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        通過QT實現(xiàn)進(jìn)程間的通信
        蘋果專利可采用光纖輸出燈光并傳輸數(shù)據(jù)將光纖隱藏于車輛部件內(nèi)
        在隊列里
        豐田加速駛?cè)胱詣玉{駛隊列
        基于PCI總線的多處理器協(xié)同機(jī)制研究
        QNX下PEX8311多路實時數(shù)據(jù)采集的驅(qū)動設(shè)計
        電子世界(2014年21期)2014-04-29 06:41:36
        日本久久久免费观看视频| 日日摸天天碰中文字幕你懂的| 国产白嫩护士被弄高潮| 中文字幕在线观看亚洲日韩| 一本大道香蕉视频在线观看| 中文字幕乱码亚洲无线| 人妻夜夜爽天天爽三区麻豆av| 国产国产人免费人成免费视频| 99精品国产一区二区三区a片| 日日人人爽人人爽人人片av| 中文字幕亚洲精品第一页| 日本高清成人一区二区三区| 亚洲乱码一区二区三区在线观看| 野外少妇愉情中文字幕| 伊人久久一区二区三区无码| 日本女优中文字幕有码| 女人无遮挡裸交性做爰| av无码久久久久不卡网站下载| 在线观看91精品国产免费免费| 青青草综合在线观看视频| 麻豆av一区二区天堂| 色综合悠悠88久久久亚洲| 亚洲成av人片乱码色午夜| 国产成人av一区二区三区 | 波多野结衣不打码视频| 人人妻人人爽人人做夜欢视频九色| 2021最新久久久视精品爱| 日本成人午夜一区二区三区| 久久久久久久波多野结衣高潮| 国模少妇一区二区三区| 日本a在线天堂| 一本色道久久亚洲精品| 性xxxx18免费观看视频| 国产午夜福利精品| 亚洲国产精品一区二区第一| 国产亚洲av综合人人澡精品| 亚洲国产成人久久三区| 亚洲人成电影在线无码| 亚洲天堂av中文字幕| 刺激一区仑乱| 色妺妺视频网|