覃楊森,劉成玉,祁 春,霍朝暉
(中國飛行試驗研究院 陜西 西安 710089)
飛行試驗過程中關鍵試驗參數與日劇增,從而導致了試飛數據量也隨之增大,數據的處理過程愈趨復雜[1]。由于試驗數據是充分了解飛行過程的主要途徑,因而保持數據完整性的重要意義也愈現突出,極有可能因某些飛行試驗科目的分析及講評需要,會使用到之前一年甚至更早期的試飛數據,用以幫助重現飛機的特性及安全健康狀況變化分析[2-3]。正因此,需要在飛行事后完成大數據量的備份存儲工作。單靠人工操作,逐型號逐架次完成數據的備份難免會引入誤操作,有可能使得某些重要數據出現誤存、漏存和復存的現象。而如果可以利用操作系統自帶的文件管理功能,完成數據的自主備份,將節省下大量的人工操作時間,而且還可以防止人為因素而引起的錯誤,以保證飛行試驗備份數據的準確性、及時性及完整性。目前所利用的飛行數據備份工具,大部分都是脫離系統內核腳本運行而設計開發,難以避免會存在因備份進程長時占用操作系統資源和網絡帶寬造成的網絡中斷或網絡阻塞現象。當備份數據量過大時,便很容易導致系統或網絡崩潰,從而保證不了數據的完整性。而基于windows內核的 Windows Resource Kit tools(WRK)工具的出現,為備份工具實現提供了很好的兼容性平臺,并且省去了實現過程中對線程調度及網絡進程的管理,大大簡化了工具的復雜度,也增加了工具的實用性和用戶友好性。
內核腳本最常用于系統管理工作,或是用于結合現有程序用以完成小型的、特定的工作,可以把用到的命令串在一起,放進一個獨立的程序或腳本里,此后只要直接執行該程序便能完成工作。內核腳屬于解釋型語言,由解釋器(interpreter)讀入程序代碼,并將其轉換成內部的形式,再執行[4]。這樣一來,便克服了所處理的是字節、整數、浮點數或是其他機器層級的對象這一缺點,使得類似“將一個目錄里所有的文件復制到另一個目錄中”之類的操作簡單化。
Windows Resource Kit tools(WRK)是一組為管理員、開發者和高級用戶設計的內核組件工具,包括管理活動目錄、組策略、TCP/IP網絡、注冊表、系統安全、監測等涉及Windows Server 2003操作系統的其他很多方面非常規安裝的內核腳本工具組。在WRK的腳本命令中,支持了更多重要的文件復制任務,從而能夠真正簡化了工作,支持創建兩個文件結構的完全鏡像副本而不復制任何不需要的文件,也支持只復制源位置中的新文件或更新后的文件。例如,Robocopy還允許用戶選擇是否保留所有相關文件信息,包括日期和時間戳、安全訪問控制列表(ACL)及更多內容。
自主備份工具的配置管理、任務腳本生成及日志記錄功能主要基于C++builder開發環境實現,腳本命令的運行及線程調度管理由操作系統內核運行實現,其框架如圖1所示。配置管理通過用戶操作控制組件激活配置組件。配置組件在獲得用戶配置操作之后,在系統的內核文件目錄下生成相應的配置文件和任務計劃文件。當自主備份工具判斷到用戶已經完成配置之后,將配置文件和任務計劃文件進行解析,轉換成windows內核命令腳本,并在用戶的激活操作下啟動運行。內核命令腳本由系統自身的命令解析器分解,在操作系統環境下完成相應的網絡管理及進程調用,利用文件管理子系統完成文件的備份任務,同時將計劃任務寫入系統自身的任務計劃組件中,實現定時備份的功能。

圖1 工具架構圖Fig.1 Tool architecture
為了標準化XML配置文件,結合工具的配置項,需要先定義與腳本模塊對應的 DTD (Document Type Definition)文檔,用于規范存儲各項配置操作及計劃任務,具體定義如下所示:


用戶操作控制組件主要基于C++builder6.0[5]開發環境完成。在用戶操作控制組件設計中,使用了suiskin3.4界面插件,提高了用戶操作界面的美觀性,由于界面插件與開發環境的密切兼容性,使得工具獲得了與windows風格更為兼容的運行效果,操作界面如圖2所示。操作控制組件完成了數據備份的源路徑選擇及目的路徑選擇,用戶可通過“配置”按鈕激活配置界面對話框。

圖2 工具操作界面Fig.2 Operator interface
為了避免誤操作,采用了操作狀態相關性互斥設計[6],以增強工具與用戶的友好性,其邏輯關系如表1所示。

