窦维维,李 萌,马忠刚,王晓伟,范丽辰
(北京广利核系统工程有限公司,北京 100094)
我国正面临百年未有之大变局,国际关系依旧复杂,个别国家对我国核心领域的供应链进行加码限制,给国家安全带来巨大的威胁。当前,我国核电厂数字仪控系统使用的实时操作系统也被国外限制供应。这严重束缚了我国核电的建设与发展[1]。随着我国对于科技领域安全可控、自主可控重视程度的不断提升,开发一款具有完全自主知识产权的、适用于我国核电厂的实时操作系统势在必行。
实时操作系统属于核电厂数字仪控系统的核心部分,要在规定的时间内对控制系统作出快速响应。其在核电厂数字化仪控系统中具有无可替代的重要性。为推动实现核电厂仪控系统中实时操作系统的完全自主可控,本文对适用于核电厂仪控系统的实时操作系统的软件需求开展研究。核电仪控实时操作系统的软件需求既要满足通用实时操作系统的核心要求,又要满足核电软件相关法规的要求。
核电仪控实时操作系统需求的分析分别从经典书籍分析、标准分析、应用开发者调查分析、友商需求分析四个维度进行。需求分析维度如图1所示。
图1 需求分析维度
经典书籍分析选取了操作系统行业比较经典的三本图书进行深入学习,分别是《操作系统概念》《操作系统》和《深入理解UNIX系统内核》。嵌入式操作系统诞生于20世纪70年代,位于硬件层与应用软件层之间,为应用软件层提供运行平台。
经过对嵌入式操作系统领域内核心知识的重点学习可知,嵌入式操作系统的功能模块包含进程管理、内存管理、设备管理、文件管理和网络管理。进程管理模块包含进程调度、进程通信与同步。内存管理模块有多种技术方案可供选择,能够确保系统的响应时间,以及中央处理器(central processing unit,CPU)的使用率。设备管理模块包含输入/输出(input/output,I/O)的管理[2-4]。文件管理和网络管理则以组件的形式存在于嵌入式操作系统中。
核电仪控实时操作系统既要满足核电软件相关标准,又要满足操作系统相关标准。实时操作系统软件在核电仪控系统中属于较为复杂的软件,在保守的核电系统内用于执行核安全级B类功能及C类功能。因为现阶段研究目标为用国内产品替代执行B类功能的国外操作系统产品,所以核电仪控实时操作系统确定为执行核安全级B类功能的软件。
核电仪控实时操作系统为执行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进行分析。
国内的操作系统相关标准有《军用嵌入式操作系统技术要求》(GJB 7718—2012)、《军用嵌入式实时操作系统应用编程接口》(GJB 7714—2012)、《军用嵌入式操作系统模块裁剪配置要求》(GJB 7713—2012)。
1.2.1 核电软件相关标准研究
IEC 62138-2018包含核电厂执行B类或C类功能的基于计算机系统的软件方面的相关要求。核电仪控实时操作系统属于IEC 62138中划定的自动化控制软件中运行系统软件大类下的操作系统子类。
IEC 62138中自动化控制软件如图2所示[5]。
图2 IEC 62138中自动化控制软件图
IEC 62138-2018的研究包含过程符合性分析和技术符合性分析。
(1)过程符合性分析。
在过程符合性分析中,IEC 62138-2018规定了软件安全生命周期的开发活动。软件安全生命周期开发活动如图3所示。
图3 软件安全生命周期开发活动图
软件安全生命周期包括软件需求、软件设计、软件实现,之后再进行独立的系统集成与系统确认。其中:系统集成针对软件设计进行测试;系统确认针对软件需求进行测试。
核电仪控实时操作系统软件的生命周期应符合IEC 62138-2018中软件安全生命周期要求,需包含软件需求、软件设计、软件实现、系统集成、系统确认这五个阶段。同时,核电仪控实时操作系统软件生命周期内产生的文档需全面覆盖IEC 62138-2018中所列文档清单。
(2)技术符合性分析。
在技术符合性分析中,因核电仪控实时操作系统属于运行系统软件,故符合IEC 62138-2018标准的通用要求即可。具体要求如下。
①开发语言要求:操作系统软件可执行静态分析,禁止为收集空闲内存而随机中断操作系统的正常运行。
②多余度和功能复杂性要求:减少不必要的功能,降低操作系统软件的复杂性。但是不必要的功能可能是合理的,且有利于系统软件的设计,应确保该功能不会导致系统软件过度复杂。
③可预测性要求:提前对操作系统内关键安全元素进行预测,主要是对最大响应时间和最大资源使用情况进行预测。
④故障失效要求:定义为一般故障、严重故障。操作系统运行中的重要故障应通知操作人员。
⑤健壮性要求:明确操作系统安全性评估限制条件,例如通信带宽采用的裕量、检测并发出故障信号、操作系统内不同线程共享的资源不会因其中一个线程的故障对其他线程造成严重的影响。
1.2.2 操作系统相关标准研究
前文所述当前国内操作系统相关的标准均属于中华人民共和国国家军用标准,由中国人民解放军总装备部组织起草,并于2013年1月1日实施。这些标准分别从技术层面、接口层面和裁剪配置层面提出要求。依据标准要求,嵌入式操作系统应采用模块化软件架构,具备标准化、构件化、能扩展、可移植的特点。
GJB 7718—2012标准对操作系统的各功能模块提出技术要求。技术要求又划分为核心要求和扩展要求。核电仪控实时操作系统针对GJB 7718—2012中的技术要求采用核心技术要求全覆盖的原则。核电仪控实时操作系统软件的功能需求采用模块化架构,包含任务管理、任务同步与通信、异常/中断管理、时钟/定时器管理、内存管理、设备管理、文件管理、网络管理[6]。GJB 7713—2012规定操作系统各功能模块的核心要求不可裁剪[7]。核电仪控实时操作系统的功能需求全覆盖GJB 7718—2012标准内各功能模块的核心要求。
GJB 7714—2012为应用程序编程接口标准。应用程序编程接口位于嵌入式操作系统与应用软件之间,为应用软件开发提供编程接口。核电仪控实时操作系统中,应用编程接口模块依据功能模块进行设置。GJB 7714—2012标准内各接口模块的接口函数具体划分为基本接口和扩展接口[8]。核电仪控实时操作系统的应用编程接口全覆盖GJB 7714—2012内各接口模块的基本接口。但GJB 7714—2012标准缺少操作系统所需的C库接口和数学库接口。缺失部分在应用需求调查中完成。
核电厂的应用环境对嵌入式实时操作系统具有特定的应用需求,因此本文针对核电厂数字化仪控系统的实际应用开展应用开发者调查分析。调查分析包括接口需求、功能需求、性能需求三方面。调查分析结果如下。
①接口需求。
GJB 7714—2012军用操作系统接口标准内缺少C库及数学库接口,不能满足实际应用的使用需求。为此,需以实际应用中C库和数学库的接口为基础、以POSIX.1—2017标准库内的接口函数为准则,从而增加C库及数学库接口需求。
此外,GJB 7714—2012军用操作系统接口标准内的接口缺少实际应用中需要的事件编程接口,且POSIX.1—2017内也无事件编程接口,需依据核电仪控系统的实际应用增加事件编程接口需求。
②功能需求。
经调研,核电仪控系统的网络系统在实际应用中需使用简单网络时间协议(simple network time protocol,SNTP)。该协议为校时协议,而非操作系统通用网络功能。因此,根据核电仪控系统的应用需求,需在核电仪控实时操作系统的网络系统中增加支持SNTP的需求。
③性能需求。
基于核电仪控系统可靠性的设计经验,以控制设计错误、隔离故障、避免失效为原则,本文增加核电仪控实时操作系统的可靠性需求,包括错误解决率、错误定位率、故障隔离率、系统失效率。
友商产品选取当前核电厂仪控系统已成熟应用的操作系统, 即QNX操作系统和VxWorks操作系统。
经QNX操作系统软件需求分析研究,核电仪控实时操作系统软件需求应增加以下需求:应用程序栈溢出的保护机制的需求;应用程序与操作系统之间满足故障隔离的需求;操作系统与应用程序之间满足空间隔离的需求;应用程序相互之间满足空间隔离的需求;操作系统对自身二进制映像进行校验的需求;应用程序对操作系统的二进制映像进行校验的需求。
对VxWorks操作系统内核的软件需求进行分析研究可知,核电仪控实时操作系统软件需求需增加原子操作的限定。核电仪控实时操作系统支持64位处理器,因此在核电仪控实时操作系统需求中增加原子操作支持64位的需求。经对比研究,核电仪控实时操作系统软件的主要功能需求与VxWorks操作系统软件的功能需求基本一致,且核电仪控实时操作系统功能需求已基本全覆盖VxWorks操作系统功能需求的维度。
根据GB/T 9385的要求,核电仪控实时操作系统软件需求的维度包含接口需求、功能需求、性能需求、软件系统属性[9]。核电仪控实时操作系统软件需求结构如图4所示。
图4 核电仪控实时操作系统软件需求结构图
经分析研究,核电仪控实时操作系统对外接口的需求以核电厂数字仪控系统实际应用的需求为基础,依据GJB 7714—2012与POSIX.1—2017确定具体的对外接口,以及对外接口的输入、输出及异常处理。接口需求模块与功能需求模块划分一致,包含核心功能接口、扩展功能接口和其他功能接口。
核电仪控实时操作系统软件的功能需求以满足核电厂数字仪控系统的应用需求为基础。经研究,功能需求划分为核心功能、扩展功能和其他功能。各功能需求具体如下。
①核心功能包含任务模块、时钟/定时器管理模块、中断/异常管理模块。
任务模块划分为任务管理、任务同步与通信。任务是核电仪控实时操作系统的基本执行单位。任务管理的核心是对任务状态和调度的管理,包含任务创建、任务属性查询、任务调度、任务优先级设置、时间片轮转。核电仪控实时操作系统为多任务实时操作系统,任务与通信模块同步提供信号量、互斥量、信号、消息队列、条件变量、事件,以完成多任务执行顺序、资源共享、不同任务间信息传递的功能。
时钟/定时器管理模块包括时钟管理、看门狗定时器管理、外部定时器管理,主要涉及系统时钟、单次定时器、周期性定时器、系统定时器等功能需求。
中断/异常管理模块包括中断管理、异常管理。异常管理对象包含一般异常、严重异常。不同类型异常的处理原则不同。
②扩展功能包括内存管理、设备管理、文件系统、网络系统。
内存管理主要有栈内存管理、内存分配管理、空闲内存回收管理等功能需求,不支持冗余内存块管理。
设备管理涉及设备的开关、读写、控制,及查看指定设备信息等管理设备的功能需求。
文件系统支持对文件的创建、操作、控制、管理等功能。
网络系统支持传输控制协议/网际协议(transmission control protocol/internet protocol,TCP/IP)。根据核电系统应用的需求,网络应用层增加支持SNTP的需求。
③其他功能包含多核扩展、C库和数学库。
因核电数字化仪控系统中的CPU负荷是一项比较重要的考核指标,为确保该指标满足要求,需支持多任务运行在处理器多个内核上。C库支持字符串和内存操作。数学库支持常规的数学运算接口。
核电仪控实时操作系统软件性能需求包括时间性能和空间资源。
时间性能包括中断响应时间、任务切换时间、任务抢占时间、信号量延迟时间、最小系统脉冲时间。
空间资源从最小配置裁剪、地址空间访问两个维度提出要求。地址空间访问要求支持64位地址空间访问。
经分析研究,核电仪控实时操作系统的系统属性分为软件关键属性和其他属性两部分。软件关键属性包括安全性、可靠性、保密性。其他属性包括可用性、可维护性、可移植性。
2.4.1 软件关键属性
(1)安全性需求。
核电仪控实时操作系统软件的安全性需求指系统可靠地监控资源执行哪种动作的能力,以及检测安全漏洞并从中恢复的能力。安全性需求通过安全机制来保证。安全机制是执行安全性策略所需的技术、配置以及过程。安全性是可靠性、保密性、可用性、可维护性和可移植性的基础保障。安全机制主要包括保护机制、检查及监视机制和隔离机制。
①保护机制。对代码进行写保护,对栈溢出增加保护机制。在栈溢出保护机制中对核电仪控实时操作系统使用的栈、应用程序使用的栈增加溢出保护机制。
②检查及监视机制。对输入数据、返回值的合法性和有效性进行检查,确保输入数据、返回值合法且有效。对操作系统内核中指针地址的有效性进行检查,以确保访问的内存区为既定分配的内存区。对内核运行的状态进行监视。
③隔离机制。应用程序与操作系统之间以及应用程序相互之间实现空间隔离、故障隔离。通过隔离确保访问空间的独立性,以及故障发生时互不影响。
(2)可靠性需求。
核电仪控实时操作系统能够对正常情况下的系统资源进行有效管理,当发生异常情况时仍需要保持可靠运行。核电仪控实时操作系统将故障分为一般故障和严重故障,并将故障信息尽可能详细地发送给核电厂操作人员。
核电仪控实时操作系统的可靠性需求包括错误解决率、错误定位率、故障隔离率、系统失效率。错误解决率≥99.99%。错误定位率≥80%。故障隔离率≥90%。系统失效率<30 FIT。
(3)保密性需求。
核电仪控实时操作系统要具备自我保护和主动防攻击的功能。自我保护的功能设置操作系统内核服务访问的权限。主动防攻击的功能增加通信网络的安全防护,通过在网络通信中增加加密算法对通信数据进行加密,并对软件和数据的完整性进行校验,以防止软件和数据被恶意篡改[10]。
2.4.2 其他属性
①可用性需求。
可用性需求衡量使用一种产品来执行指定任务的难易程度,如系统的启动时间和原子操作两方面。
②可维护性需求。
从易分析的角度提出记录异常信息的机制,为异常处理提供便利性。
③可移植性需求。
采用C语言进行操作系统的开发,提供标准的应用层编程接口,以便操作系统开发和移植。
核电仪控实时操作系统为核电厂数字仪控系统提供了安全、稳定的运行平台。为了研制适用于我国核电厂的实时操作系统、实现国产核电仪控操作系统替代转化,本文通过研究经典书籍、核电法规标准、应用需求调查、友商产品需求等,提出了适用于核电厂数字仪控系统的可靠性和安全性的实时操作系统软件需求。本文分别从外部接口需求、功能需求、性能需求和软件系统属性四个维度提出了具体的实现方案。本文需求分析为后续实现独立自主的核电仪控实时操作系统软件的设计及研制奠定了基础。