史志敏 溫潔 李砥擎
(中國(guó)空間技術(shù)研究院,北京 100094)
國(guó)外宇航企業(yè)在航天器自動(dòng)化測(cè)試領(lǐng)域起步早,技術(shù)基礎(chǔ)雄厚,經(jīng)驗(yàn)豐富,已自成體系,并具有相當(dāng)?shù)囊?guī)模。自動(dòng)化測(cè)試已完全應(yīng)用到衛(wèi)星整星及分系統(tǒng)的測(cè)試過程中,并對(duì)衛(wèi)星研制起到了強(qiáng)有力的檢驗(yàn)和驗(yàn)證作用。我國(guó)由于起步較晚,整星自動(dòng)化測(cè)試技術(shù)還處于發(fā)展階段。經(jīng)過多年的努力,在借鑒國(guó)外先進(jìn)技術(shù)的基礎(chǔ)上,研制了以總控測(cè)試設(shè)備(OCOE)為中心的分布式體系結(jié)構(gòu)衛(wèi)星綜合測(cè)試系統(tǒng),逐步形成了通用的衛(wèi)星綜合測(cè)試系統(tǒng)[1-3]。目前,衛(wèi)星綜合測(cè)試朝著自動(dòng)化方向發(fā)展,并在某些衛(wèi)星平臺(tái)的測(cè)試中得以應(yīng)用;通用的自動(dòng)化測(cè)試系統(tǒng)和具備推理能力的衛(wèi)星測(cè)試系統(tǒng),已逐漸得到應(yīng)用[4-9]。
目前,衛(wèi)星綜合測(cè)試系統(tǒng)中的總控測(cè)試設(shè)備面臨的一個(gè)最重要問題,是保證系統(tǒng)長(zhǎng)時(shí)間、穩(wěn)定可靠的運(yùn)行,特別是在長(zhǎng)達(dá)1個(gè)月的熱試驗(yàn)期間,需要總控設(shè)備一直保持運(yùn)行狀態(tài)。然而,目前總控測(cè)試設(shè)備中采用的總控主測(cè)試處理機(jī)(MTP)服務(wù)器,是基于早期的衛(wèi)星平臺(tái)設(shè)計(jì)的,存在著不完善之處,如對(duì)測(cè)試序列管理及測(cè)試操作控制臺(tái)(TCC)管理等方面存在缺陷。因此,為滿足長(zhǎng)時(shí)間衛(wèi)星綜合測(cè)試的可靠性要求,本文針對(duì)總控MTP 服務(wù)器中測(cè)試操作控制臺(tái)管理上的技術(shù)問題,提出在UNIX 操作系統(tǒng)多進(jìn)程環(huán)境中,利用守護(hù)進(jìn)程收集已終止子進(jìn)程信息,釋放這些進(jìn)程占用的系統(tǒng)資源,以解決系統(tǒng)資源有效利用問題,優(yōu)化MTP 服務(wù)器對(duì)測(cè)試操作控制臺(tái)管理上的設(shè)計(jì),提高系統(tǒng)資源的利用率,從而增強(qiáng)MTP的可靠性和穩(wěn)定性,可為MTP進(jìn)程管理技術(shù)改進(jìn)提供借鑒。
衛(wèi)星綜合測(cè)試系統(tǒng)由總控測(cè)試設(shè)備、專用測(cè)試設(shè)備(SCOE)、遙測(cè)前端測(cè)試設(shè)備、遙控前端測(cè)試設(shè)備、數(shù)據(jù)庫服務(wù)器及其他設(shè)備組成,這些設(shè)備通過局域網(wǎng)(LAN)連接起來,如圖1所示。總控測(cè)試設(shè)備是衛(wèi)星綜合測(cè)試系統(tǒng)的中心,它主要包括MTP、數(shù)據(jù)訂閱服務(wù)器(RTS)、數(shù)據(jù)監(jiān)視軟件、數(shù)據(jù)入庫服務(wù)器(DSS)和測(cè)試操作控制臺(tái),各測(cè)試設(shè)備間通信遵循綜合測(cè)試設(shè)備間通信協(xié)議。MTP軟件是整個(gè)總控軟件系統(tǒng)的核心[3],實(shí)現(xiàn)測(cè)試數(shù)據(jù)處理、遙控指令發(fā)送、測(cè)試數(shù)據(jù)測(cè)試過程記錄回放等功能,負(fù)責(zé)對(duì)整個(gè)衛(wèi)星綜合測(cè)試系統(tǒng)的監(jiān)控和管理,其他軟件在MTP的統(tǒng)一控制下協(xié)調(diào)工作,以完成測(cè)試任務(wù),并由數(shù)據(jù)入庫服務(wù)器將測(cè)試結(jié)果存儲(chǔ)至數(shù)據(jù)庫中。專用測(cè)試設(shè)備軟件可以通過MTP發(fā)送測(cè)試指令,并從數(shù)據(jù)訂閱服務(wù)器獲取測(cè)試結(jié)果。測(cè)試控制臺(tái)軟件是MTP軟件的客戶端,它能夠與MTP通信,為測(cè)試人員提供可視化操作界面,以對(duì)MTP軟件進(jìn)行控制,同時(shí),實(shí)現(xiàn)對(duì)MTP設(shè)置、測(cè)試設(shè)備的管理,測(cè)試指令和測(cè)試序列的發(fā)送,測(cè)試項(xiàng)目的自動(dòng)實(shí)施,測(cè)試信息的顯示等功能,實(shí)現(xiàn)整星的自動(dòng)化測(cè)試。MTP中采用專門的測(cè)試操作控制臺(tái)管理進(jìn)程,實(shí)現(xiàn)對(duì)測(cè)試操作控制臺(tái)的管理。
圖1 衛(wèi)星綜合測(cè)試系統(tǒng)Fig.1 Satellite integration test system
UNIX 是一個(gè)支持多用戶、多進(jìn)程的操作系統(tǒng)。在UNIX 環(huán)境中,一個(gè)現(xiàn)存的進(jìn)程通常采用fork函數(shù)來創(chuàng)建一個(gè)新進(jìn)程,該新進(jìn)程被稱為子進(jìn)程,而創(chuàng)建者進(jìn)程稱為父進(jìn)程。子進(jìn)程是父進(jìn)程的副本,并共享父進(jìn)程的正文區(qū)。當(dāng)系統(tǒng)中已經(jīng)存在了太多的進(jìn)程,或者用戶的進(jìn)程總數(shù)超出了系統(tǒng)限制時(shí),fork將會(huì)失?。?0]。UNIX 中的進(jìn)程邏輯關(guān)系,如圖2所示。
子進(jìn)程終止后,如果父進(jìn)程尚在運(yùn)行中,需要父進(jìn)程對(duì)其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息、釋放它仍占用的資源),否則子進(jìn)程將一直作為僵死進(jìn)程存在,直至父進(jìn)程終止。如果父進(jìn)程先于子進(jìn)程終止,將由系統(tǒng)內(nèi)核接管這些子進(jìn)程,釋放終止子進(jìn)程使用的所有存儲(chǔ)器,關(guān)閉所有打開文件,并使進(jìn)程標(biāo)志符可以重新被利用。因此,如果編寫一個(gè)長(zhǎng)期運(yùn)行的程序,它調(diào)用fork函數(shù)產(chǎn)生了很多子進(jìn)程,那么,除非父進(jìn)程等待取得子進(jìn)程的終止?fàn)顟B(tài),否則這些子進(jìn)程就會(huì)變成僵死進(jìn)程。
在UNIX 環(huán)境下開發(fā)的基于多進(jìn)程的測(cè)試控制臺(tái)管理中,由于缺乏對(duì)終止進(jìn)程的管理操作,使大量僵死進(jìn)程產(chǎn)生,當(dāng)用戶進(jìn)程總數(shù)超出系統(tǒng)限制時(shí),MTP就無法接受新的用戶連接。
圖2 UNIX 中的進(jìn)程邏輯關(guān)系Fig.2 Process logic relationship in UNIX
MTP是一個(gè)復(fù)雜的系統(tǒng),集計(jì)算機(jī)通信、實(shí)時(shí)控制,以及實(shí)時(shí)數(shù)據(jù)處理、分析、回放等功能于一體。其軟件是總控系統(tǒng)控制、管理的核心,基于UNIX操作系統(tǒng)開發(fā),采用服務(wù)器/客戶機(jī)架構(gòu)。該軟件采用多進(jìn)程并行處理方式,即各種管理功能均以采用管理進(jìn)程的形式實(shí)現(xiàn)。MTP 中測(cè)試控制臺(tái)管理進(jìn)程,實(shí)現(xiàn)對(duì)測(cè)試控制臺(tái)軟件的管理和通信,包括管理與測(cè)試操作控制臺(tái)的數(shù)據(jù)鏈路,接收測(cè)試操作控制臺(tái)送來的經(jīng)過語法檢查的控制命令,將控制命令送往控制命令分析進(jìn)程,將各進(jìn)程送來的、需顯示的信息發(fā)送給測(cè)試操作控制臺(tái)。測(cè)試控制臺(tái)管理進(jìn)程可以管理多個(gè)測(cè)試操作控制臺(tái),負(fù)責(zé)測(cè)試操作控制臺(tái)信息在網(wǎng)上的廣播,可在測(cè)試操作控制臺(tái)上進(jìn)行人機(jī)交互,可以控制或參與測(cè)試過程,可在測(cè)試操作控制臺(tái)上顯示測(cè)試狀態(tài),監(jiān)視參數(shù)狀態(tài)變化、測(cè)試序列的執(zhí)行情況,以及控制命令、遙控指令的執(zhí)行情況、狀態(tài)變化及有關(guān)操作的信息。
MTP控制臺(tái)管理進(jìn)程在實(shí)現(xiàn)對(duì)多個(gè)測(cè)試控制臺(tái)軟件管理時(shí),采用了網(wǎng)絡(luò)服務(wù)進(jìn)程中常見的處理形式,即控制臺(tái)管理父進(jìn)程作為守護(hù)進(jìn)程,等待測(cè)試操作控制臺(tái)軟件的服務(wù)請(qǐng)求。當(dāng)測(cè)試操作控制臺(tái)服務(wù)請(qǐng)求到達(dá)時(shí),守護(hù)進(jìn)程調(diào)用fork函數(shù),產(chǎn)生一個(gè)服務(wù)子進(jìn)程,并由該子進(jìn)程處理服務(wù)請(qǐng)求。守護(hù)進(jìn)程則繼續(xù)等待下一個(gè)服務(wù)請(qǐng)求。
多個(gè)衛(wèi)星測(cè)試任務(wù)的驗(yàn)證表明,MTP控制臺(tái)管理進(jìn)程中采用基于守護(hù)進(jìn)程的多進(jìn)程控制臺(tái)管理技術(shù),是對(duì)測(cè)試操作控制臺(tái)進(jìn)行成功管理的基礎(chǔ)。然而,由于MTP軟件中采用了多進(jìn)程開發(fā)的默認(rèn)形式,即沒有對(duì)僵死進(jìn)程進(jìn)行控制。這種模式的影響在短期測(cè)試任務(wù)中及對(duì)少量的測(cè)試控制臺(tái)管理中表現(xiàn)不明顯。但是,隨著測(cè)試任務(wù)長(zhǎng)時(shí)間持續(xù)進(jìn)行,以及多個(gè)測(cè)試控制臺(tái)的登錄和退出,會(huì)產(chǎn)生大量僵死進(jìn)程。由于UNIX 系統(tǒng)中對(duì)進(jìn)程數(shù)進(jìn)行了限制,僵死進(jìn)程占用的大量系統(tǒng)資源無法獲得釋放,因此,這種模式會(huì)導(dǎo)致MTP無法處理新的測(cè)試控制臺(tái)連接請(qǐng)求。為解決在測(cè)試過程中MTP軟件發(fā)生僵死進(jìn)程問題,本文提出的在UNIX 環(huán)境下通過應(yīng)用進(jìn)程控制技術(shù),實(shí)現(xiàn)守護(hù)進(jìn)程對(duì)服務(wù)進(jìn)程狀態(tài)的管理,能及時(shí)收集終止進(jìn)程占用的系統(tǒng)資源,避免僵死進(jìn)程出現(xiàn),實(shí)現(xiàn)MTP軟件控制臺(tái)管理技術(shù)的改進(jìn)。
大量衛(wèi)星測(cè)試任務(wù)對(duì)MTP服務(wù)器提出了長(zhǎng)時(shí)間穩(wěn)定運(yùn)行的要求,本文在基于多進(jìn)程控制臺(tái)管理技術(shù)的基礎(chǔ)上,增加對(duì)已終止進(jìn)程的管理,利用進(jìn)程控制技術(shù),實(shí)現(xiàn)MTP測(cè)試控制臺(tái)管理技術(shù)的改進(jìn),具體改進(jìn)方法如圖3所示。
圖3 控制臺(tái)管理中的進(jìn)程控制Fig.3 Process control in managing test conductor console
MTP軟件控制臺(tái)管理進(jìn)程作為守護(hù)進(jìn)程,當(dāng)有新的測(cè)試操作控制臺(tái)客戶端連接請(qǐng)求到達(dá)時(shí),守護(hù)進(jìn)程首先對(duì)連接請(qǐng)求客戶端進(jìn)行登錄驗(yàn)證,驗(yàn)證通過后進(jìn)行校時(shí),然后再通過系統(tǒng)調(diào)用fork函數(shù)產(chǎn)生一個(gè)子進(jìn)程作為服務(wù)進(jìn)程,負(fù)責(zé)管理和測(cè)試操作控制臺(tái)客戶端的業(yè)務(wù)邏輯。而守護(hù)進(jìn)程則繼續(xù)等待下一個(gè)連接請(qǐng)求。在服務(wù)進(jìn)程中,總可以感知到測(cè)試操作控制臺(tái)客戶端的連接斷開,因此,在服務(wù)進(jìn)程中增加測(cè)試操作控制臺(tái)客戶端連接斷開后的通信異常終止處理邏輯,即當(dāng)服務(wù)進(jìn)程不能和測(cè)試操作控制臺(tái)客戶端通信時(shí),便收集登錄測(cè)試操作控制臺(tái)客戶端用戶信息,然后終止該服務(wù)進(jìn)程。同時(shí),在守護(hù)進(jìn)程中增加進(jìn)程控制邏輯,以實(shí)現(xiàn)對(duì)已終止子進(jìn)程狀態(tài)的收集。這樣,當(dāng)服務(wù)進(jìn)程終止后,由內(nèi)核通知父進(jìn)程進(jìn)行子進(jìn)程狀態(tài)收集,從而使僵死進(jìn)程占用的系統(tǒng)資源被釋放出來。
由于UNIX系統(tǒng)中對(duì)系統(tǒng)進(jìn)程數(shù)及用戶進(jìn)程數(shù)均進(jìn)行了限制,這里的進(jìn)程數(shù)是指可維護(hù)的進(jìn)程標(biāo)志符數(shù),包括處于各種狀態(tài)的進(jìn)程。在用戶進(jìn)程數(shù)一定的條件下,MTP軟件同時(shí)可管理的測(cè)試操作控制臺(tái)客戶端數(shù)也將是受限制的,即MTP服務(wù)器中服務(wù)進(jìn)程數(shù)量也是固定的,因此,如果MTP中存在大量處于僵死狀態(tài)的進(jìn)程,守護(hù)進(jìn)程將不能生成新的服務(wù)進(jìn)程,即新的客戶端連接請(qǐng)求不能被MTP控制臺(tái)管理進(jìn)程處理。在衛(wèi)星綜合測(cè)試任務(wù)進(jìn)行中,特別是在長(zhǎng)期的測(cè)試過程中,測(cè)試人員不可避免地會(huì)使用各種測(cè)試操作控制臺(tái)客戶端進(jìn)行連接-斷開-再連接MTP的操作。采用上述改進(jìn)的控制臺(tái)管理技術(shù),在一個(gè)測(cè)試操作控制臺(tái)客戶端斷開與MTP的連接后,由守護(hù)進(jìn)程及時(shí)對(duì)已終止的服務(wù)進(jìn)程進(jìn)行狀態(tài)收集,將已終止服務(wù)進(jìn)程占有的系統(tǒng)資源釋放出來,以供新的測(cè)試操作控制臺(tái)客戶端服務(wù)進(jìn)程使用,從而有效地解決了MTP控制臺(tái)管理問題。
本文針對(duì)MTP服務(wù)器測(cè)試操作控制臺(tái)管理中存在的僵死進(jìn)程過多,影響MTP 為綜合測(cè)試提供長(zhǎng)期穩(wěn)定服務(wù)的問題,在基于多進(jìn)程的控制臺(tái)管理技術(shù)基礎(chǔ)上,提出了利用UNIX 環(huán)境下的進(jìn)程控制技術(shù),采用守護(hù)進(jìn)程動(dòng)態(tài)收集已終止服務(wù)進(jìn)程信息的方法,實(shí)現(xiàn)對(duì)僵死進(jìn)程的管理,使僵死進(jìn)程所占用的資源及時(shí)獲得釋放,以供后續(xù)的測(cè)試操作控制臺(tái)客戶端使用。該方法解決了多進(jìn)程條件下MTP服務(wù)器控制臺(tái)管理問題,提高了系統(tǒng)資源的利用率,增強(qiáng)了MTP的可靠性和穩(wěn)定性,為長(zhǎng)期的整星測(cè)試提供了技術(shù)基礎(chǔ)。在后續(xù)的MTP 優(yōu)化工作中,參考本文提出的控制臺(tái)管理改進(jìn)技術(shù),可對(duì)MTP 測(cè)試序列管理進(jìn)程進(jìn)行改進(jìn)。
(References)
[1]王慶成,艾曉然.一種通用的衛(wèi)星綜合測(cè)試系統(tǒng)研究[C]//中國(guó)宇航學(xué)會(huì)飛行器總體專業(yè)委員會(huì)2004年學(xué)術(shù)研討會(huì)論文集.北京:中國(guó)宇航學(xué)會(huì),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)星綜合測(cè)試通用系統(tǒng)研究[C]//第十四屆全國(guó)測(cè)試與故障診斷技術(shù)研討會(huì)論文集.北京:中國(guó)計(jì)算機(jī)學(xué)會(huì),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]畢于蓮,孟曉風(fēng),王國(guó)華.衛(wèi)星地面測(cè)試通用MTP軟件設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)測(cè)試技術(shù),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)境減災(zāi)-1A、1B 衛(wèi)星地面綜合測(cè)試總控系統(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]葛建云,王建軍.自動(dòng)化測(cè)試系統(tǒng)在環(huán)境減災(zāi)-1A、1B衛(wèi)星中的應(yīng)用[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]王志勇.構(gòu)建基于小衛(wèi)星的自動(dòng)化綜合測(cè)試系統(tǒng)[D].西安:西安電子科技大學(xué),2006
Wang Zhiyong.Constructing automatic test system for moonlet[D].Xi’an:Xidian University,2006(in Chinese)
[7]趙瑞峰,董房,陸洋,等.衛(wèi)星通用自動(dòng)化測(cè)試系統(tǒng)體系結(jié)構(gòu)研究[J].信息技術(shù),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]馮孝輝,王靜,楊海龍.基于知識(shí)推理的小衛(wèi)星綜合測(cè)試知識(shí)庫系統(tǒng)架構(gòu)設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)測(cè)量與控制,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)星綜合測(cè)試專家系統(tǒng)的開發(fā)[D].上海:復(fù)旦大學(xué),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)境高級(jí)編程[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)