多任务隔离方法和装置与流程

文档序号:11432520阅读:195来源:国知局
多任务隔离方法和装置与流程

本发明涉及计算机互联网领域,具体而言,涉及一种多任务隔离方法和装置。



背景技术:

基于os(operatingsystem,操作系统)的多任务隔离可以有效的阻止任务之间的干扰,防止异常的任务干扰正常任务的运行,或者防止由于某一个任务异常导致整个系统崩溃,这样的隔离在plc(programmablelogiccontroller,可编程逻辑控制器)系统中尤为重要,需要保证非重要任务出现异常时不应该影响重要任务的运行。

目前,用于plc控制器的rtos(realtimeoperatingsystem,实时操作系统)都是可以支持抢占式调度的,基于抢占可以实现时间上保证重要任务的运行,在cpu(centralprocessingunit,中央处理器)芯片的配合下可以支持任务的空间隔离,虽然os提供了空间隔离以及时间上的响应保证,但并没有适合功能安全的空间隔离以及隔离任务的通信。

针对上述现有技术中多个任务同时运行时,非安全任务的异常会对安全任务产生影响的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种多任务隔离方法和装置,以至少解决现有技术中多个任务同时运行时,非安全任务的异常会对安全任务产生影响的技术问题。

根据本发明实施例的一个方面,提供了一种多任务隔离方法,包括:根据预设规则将多个任务进行划分,得到安全任务和非安全任务;至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问。

根据本发明实施例的另一方面,还提供了一种多任务隔离装置,包括:划分模块,用于根据预设规则将多个任务进行划分,得到安全任务和非安全任务;配置模块,用于至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问。

在本发明实施例中,首先根据预设规则将多个任务进行划分,得到安全任务和非安全任务,然后至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问,达到了将多个任务互相隔离的目的,在将安全任务和非安全任务进行空间隔离的同时还保证了任务之间的相互通信,从而实现了避免非安全任务对安全任务产生影响,简单易操作的技术效果,进而解决了现有技术中多个任务同时运行时,非安全任务的异常会对安全任务产生影响的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种多任务隔离方法的示意图;

图2是根据本发明实施例的一种可选的多任务隔离方法的示意图;

图3是根据本发明实施例的一种可选的多任务隔离方法的示意图;

图4是根据本发明实施例的一种可选的多任务隔离方法的示意图;

图5是根据本发明实施例的一种可选的多任务隔离方法的示意图;

图6是根据本发明实施例的一种可选的多任务隔离方法的示意图;

图7是根据本发明实施例的一种多任务隔离装置的示意图;

图8是根据本发明实施例的一种可选的多任务隔离装置的示意图;以及

图9是根据本发明实施例的一种可选的多任务隔离装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种多任务隔离方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的多任务隔离方法,如图1所示,该方法包括如下步骤:

步骤s102,根据预设规则将多个任务进行划分,得到安全任务和非安全任务。

具体的,预设规则为预先自定义任务的重要性的规则,plc控制器中包含多种类型的任务,可以按照预先设定的规则将任务分为安全任务和非安全任务,例如,可以将控制任务划分为安全任务,将人机接口相关的任务划分为非安全任务。可选的,界定安全任务和非安全任务的原则可以是某个任务执行异常是否会导致系统发生危险,例如,一个用于将数值输出进行变换的任务,如果其发生异常,那么将无法变换数值或者变换后的数值出错,将该数值输出到执行机构,就可能发生危险,则该任务就被界定为安全任务。

可选的,可以预设记录下哪些任务属于安全任务,哪些任务属于非安全任务,当运行一个任务时,经过比对很容易识别该任务是安全任务还是非安全任务。

此处需要说明的是,非安全任务并不是不安全的任务,而是易发生安全风险的任务或者重要性较低的任务。

步骤s104,至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问。

具体的,设置隔离空间可以将多个任务进行空间隔离,这样在非安全任务出现异常的时候就不会影响安全任务。

在一种可选的实施例中,任务的空间隔离可以应用在safertos以及一部分rtos中,具体表现可以为,当一个任务a访问另一个任务b的空间时(即:不属于任务a的空间),os以及在其他硬件的配合下,会捕获到任务a的行为,进而阻止任务a对任务b的空间的访问,从而达到了保护任务的目的,实现空间隔离。

