史志敏 溫潔 李砥擎
(中國空間技術研究院,北京 100094)
國外宇航企業(yè)在航天器自動化測試領域起步早,技術基礎雄厚,經(jīng)驗豐富,已自成體系,并具有相當?shù)囊?guī)模。自動化測試已完全應用到衛(wèi)星整星及分系統(tǒng)的測試過程中,并對衛(wèi)星研制起到了強有力的檢驗和驗證作用。我國由于起步較晚,整星自動化測試技術還處于發(fā)展階段。經(jīng)過多年的努力,在借鑒國外先進技術的基礎上,研制了以總控測試設備(OCOE)為中心的分布式體系結構衛(wèi)星綜合測試系統(tǒng),逐步形成了通用的衛(wèi)星綜合測試系統(tǒng)[1-3]。目前,衛(wèi)星綜合測試朝著自動化方向發(fā)展,并在某些衛(wèi)星平臺的測試中得以應用;通用的自動化測試系統(tǒng)和具備推理能力的衛(wèi)星測試系統(tǒng),已逐漸得到應用[4-9]。
目前,衛(wèi)星綜合測試系統(tǒng)中的總控測試設備面臨的一個最重要問題,是保證系統(tǒng)長時間、穩(wěn)定可靠的運行,特別是在長達1個月的熱試驗期間,需要總控設備一直保持運行狀態(tài)。然而,目前總控測試設備中采用的總控主測試處理機(MTP)服務器,是基于早期的衛(wèi)星平臺設計的,存在著不完善之處,如對測試序列管理及測試操作控制臺(TCC)管理等方面存在缺陷。因此,為滿足長時間衛(wèi)星綜合測試的可靠性要求,本文針對總控MTP 服務器中測試操作控制臺管理上的技術問題,提出在UNIX 操作系統(tǒng)多進程環(huán)境中,利用守護進程收集已終止子進程信息,釋放這些進程占用的系統(tǒng)資源,以解決系統(tǒng)資源有效利用問題,優(yōu)化MTP 服務器對測試操作控制臺管理上的設計,提高系統(tǒng)資源的利用率,從而增強MTP的可靠性和穩(wěn)定性,可為MTP進程管理技術改進提供借鑒。
衛(wèi)星綜合測試系統(tǒng)由總控測試設備、專用測試設備(SCOE)、遙測前端測試設備、遙控前端測試設備、數(shù)據(jù)庫服務器及其他設備組成,這些設備通過局域網(wǎng)(LAN)連接起來,如圖1所示??偪販y試設備是衛(wèi)星綜合測試系統(tǒng)的中心,它主要包括MTP、數(shù)據(jù)訂閱服務器(RTS)、數(shù)據(jù)監(jiān)視軟件、數(shù)據(jù)入庫服務器(DSS)和測試操作控制臺,各測試設備間通信遵循綜合測試設備間通信協(xié)議。MTP軟件是整個總控軟件系統(tǒng)的核心[3],實現(xiàn)測試數(shù)據(jù)處理、遙控指令發(fā)送、測試數(shù)據(jù)測試過程記錄回放等功能,負責對整個衛(wèi)星綜合測試系統(tǒng)的監(jiān)控和管理,其他軟件在MTP的統(tǒng)一控制下協(xié)調(diào)工作,以完成測試任務,并由數(shù)據(jù)入庫服務器將測試結果存儲至數(shù)據(jù)庫中。專用測試設備軟件可以通過MTP發(fā)送測試指令,并從數(shù)據(jù)訂閱服務器獲取測試結果。測試控制臺軟件是MTP軟件的客戶端,它能夠與MTP通信,為測試人員提供可視化操作界面,以對MTP軟件進行控制,同時,實現(xiàn)對MTP設置、測試設備的管理,測試指令和測試序列的發(fā)送,測試項目的自動實施,測試信息的顯示等功能,實現(xiàn)整星的自動化測試。MTP中采用專門的測試操作控制臺管理進程,實現(xiàn)對測試操作控制臺的管理。
圖1 衛(wèi)星綜合測試系統(tǒng)Fig.1 Satellite integration test system
UNIX 是一個支持多用戶、多進程的操作系統(tǒng)。在UNIX 環(huán)境中,一個現(xiàn)存的進程通常采用fork函數(shù)來創(chuàng)建一個新進程,該新進程被稱為子進程,而創(chuàng)建者進程稱為父進程。子進程是父進程的副本,并共享父進程的正文區(qū)。當系統(tǒng)中已經(jīng)存在了太多的進程,或者用戶的進程總數(shù)超出了系統(tǒng)限制時,fork將會失?。?0]。UNIX 中的進程邏輯關系,如圖2所示。
子進程終止后,如果父進程尚在運行中,需要父進程對其進行善后處理(獲取終止子進程的有關信息、釋放它仍占用的資源),否則子進程將一直作為僵死進程存在,直至父進程終止。如果父進程先于子進程終止,將由系統(tǒng)內(nèi)核接管這些子進程,釋放終止子進程使用的所有存儲器,關閉所有打開文件,并使進程標志符可以重新被利用。因此,如果編寫一個長期運行的程序,它調(diào)用fork函數(shù)產(chǎn)生了很多子進程,那么,除非父進程等待取得子進程的終止狀態(tài),否則這些子進程就會變成僵死進程。
在UNIX 環(huán)境下開發(fā)的基于多進程的測試控制臺管理中,由于缺乏對終止進程的管理操作,使大量僵死進程產(chǎn)生,當用戶進程總數(shù)超出系統(tǒng)限制時,MTP就無法接受新的用戶連接。
圖2 UNIX 中的進程邏輯關系Fig.2 Process logic relationship in UNIX
MTP是一個復雜的系統(tǒng),集計算機通信、實時控制,以及實時數(shù)據(jù)處理、分析、回放等功能于一體。其軟件是總控系統(tǒng)控制、管理的核心,基于UNIX操作系統(tǒng)開發(fā),采用服務器/客戶機架構。該軟件采用多進程并行處理方式,即各種管理功能均以采用管理進程的形式實現(xiàn)。MTP 中測試控制臺管理進程,實現(xiàn)對測試控制臺軟件的管理和通信,包括管理與測試操作控制臺的數(shù)據(jù)鏈路,接收測試操作控制臺送來的經(jīng)過語法檢查的控制命令,將控制命令送往控制命令分析進程,將各進程送來的、需顯示的信息發(fā)送給測試操作控制臺。測試控制臺管理進程可以管理多個測試操作控制臺,負責測試操作控制臺信息在網(wǎng)上的廣播,可在測試操作控制臺上進行人機交互,可以控制或參與測試過程,可在測試操作控制臺上顯示測試狀態(tài),監(jiān)視參數(shù)狀態(tài)變化、測試序列的執(zhí)行情況,以及控制命令、遙控指令的執(zhí)行情況、狀態(tài)變化及有關操作的信息。
MTP控制臺管理進程在實現(xiàn)對多個測試控制臺軟件管理時,采用了網(wǎng)絡服務進程中常見的處理形式,即控制臺管理父進程作為守護進程,等待測試操作控制臺軟件的服務請求。當測試操作控制臺服務請求到達時,守護進程調(diào)用fork函數(shù),產(chǎn)生一個服務子進程,并由該子進程處理服務請求。守護進程則繼續(xù)等待下一個服務請求。
多個衛(wèi)星測試任務的驗證表明,MTP控制臺管理進程中采用基于守護進程的多進程控制臺管理技術,是對測試操作控制臺進行成功管理的基礎。然而,由于MTP軟件中采用了多進程開發(fā)的默認形式,即沒有對僵死進程進行控制。這種模式的影響在短期測試任務中及對少量的測試控制臺管理中表現(xiàn)不明顯。但是,隨著測試任務長時間持續(xù)進行,以及多個測試控制臺的登錄和退出,會產(chǎn)生大量僵死進程。由于UNIX 系統(tǒng)中對進程數(shù)進行了限制,僵死進程占用的大量系統(tǒng)資源無法獲得釋放,因此,這種模式會導致MTP無法處理新的測試控制臺連接請求。為解決在測試過程中MTP軟件發(fā)生僵死進程問題,本文提出的在UNIX 環(huán)境下通過應用進程控制技術,實現(xiàn)守護進程對服務進程狀態(tài)的管理,能及時收集終止進程占用的系統(tǒng)資源,避免僵死進程出現(xiàn),實現(xiàn)MTP軟件控制臺管理技術的改進。
大量衛(wèi)星測試任務對MTP服務器提出了長時間穩(wěn)定運行的要求,本文在基于多進程控制臺管理技術的基礎上,增加對已終止進程的管理,利用進程控制技術,實現(xiàn)MTP測試控制臺管理技術的改進,具體改進方法如圖3所示。
圖3 控制臺管理中的進程控制Fig.3 Process control in managing test conductor console
MTP軟件控制臺管理進程作為守護進程,當有新的測試操作控制臺客戶端連接請求到達時,守護進程首先對連接請求客戶端進行登錄驗證,驗證通過后進行校時,然后再通過系統(tǒng)調(diào)用fork函數(shù)產(chǎn)生一個子進程作為服務進程,負責管理和測試操作控制臺客戶端的業(yè)務邏輯。而守護進程則繼續(xù)等待下一個連接請求。在服務進程中,總可以感知到測試操作控制臺客戶端的連接斷開,因此,在服務進程中增加測試操作控制臺客戶端連接斷開后的通信異常終止處理邏輯,即當服務進程不能和測試操作控制臺客戶端通信時,便收集登錄測試操作控制臺客戶端用戶信息,然后終止該服務進程。同時,在守護進程中增加進程控制邏輯,以實現(xiàn)對已終止子進程狀態(tài)的收集。這樣,當服務進程終止后,由內(nèi)核通知父進程進行子進程狀態(tài)收集,從而使僵死進程占用的系統(tǒng)資源被釋放出來。
由于UNIX系統(tǒng)中對系統(tǒng)進程數(shù)及用戶進程數(shù)均進行了限制,這里的進程數(shù)是指可維護的進程標志符數(shù),包括處于各種狀態(tài)的進程。在用戶進程數(shù)一定的條件下,MTP軟件同時可管理的測試操作控制臺客戶端數(shù)也將是受限制的,即MTP服務器中服務進程數(shù)量也是固定的,因此,如果MTP中存在大量處于僵死狀態(tài)的進程,守護進程將不能生成新的服務進程,即新的客戶端連接請求不能被MTP控制臺管理進程處理。在衛(wèi)星綜合測試任務進行中,特別是在長期的測試過程中,測試人員不可避免地會使用各種測試操作控制臺客戶端進行連接-斷開-再連接MTP的操作。采用上述改進的控制臺管理技術,在一個測試操作控制臺客戶端斷開與MTP的連接后,由守護進程及時對已終止的服務進程進行狀態(tài)收集,將已終止服務進程占有的系統(tǒng)資源釋放出來,以供新的測試操作控制臺客戶端服務進程使用,從而有效地解決了MTP控制臺管理問題。
本文針對MTP服務器測試操作控制臺管理中存在的僵死進程過多,影響MTP 為綜合測試提供長期穩(wěn)定服務的問題,在基于多進程的控制臺管理技術基礎上,提出了利用UNIX 環(huán)境下的進程控制技術,采用守護進程動態(tài)收集已終止服務進程信息的方法,實現(xiàn)對僵死進程的管理,使僵死進程所占用的資源及時獲得釋放,以供后續(xù)的測試操作控制臺客戶端使用。該方法解決了多進程條件下MTP服務器控制臺管理問題,提高了系統(tǒng)資源的利用率,增強了MTP的可靠性和穩(wěn)定性,為長期的整星測試提供了技術基礎。在后續(xù)的MTP 優(yōu)化工作中,參考本文提出的控制臺管理改進技術,可對MTP 測試序列管理進程進行改進。
(References)
[1]王慶成,艾曉然.一種通用的衛(wèi)星綜合測試系統(tǒng)研究[C]//中國宇航學會飛行器總體專業(yè)委員會2004年學術研討會論文集.北京:中國宇航學會,2005:1022-1033
Wang Qingcheng,Ai Xiaoran.Research for a kind of universal satellite synthesis test system[C]//Proceedings of the 2004Symposium of Spacecraft System Engineering Committee,Chinese Society of Astronautics.Beijing:Chinese Society of Astronautics,2005:1022-1033(in Chinese)
[2]艾曉然,王慶成.衛(wèi)星綜合測試通用系統(tǒng)研究[C]//第十四屆全國測試與故障診斷技術研討會論文集.北京:中國計算機學會,2005:54-60
Ai Xiaoran,Wang Qingcheng.Research for universal satellite synthesis test system[C]//Proceedings of the 14th Symposium of China Testing&Malfunction Diagnosis Technology.Beijing:China Computer Academic Society,2005:54-60(in Chinese)
[3]畢于蓮,孟曉風,王國華.衛(wèi)星地面測試通用MTP軟件設計與實現(xiàn)[J].中國測試技術,2008,34(1):70-73
Bi Yulian,Meng Xiaofeng,Wang Guohua.Design and implementation of general MTP software for satellite ground testing[J].China Measurement Technology,2008,34(1):70-73(in Chinese)
[4]袁媛,戴澗峰.環(huán)境減災-1A、1B 衛(wèi)星地面綜合測試總控系統(tǒng)[J].航天器工程,2009,18(6):118-124
Yuanyuan,Dai Jianfeng.Satellite synthesis test general control system of environment disaster decrease satellite-1A,1B[J].Spacecraft Engineering,2009,18(6):118-124(in Chinese)
[5]葛建云,王建軍.自動化測試系統(tǒng)在環(huán)境減災-1A、1B衛(wèi)星中的應用[J].航天器工程,2010,19(2):121-127
Ge Jianyun,Wang Jianjun.Application of auto test system in HJ-1A/1Bsatellites[J].Spacecraft Engineering,2010,19(2):121-127(in Chinese)
[6]王志勇.構建基于小衛(wèi)星的自動化綜合測試系統(tǒng)[D].西安:西安電子科技大學,2006
Wang Zhiyong.Constructing automatic test system for moonlet[D].Xi’an:Xidian University,2006(in Chinese)
[7]趙瑞峰,董房,陸洋,等.衛(wèi)星通用自動化測試系統(tǒng)體系結構研究[J].信息技術,2011,35(4):65-68
Zhao Ruifeng,Dong Fang,Lu Yang,et al.Research on architecture of general automatic test system for satellite[J].Information Technology,2011,35 (4):65-68(in Chinese)
[8]馮孝輝,王靜,楊海龍.基于知識推理的小衛(wèi)星綜合測試知識庫系統(tǒng)架構設計與應用[J].計算機測量與控制,2011,19(4):753-755
Feng Xiaohui,Wang jing,Yang Hailong.Design and application on case-based knowledgebase software for satellite integration testing[J].Computer Measurement&Control,2011,19(4):753-755(in Chinese)
[9]朱新波.衛(wèi)星綜合測試專家系統(tǒng)的開發(fā)[D].上海:復旦大學,2005
Zhu Xinbo.Realization of satellite synthesis test expert system[D].Shanghai:Fudan University,2005(in Chinese)
[10]W Richard Stevens Stephen A Rago.UNIX 環(huán)境高級編程[M].2版.尤晉元,張亞英,戚正偉,譯.北京:人民郵電出版社,2006:313-340
W Richard Stevens Stephen A Rago.Advances programming in the UNIX environment[M].You Jinyuan,Zhang Yaying,Qi Zhengwei,translated.2nd ed.Beijing:Posts&Telecom Press,2006:313-340(in Chinese)