表1 狀態遷移表Tab.1 State transition table
通過操作控制組件的“配置按鈕”,用戶可以激活配置組件,完成備份工具的配置操作,其與用戶交互界面如圖3所示。
通過完成對“文件類型”、“操作選項”及“運行計劃”的配置,形成相應的配置文件和計劃任務。配置文件形成過程如圖4所示,形成的配置文件如下所示。


圖3 配置組件交互界面Fig.3 Configuration components interface

圖4 配置文件形成流程Fig.4 Configuration files formation process


其中操作選項、DTD元素與腳本命令符部分對應關系如表2所示。

表2 對應關系Tab.2 Corresponding relationship
配置組件通過識別配置文件和計劃任務文件,生成后綴為.cmd的windows NT命令腳本。腳本形成過程如圖5所示,部分腳本代碼如圖6所示。

圖5 腳本形成流程Fig.5 Script formation process

圖6 部分腳本代碼Fig.6 Part of script code
在操作面板的“執行”按鈕激活之后,命令腳本開始運行,以啟動windows內核中的robocopy工具命令。Windows Resource Kit tools包含有robocopy命令解析器,將腳本命令項逐項解析,在內核腳本中調用對應的腳本執行體,例如網絡管理、進程線程管理及文件系統管理等,以實現對備份文件的操作。對于設計過程而言,由于系統對內核進行了封裝,就省去了文件操作和進程調用管理的代碼實現,也不需要考慮網絡傳輸過程中的協議編程。從另一個方面而言,由于現有windows操作系統由基于windows NT內核升級或者完善而來,因此,提高了工具在不同系統平臺下的兼容性。
日志文件記錄了備份工具運行的開始時間、源路徑及目的路徑,并包含了備份的文件列表及文件的屬性信息,例如大小、子路徑及類型等。對于比較大的文件,完整的記錄下了文件備份的百分比進度,利于監視備份工具的運行狀態。同時,支持了文件斷點續傳的功能,每次在備份運行之前,通過讀取日志記錄的百分比進程,判斷上一次文件備份的斷點,查找文件的簇頭,從而完成未結束的備份任務,確保了備份文件的完整性及一致性。如果在配置組件中選擇了“創建日志文件”選項,則內核腳本在任務執行文件備份過程中,可將備份進度完整記錄到相應的日志文件中。日志文件內容如圖7所示。

圖7 日志文件Fig.7 Log files
為了測試自主備份工具的性能特點,設計了如下實驗:從飛行數據服務器上將數據備份到同一主機上,同時使用手動操作、系統備份工具及自主備份工具將同一文件進行備份。實驗結果記錄如表3所示。

表3 性能實驗記錄Tab.3 Performance Test Record
基于windows內核腳本的自主備份工具為解決飛行試驗大數據量備份的難題提供了一種新的途徑。工具利用C++builder環境實現的操作控制組件和配置組件,完成了內核腳本命令和計劃任務的生成。工具在開發實現中充分結合操作系統內核管理機制,提高了運行的穩定性及平臺的兼容性,并可以將全程記錄生成日志文件,保證了飛行試驗數據備份的及時性、完整性和準確性,是提高試飛數據分析精準度的有效保障。
[1]霍朝暉,覃楊森,祈春.飛行試驗機載關鍵參數快速處理系統設計[J].現代電子技術,2012,36(5):121-124.
HUO Zhao-hui,QIN Yang-sen,QI Chun.Design of rapid processing system of flight test airborne key parameters[J].Modern Electronics Technique,2012,36(5):121-124.
[2]袁炳南,張建琳.PCM與網絡數據采集系統技術分析[J].測控技術,2009,28(4):29-31.
YUAN Bing-nan,ZHANG Jian-lin.Technical review of data acquisition systems based on PCM and network[J].Measurement&Control Technology,2009,28(4):29-31.
[3]袁炳南,霍朝暉,白效賢.航空飛行試驗遙測標準概況[J].測控技術,2010,29(11):15-19.
YUAN Bing-nan,HUO Zhao-hui,BAI Xiao-xian.The survey of telemetry standard in aviation flight test[J].Measurement&Control Technoloy,2010,29(11):15-19.
[4]潘愛民.Windows內核原理與實現[M].北京:電子工業出版社,2010.
[5]黃曉春.C++沉思錄[M].北京:人民郵電出版社,2002.
[6]姜靜波,佟金榮.編程精粹[M].北京:電子工業出版社,2009.
[7]劉濱.C++Builde高級編程實例精解[M].北京:國防工業出版社,2000.