具体的,设置共享内存可以用于安全任务和非安全任务之间的通信。

此处需要说明的是,本发明实施例中的共享内存除了主要用于安全任务和非安全任务之间的通信之外,也可以用于安全任务之间的通信以及非安全任务之间的通信,除此之外,安全任务之间的通信以及非安全任务之间的通信还可以通过信号量、邮箱等方式进行通信。

在本发明实施例中,首先根据预设规则将多个任务进行划分,得到安全任务和非安全任务,然后至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问,达到了将多个任务互相隔离的目的,在将安全任务和非安全任务进行空间隔离的同时还保证了任务之间的相互通信,从而实现了避免非安全任务对安全任务产生影响,简单易操作的技术效果,进而解决了现有技术中多个任务同时运行时,非安全任务的异常会对安全任务产生影响的技术问题。

在一种可选的实施例中,共享内存可以实现安全任务和非安全任务之间的通信,可以设置适当的校验方式,例如crc32,以实现安全任务和非安全任务之间的双向通信。

在一种可选的实施例中,步骤s104之后,方法还包括:步骤s202,确定多个任务中每个任务的每一次执行是否欠运行或者过运行。

具体的,除了需要保证非安全任务发生异常时不应该影响安全任务之外,还需要保证非安全任务不能占用安全任务的运行时间,现有技术中虽然os提供了抢占式调度以对时间上的响应保证,但是其提供的可抢占调度也不能完全满足功能安全要求的时间隔离,因此需要保证每个任务正常执行,在时间轴上实现一个任务接一个任务的运行,并且每个任务需要在确定的时间内运行完成,来保证多个任务之间的时间隔离,为了实现多个任务之间的时间隔离,就需要对每个任务的每一次执行是否欠运行或者过运行进行监控,其中欠运行指的是运行时间过短,过运行指的是运行时间过长,可选的,可以设置一个时间段,如果某一个任务的某一次执行时间处于该时间段内,则说明该任务正常运行,如果执行时间小于该时间段,则说明该任务欠运行,如果执行时间大于该时间段,则说明该任务过运行。

在一种可选的实施例中,确定多个任务中每个任务的每一次执行是否欠运行或者过运行,包括:

步骤s302,在当前执行的前一次执行结束时启动第一定时器和第二定时器,其中,第一定时器的第一定时时长大于第二定时器的第二定时时长。

步骤s304,在第一定时器达到第一定时时长时,记录第一标识,在第二定时器达到第二定时时长时,记录第二标识。

步骤s306,在当前执行结束时,确定当前执行的标识记录情况,若第一标识已记录,第二标识未记录,则确定当前执行正常,若第一标识和第二标识均已记录,则确定当前执行为过运行,若第一标识未记录,则确定当前执行为欠运行。

具体的,为了实现对多个任务中每个任务的每一次执行是否欠运行或者过运行进行监控,可以采用软定时器的方式,设置两个定时器,两个定时器在任务的每次执行结束时开始启动,并且在各自的定时时长达到时停止,并且在停止时设置一个标识,在下一次执行结束时进行检查,如果该下一次执行结束在两个标识之间,则说明该下一次执行正常,如果该下一次执行结束在第一个标识设置之前,则说明该下一次执行欠运行,如果该下一次运行结束在第二个标识设置之后,则说明该下一次执行过运行。

在一种可选的实施例中,隔离空间包括如下至少之一:静态变量、数组和设备寄存器。

在一种可选的实施例中,多个任务在safertos操作系统上运行,其中,至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间还包括:配置操作系统的栈和代码以及多个任务的栈和代码。

具体的,safertos是一种实时操作系统,支持抢占式和合作式的任务切换模式,代码精简。

