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