竇維維,李 萌,馬忠剛,王曉偉,范麗辰
(北京廣利核系統(tǒng)工程有限公司,北京 100094)
我國正面臨百年未有之大變局,國際關(guān)系依舊復(fù)雜,個別國家對我國核心領(lǐng)域的供應(yīng)鏈進(jìn)行加碼限制,給國家安全帶來巨大的威脅。當(dāng)前,我國核電廠數(shù)字儀控系統(tǒng)使用的實(shí)時操作系統(tǒng)也被國外限制供應(yīng)。這嚴(yán)重束縛了我國核電的建設(shè)與發(fā)展[1]。隨著我國對于科技領(lǐng)域安全可控、自主可控重視程度的不斷提升,開發(fā)一款具有完全自主知識產(chǎn)權(quán)的、適用于我國核電廠的實(shí)時操作系統(tǒng)勢在必行。
實(shí)時操作系統(tǒng)屬于核電廠數(shù)字儀控系統(tǒng)的核心部分,要在規(guī)定的時間內(nèi)對控制系統(tǒng)作出快速響應(yīng)。其在核電廠數(shù)字化儀控系統(tǒng)中具有無可替代的重要性。為推動實(shí)現(xiàn)核電廠儀控系統(tǒng)中實(shí)時操作系統(tǒng)的完全自主可控,本文對適用于核電廠儀控系統(tǒng)的實(shí)時操作系統(tǒng)的軟件需求開展研究。核電儀控實(shí)時操作系統(tǒng)的軟件需求既要滿足通用實(shí)時操作系統(tǒng)的核心要求,又要滿足核電軟件相關(guān)法規(guī)的要求。
核電儀控實(shí)時操作系統(tǒng)需求的分析分別從經(jīng)典書籍分析、標(biāo)準(zhǔn)分析、應(yīng)用開發(fā)者調(diào)查分析、友商需求分析四個維度進(jìn)行。需求分析維度如圖1所示。
圖1 需求分析維度
經(jīng)典書籍分析選取了操作系統(tǒng)行業(yè)比較經(jīng)典的三本圖書進(jìn)行深入學(xué)習(xí),分別是《操作系統(tǒng)概念》《操作系統(tǒng)》和《深入理解UNIX系統(tǒng)內(nèi)核》。嵌入式操作系統(tǒng)誕生于20世紀(jì)70年代,位于硬件層與應(yīng)用軟件層之間,為應(yīng)用軟件層提供運(yùn)行平臺。
經(jīng)過對嵌入式操作系統(tǒng)領(lǐng)域內(nèi)核心知識的重點(diǎn)學(xué)習(xí)可知,嵌入式操作系統(tǒng)的功能模塊包含進(jìn)程管理、內(nèi)存管理、設(shè)備管理、文件管理和網(wǎng)絡(luò)管理。進(jìn)程管理模塊包含進(jìn)程調(diào)度、進(jìn)程通信與同步。內(nèi)存管理模塊有多種技術(shù)方案可供選擇,能夠確保系統(tǒng)的響應(yīng)時間,以及中央處理器(central processing unit,CPU)的使用率。設(shè)備管理模塊包含輸入/輸出(input/output,I/O)的管理[2-4]。文件管理和網(wǎng)絡(luò)管理則以組件的形式存在于嵌入式操作系統(tǒng)中。
核電儀控實(shí)時操作系統(tǒng)既要滿足核電軟件相關(guān)標(biāo)準(zhǔn),又要滿足操作系統(tǒng)相關(guān)標(biāo)準(zhǔn)。實(shí)時操作系統(tǒng)軟件在核電儀控系統(tǒng)中屬于較為復(fù)雜的軟件,在保守的核電系統(tǒng)內(nèi)用于執(zhí)行核安全級B類功能及C類功能。因為現(xiàn)階段研究目標(biāo)為用國內(nèi)產(chǎn)品替代執(zhí)行B類功能的國外操作系統(tǒng)產(chǎn)品,所以核電儀控實(shí)時操作系統(tǒng)確定為執(zhí)行核安全級B類功能的軟件。
核電儀控實(shí)時操作系統(tǒng)為執(zhí)行B類功能的軟件,對標(biāo)核電軟件標(biāo)準(zhǔn)《Nuclear power plants-Instrumentation and control systems important to safety-Software aspects for computer-based systems performing category B or C functions》(IEC 62138-2018),因此,核電標(biāo)準(zhǔn)主要針對IEC 62138-2018進(jìn)行分析。
國內(nèi)的操作系統(tǒng)相關(guān)標(biāo)準(zhǔn)有《軍用嵌入式操作系統(tǒng)技術(shù)要求》(GJB 7718—2012)、《軍用嵌入式實(shí)時操作系統(tǒng)應(yīng)用編程接口》(GJB 7714—2012)、《軍用嵌入式操作系統(tǒng)模塊裁剪配置要求》(GJB 7713—2012)。
1.2.1 核電軟件相關(guān)標(biāo)準(zhǔn)研究
IEC 62138-2018包含核電廠執(zhí)行B類或C類功能的基于計算機(jī)系統(tǒng)的軟件方面的相關(guān)要求。核電儀控實(shí)時操作系統(tǒng)屬于IEC 62138中劃定的自動化控制軟件中運(yùn)行系統(tǒng)軟件大類下的操作系統(tǒng)子類。
IEC 62138中自動化控制軟件如圖2所示[5]。
圖2 IEC 62138中自動化控制軟件圖
IEC 62138-2018的研究包含過程符合性分析和技術(shù)符合性分析。
(1)過程符合性分析。
在過程符合性分析中,IEC 62138-2018規(guī)定了軟件安全生命周期的開發(fā)活動。軟件安全生命周期開發(fā)活動如圖3所示。
圖3 軟件安全生命周期開發(fā)活動圖
軟件安全生命周期包括軟件需求、軟件設(shè)計、軟件實(shí)現(xiàn),之后再進(jìn)行獨(dú)立的系統(tǒng)集成與系統(tǒng)確認(rèn)。其中:系統(tǒng)集成針對軟件設(shè)計進(jìn)行測試;系統(tǒng)確認(rèn)針對軟件需求進(jìn)行測試。
核電儀控實(shí)時操作系統(tǒng)軟件的生命周期應(yīng)符合IEC 62138-2018中軟件安全生命周期要求,需包含軟件需求、軟件設(shè)計、軟件實(shí)現(xiàn)、系統(tǒng)集成、系統(tǒng)確認(rèn)這五個階段。同時,核電儀控實(shí)時操作系統(tǒng)軟件生命周期內(nèi)產(chǎn)生的文檔需全面覆蓋IEC 62138-2018中所列文檔清單。
(2)技術(shù)符合性分析。
在技術(shù)符合性分析中,因核電儀控實(shí)時操作系統(tǒng)屬于運(yùn)行系統(tǒng)軟件,故符合IEC 62138-2018標(biāo)準(zhǔn)的通用要求即可。具體要求如下。
①開發(fā)語言要求:操作系統(tǒng)軟件可執(zhí)行靜態(tài)分析,禁止為收集空閑內(nèi)存而隨機(jī)中斷操作系統(tǒng)的正常運(yùn)行。
②多余度和功能復(fù)雜性要求:減少不必要的功能,降低操作系統(tǒng)軟件的復(fù)雜性。但是不必要的功能可能是合理的,且有利于系統(tǒng)軟件的設(shè)計,應(yīng)確保該功能不會導(dǎo)致系統(tǒng)軟件過度復(fù)雜。
③可預(yù)測性要求:提前對操作系統(tǒng)內(nèi)關(guān)鍵安全元素進(jìn)行預(yù)測,主要是對最大響應(yīng)時間和最大資源使用情況進(jìn)行預(yù)測。
④故障失效要求:定義為一般故障、嚴(yán)重故障。操作系統(tǒng)運(yùn)行中的重要故障應(yīng)通知操作人員。
⑤健壯性要求:明確操作系統(tǒng)安全性評估限制條件,例如通信帶寬采用的裕量、檢測并發(fā)出故障信號、操作系統(tǒng)內(nèi)不同線程共享的資源不會因其中一個線程的故障對其他線程造成嚴(yán)重的影響。
1.2.2 操作系統(tǒng)相關(guān)標(biāo)準(zhǔn)研究
前文所述當(dāng)前國內(nèi)操作系統(tǒng)相關(guān)的標(biāo)準(zhǔn)均屬于中華人民共和國國家軍用標(biāo)準(zhǔn),由中國人民解放軍總裝備部組織起草,并于2013年1月1日實(shí)施。這些標(biāo)準(zhǔn)分別從技術(shù)層面、接口層面和裁剪配置層面提出要求。依據(jù)標(biāo)準(zhǔn)要求,嵌入式操作系統(tǒng)應(yīng)采用模塊化軟件架構(gòu),具備標(biāo)準(zhǔn)化、構(gòu)件化、能擴(kuò)展、可移植的特點(diǎn)。
GJB 7718—2012標(biāo)準(zhǔn)對操作系統(tǒng)的各功能模塊提出技術(shù)要求。技術(shù)要求又劃分為核心要求和擴(kuò)展要求。核電儀控實(shí)時操作系統(tǒng)針對GJB 7718—2012中的技術(shù)要求采用核心技術(shù)要求全覆蓋的原則。核電儀控實(shí)時操作系統(tǒng)軟件的功能需求采用模塊化架構(gòu),包含任務(wù)管理、任務(wù)同步與通信、異常/中斷管理、時鐘/定時器管理、內(nèi)存管理、設(shè)備管理、文件管理、網(wǎng)絡(luò)管理[6]。GJB 7713—2012規(guī)定操作系統(tǒng)各功能模塊的核心要求不可裁剪[7]。核電儀控實(shí)時操作系統(tǒng)的功能需求全覆蓋GJB 7718—2012標(biāo)準(zhǔn)內(nèi)各功能模塊的核心要求。
GJB 7714—2012為應(yīng)用程序編程接口標(biāo)準(zhǔn)。應(yīng)用程序編程接口位于嵌入式操作系統(tǒng)與應(yīng)用軟件之間,為應(yīng)用軟件開發(fā)提供編程接口。核電儀控實(shí)時操作系統(tǒng)中,應(yīng)用編程接口模塊依據(jù)功能模塊進(jìn)行設(shè)置。GJB 7714—2012標(biāo)準(zhǔn)內(nèi)各接口模塊的接口函數(shù)具體劃分為基本接口和擴(kuò)展接口[8]。核電儀控實(shí)時操作系統(tǒng)的應(yīng)用編程接口全覆蓋GJB 7714—2012內(nèi)各接口模塊的基本接口。但GJB 7714—2012標(biāo)準(zhǔn)缺少操作系統(tǒng)所需的C庫接口和數(shù)學(xué)庫接口。缺失部分在應(yīng)用需求調(diào)查中完成。
核電廠的應(yīng)用環(huán)境對嵌入式實(shí)時操作系統(tǒng)具有特定的應(yīng)用需求,因此本文針對核電廠數(shù)字化儀控系統(tǒng)的實(shí)際應(yīng)用開展應(yīng)用開發(fā)者調(diào)查分析。調(diào)查分析包括接口需求、功能需求、性能需求三方面。調(diào)查分析結(jié)果如下。
①接口需求。
GJB 7714—2012軍用操作系統(tǒng)接口標(biāo)準(zhǔn)內(nèi)缺少C庫及數(shù)學(xué)庫接口,不能滿足實(shí)際應(yīng)用的使用需求。為此,需以實(shí)際應(yīng)用中C庫和數(shù)學(xué)庫的接口為基礎(chǔ)、以POSIX.1—2017標(biāo)準(zhǔn)庫內(nèi)的接口函數(shù)為準(zhǔn)則,從而增加C庫及數(shù)學(xué)庫接口需求。
此外,GJB 7714—2012軍用操作系統(tǒng)接口標(biāo)準(zhǔn)內(nèi)的接口缺少實(shí)際應(yīng)用中需要的事件編程接口,且POSIX.1—2017內(nèi)也無事件編程接口,需依據(jù)核電儀控系統(tǒng)的實(shí)際應(yīng)用增加事件編程接口需求。
②功能需求。
經(jīng)調(diào)研,核電儀控系統(tǒng)的網(wǎng)絡(luò)系統(tǒng)在實(shí)際應(yīng)用中需使用簡單網(wǎng)絡(luò)時間協(xié)議(simple network time protocol,SNTP)。該協(xié)議為校時協(xié)議,而非操作系統(tǒng)通用網(wǎng)絡(luò)功能。因此,根據(jù)核電儀控系統(tǒng)的應(yīng)用需求,需在核電儀控實(shí)時操作系統(tǒng)的網(wǎng)絡(luò)系統(tǒng)中增加支持SNTP的需求。
③性能需求。
基于核電儀控系統(tǒng)可靠性的設(shè)計經(jīng)驗,以控制設(shè)計錯誤、隔離故障、避免失效為原則,本文增加核電儀控實(shí)時操作系統(tǒng)的可靠性需求,包括錯誤解決率、錯誤定位率、故障隔離率、系統(tǒng)失效率。
友商產(chǎn)品選取當(dāng)前核電廠儀控系統(tǒng)已成熟應(yīng)用的操作系統(tǒng), 即QNX操作系統(tǒng)和VxWorks操作系統(tǒng)。
經(jīng)QNX操作系統(tǒng)軟件需求分析研究,核電儀控實(shí)時操作系統(tǒng)軟件需求應(yīng)增加以下需求:應(yīng)用程序棧溢出的保護(hù)機(jī)制的需求;應(yīng)用程序與操作系統(tǒng)之間滿足故障隔離的需求;操作系統(tǒng)與應(yīng)用程序之間滿足空間隔離的需求;應(yīng)用程序相互之間滿足空間隔離的需求;操作系統(tǒng)對自身二進(jìn)制映像進(jìn)行校驗的需求;應(yīng)用程序?qū)Σ僮飨到y(tǒng)的二進(jìn)制映像進(jìn)行校驗的需求。
對VxWorks操作系統(tǒng)內(nèi)核的軟件需求進(jìn)行分析研究可知,核電儀控實(shí)時操作系統(tǒng)軟件需求需增加原子操作的限定。核電儀控實(shí)時操作系統(tǒng)支持64位處理器,因此在核電儀控實(shí)時操作系統(tǒng)需求中增加原子操作支持64位的需求。經(jīng)對比研究,核電儀控實(shí)時操作系統(tǒng)軟件的主要功能需求與VxWorks操作系統(tǒng)軟件的功能需求基本一致,且核電儀控實(shí)時操作系統(tǒng)功能需求已基本全覆蓋VxWorks操作系統(tǒng)功能需求的維度。
根據(jù)GB/T 9385的要求,核電儀控實(shí)時操作系統(tǒng)軟件需求的維度包含接口需求、功能需求、性能需求、軟件系統(tǒng)屬性[9]。核電儀控實(shí)時操作系統(tǒng)軟件需求結(jié)構(gòu)如圖4所示。
圖4 核電儀控實(shí)時操作系統(tǒng)軟件需求結(jié)構(gòu)圖
經(jīng)分析研究,核電儀控實(shí)時操作系統(tǒng)對外接口的需求以核電廠數(shù)字儀控系統(tǒng)實(shí)際應(yīng)用的需求為基礎(chǔ),依據(jù)GJB 7714—2012與POSIX.1—2017確定具體的對外接口,以及對外接口的輸入、輸出及異常處理。接口需求模塊與功能需求模塊劃分一致,包含核心功能接口、擴(kuò)展功能接口和其他功能接口。
核電儀控實(shí)時操作系統(tǒng)軟件的功能需求以滿足核電廠數(shù)字儀控系統(tǒng)的應(yīng)用需求為基礎(chǔ)。經(jīng)研究,功能需求劃分為核心功能、擴(kuò)展功能和其他功能。各功能需求具體如下。
①核心功能包含任務(wù)模塊、時鐘/定時器管理模塊、中斷/異常管理模塊。
任務(wù)模塊劃分為任務(wù)管理、任務(wù)同步與通信。任務(wù)是核電儀控實(shí)時操作系統(tǒng)的基本執(zhí)行單位。任務(wù)管理的核心是對任務(wù)狀態(tài)和調(diào)度的管理,包含任務(wù)創(chuàng)建、任務(wù)屬性查詢、任務(wù)調(diào)度、任務(wù)優(yōu)先級設(shè)置、時間片輪轉(zhuǎn)。核電儀控實(shí)時操作系統(tǒng)為多任務(wù)實(shí)時操作系統(tǒng),任務(wù)與通信模塊同步提供信號量、互斥量、信號、消息隊列、條件變量、事件,以完成多任務(wù)執(zhí)行順序、資源共享、不同任務(wù)間信息傳遞的功能。
時鐘/定時器管理模塊包括時鐘管理、看門狗定時器管理、外部定時器管理,主要涉及系統(tǒng)時鐘、單次定時器、周期性定時器、系統(tǒng)定時器等功能需求。
中斷/異常管理模塊包括中斷管理、異常管理。異常管理對象包含一般異常、嚴(yán)重異常。不同類型異常的處理原則不同。
②擴(kuò)展功能包括內(nèi)存管理、設(shè)備管理、文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)。
內(nèi)存管理主要有棧內(nèi)存管理、內(nèi)存分配管理、空閑內(nèi)存回收管理等功能需求,不支持冗余內(nèi)存塊管理。
設(shè)備管理涉及設(shè)備的開關(guān)、讀寫、控制,及查看指定設(shè)備信息等管理設(shè)備的功能需求。
文件系統(tǒng)支持對文件的創(chuàng)建、操作、控制、管理等功能。
網(wǎng)絡(luò)系統(tǒng)支持傳輸控制協(xié)議/網(wǎng)際協(xié)議(transmission control protocol/internet protocol,TCP/IP)。根據(jù)核電系統(tǒng)應(yīng)用的需求,網(wǎng)絡(luò)應(yīng)用層增加支持SNTP的需求。
③其他功能包含多核擴(kuò)展、C庫和數(shù)學(xué)庫。
因核電數(shù)字化儀控系統(tǒng)中的CPU負(fù)荷是一項比較重要的考核指標(biāo),為確保該指標(biāo)滿足要求,需支持多任務(wù)運(yùn)行在處理器多個內(nèi)核上。C庫支持字符串和內(nèi)存操作。數(shù)學(xué)庫支持常規(guī)的數(shù)學(xué)運(yùn)算接口。
核電儀控實(shí)時操作系統(tǒng)軟件性能需求包括時間性能和空間資源。
時間性能包括中斷響應(yīng)時間、任務(wù)切換時間、任務(wù)搶占時間、信號量延遲時間、最小系統(tǒng)脈沖時間。
空間資源從最小配置裁剪、地址空間訪問兩個維度提出要求。地址空間訪問要求支持64位地址空間訪問。
經(jīng)分析研究,核電儀控實(shí)時操作系統(tǒng)的系統(tǒng)屬性分為軟件關(guān)鍵屬性和其他屬性兩部分。軟件關(guān)鍵屬性包括安全性、可靠性、保密性。其他屬性包括可用性、可維護(hù)性、可移植性。
2.4.1 軟件關(guān)鍵屬性
(1)安全性需求。
核電儀控實(shí)時操作系統(tǒng)軟件的安全性需求指系統(tǒng)可靠地監(jiān)控資源執(zhí)行哪種動作的能力,以及檢測安全漏洞并從中恢復(fù)的能力。安全性需求通過安全機(jī)制來保證。安全機(jī)制是執(zhí)行安全性策略所需的技術(shù)、配置以及過程。安全性是可靠性、保密性、可用性、可維護(hù)性和可移植性的基礎(chǔ)保障。安全機(jī)制主要包括保護(hù)機(jī)制、檢查及監(jiān)視機(jī)制和隔離機(jī)制。
①保護(hù)機(jī)制。對代碼進(jìn)行寫保護(hù),對棧溢出增加保護(hù)機(jī)制。在棧溢出保護(hù)機(jī)制中對核電儀控實(shí)時操作系統(tǒng)使用的棧、應(yīng)用程序使用的棧增加溢出保護(hù)機(jī)制。
②檢查及監(jiān)視機(jī)制。對輸入數(shù)據(jù)、返回值的合法性和有效性進(jìn)行檢查,確保輸入數(shù)據(jù)、返回值合法且有效。對操作系統(tǒng)內(nèi)核中指針地址的有效性進(jìn)行檢查,以確保訪問的內(nèi)存區(qū)為既定分配的內(nèi)存區(qū)。對內(nèi)核運(yùn)行的狀態(tài)進(jìn)行監(jiān)視。
③隔離機(jī)制。應(yīng)用程序與操作系統(tǒng)之間以及應(yīng)用程序相互之間實(shí)現(xiàn)空間隔離、故障隔離。通過隔離確保訪問空間的獨(dú)立性,以及故障發(fā)生時互不影響。
(2)可靠性需求。
核電儀控實(shí)時操作系統(tǒng)能夠?qū)φG闆r下的系統(tǒng)資源進(jìn)行有效管理,當(dāng)發(fā)生異常情況時仍需要保持可靠運(yùn)行。核電儀控實(shí)時操作系統(tǒng)將故障分為一般故障和嚴(yán)重故障,并將故障信息盡可能詳細(xì)地發(fā)送給核電廠操作人員。
核電儀控實(shí)時操作系統(tǒng)的可靠性需求包括錯誤解決率、錯誤定位率、故障隔離率、系統(tǒng)失效率。錯誤解決率≥99.99%。錯誤定位率≥80%。故障隔離率≥90%。系統(tǒng)失效率<30 FIT。
(3)保密性需求。
核電儀控實(shí)時操作系統(tǒng)要具備自我保護(hù)和主動防攻擊的功能。自我保護(hù)的功能設(shè)置操作系統(tǒng)內(nèi)核服務(wù)訪問的權(quán)限。主動防攻擊的功能增加通信網(wǎng)絡(luò)的安全防護(hù),通過在網(wǎng)絡(luò)通信中增加加密算法對通信數(shù)據(jù)進(jìn)行加密,并對軟件和數(shù)據(jù)的完整性進(jìn)行校驗,以防止軟件和數(shù)據(jù)被惡意篡改[10]。
2.4.2 其他屬性
①可用性需求。
可用性需求衡量使用一種產(chǎn)品來執(zhí)行指定任務(wù)的難易程度,如系統(tǒng)的啟動時間和原子操作兩方面。
②可維護(hù)性需求。
從易分析的角度提出記錄異常信息的機(jī)制,為異常處理提供便利性。
③可移植性需求。
采用C語言進(jìn)行操作系統(tǒng)的開發(fā),提供標(biāo)準(zhǔn)的應(yīng)用層編程接口,以便操作系統(tǒng)開發(fā)和移植。
核電儀控實(shí)時操作系統(tǒng)為核電廠數(shù)字儀控系統(tǒng)提供了安全、穩(wěn)定的運(yùn)行平臺。為了研制適用于我國核電廠的實(shí)時操作系統(tǒng)、實(shí)現(xiàn)國產(chǎn)核電儀控操作系統(tǒng)替代轉(zhuǎn)化,本文通過研究經(jīng)典書籍、核電法規(guī)標(biāo)準(zhǔn)、應(yīng)用需求調(diào)查、友商產(chǎn)品需求等,提出了適用于核電廠數(shù)字儀控系統(tǒng)的可靠性和安全性的實(shí)時操作系統(tǒng)軟件需求。本文分別從外部接口需求、功能需求、性能需求和軟件系統(tǒng)屬性四個維度提出了具體的實(shí)現(xiàn)方案。本文需求分析為后續(xù)實(shí)現(xiàn)獨(dú)立自主的核電儀控實(shí)時操作系統(tǒng)軟件的設(shè)計及研制奠定了基礎(chǔ)。