作为一种可选的实施例,如图2所示,操作系统上运行有安全任务t1、安全任务t2和非安全任务t3,其中操作系统为safertos上,除此之外还包括硬件抽象层以及微控制器,其中微控制器可以为高性能的rm57l843,safertos运行可以运行在ti(texasinstruments)公司推出的安全cpu上,safertos本身也属于安全的范畴,功能安全要求非安全任务的异常不能影响安全任务也不能影响os本身,即需要对非安全任务进行隔离。如图3所示,可以配置16个区域,其中12个可配置的区域给任务,剩余4个用于操作系统本身和任务的栈以及代码,具体的,cpu上的存储器(memory)空间包括:rom(只读存储器)、ram(随时存取存储器)和device(设备),其中,区域1、区域10、区域15和区域16用于操作系统和任务的栈以及代码,区域2、区域3和区域14分别为可供安全任务t1、安全任务t2和非安全任务t3配置的自己能够访问的静态变量、数组和设备寄存器,区域4为共享内存,此处需要说明的是,图3中虽然显示的为安全任务t1和非安全任务t3共享,但实际上共享内存可以由安全任务t1、安全任务t2和非安全任务t3中任意两个或全部共享,在有通信需求的时候应用该共享内存。通过区域配置,可以实现任务之间的空间隔离以及通信需求。为了实现时间隔离,如图4所示,可以设置两个定时器,分别为tr1和tr2,以安全任务t1为例,在安全任务t1每一次执行结束时启动tr1和tr2,其中tr1的定时时长为17ms,tr2的定时时长为22ms,在tr1启动17ms后设置第一标识,在tr2启动22ms后设置第二标识,并且将安全任务t1每一次执行结束的时刻作为任务检查点。如图5所示,图5上显示的安全任务t1的第二次执行结束后,第一标识和第二标识均已设置,因此可以判断该次执行为过运行,如图6所示,图6上显示的安全任务t1的第三次执行结束后,第一标识和第二标识均未设置,因此可以判断该次执行为欠运行。

实施例2

根据本发明实施例,提供了一种多任务隔离装置的产品实施例,图7是根据本发明实施例的多任务隔离装置,如图7所示,该装置包括划分模块101和配置模块103,其中,划分模块101,用于根据预设规则将多个任务进行划分,得到安全任务和非安全任务;配置模块103,用于至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问。

在本发明实施例中,首先划分模块101根据预设规则将多个任务进行划分,得到安全任务和非安全任务,然后配置模块103至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间,其中,共享内存设置为用于安全任务和非安全任务之间的通信,隔离空间设置为仅限于隔离空间对应的任务进行访问,达到了将多个任务互相隔离的目的,在将安全任务和非安全任务进行空间隔离的同时还保证了任务之间的相互通信,从而实现了避免非安全任务对安全任务产生影响,简单易操作的技术效果,进而解决了现有技术中多个任务同时运行时,非安全任务的异常会对安全任务产生影响的技术问题。

此处需要说明的是,上述划分模块101和配置模块103,对应于实施例1中的步骤s102至步骤s104,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。

在一种可选的实施例中,如图8所示,装置还包括:确定模块201,用于在配置模块103至少配置一个共享内存以及为多个任务中每个任务配置对应的隔离空间之后,确定多个任务中每个任务的每一次执行是否欠运行或者过运行。

此处需要说明的是,上述确定模块201对应于实施例1中的步骤s202,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。

在一种可选的实施例中,如图9所示,确定模块201包括启动模块301、记录模块303和第一确定模块305,其中,启动模块301,用于在当前执行的前一次执行结束时启动第一定时器和第二定时器,其中,第一定时器的第一定时时长大于第二定时器的第二定时时长;记录模块303,用于在第一定时器达到第一定时时长时,记录第一标识,在第二定时器达到第二定时时长时,记录第二标识;第一确定模块305,用于在当前执行结束时,确定当前执行的标识记录情况,若第一标识已记录,第二标识未记录,则确定当前执行正常,若第一标识和第二标识均已记录,则确定当前执行为过运行,若第一标识未记录,则确定当前执行为欠运行。

此处需要说明的是,上述启动模块301、记录模块303和第一确定模块305对应于实施例1中的步骤s302至步骤s306,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。

在一种可选的实施例中,隔离空间包括如下至少之一:静态变量、数组和设备寄存器。

在一种可选的实施例中,多个任务在safertos操作系统上运行,其中,配置模块包括:配置操作系统的栈和代码以及多个任务的栈和代码。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1