CN100511165C - 执行计算机程序的方法、操作系统以及计算设备 - Google Patents

执行计算机程序的方法、操作系统以及计算设备 Download PDF

Info

Publication number
CN100511165C
CN100511165C CNB2005800364967A CN200580036496A CN100511165C CN 100511165 C CN100511165 C CN 100511165C CN B2005800364967 A CNB2005800364967 A CN B2005800364967A CN 200580036496 A CN200580036496 A CN 200580036496A CN 100511165 C CN100511165 C CN 100511165C
Authority
CN
China
Prior art keywords
program
computer program
mistake
wrong
program object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2005800364967A
Other languages
English (en)
Other versions
CN101048742A (zh
Inventor
R·韦伯勒
B·米勒
W·哈特尔
R·安格鲍尔
T·科特克
Y·科拉尼
R·格梅利希
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of CN101048742A publication Critical patent/CN101048742A/zh
Application granted granted Critical
Publication of CN100511165C publication Critical patent/CN100511165C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明涉及用于执行在计算机设备上、尤其是在微处理器上的计算机程序的方法,其中所述计算机程序包括多个程序对象,并且在所述方法中,在执行计算机设备(20)上的所述计算机程序(23)期间进行错误检测。在检测到错误时,把至少一个已经执行的程序对象转入到一个定义的状态,由此重新启动该程序对象,延迟随后的另外的程序对象。

Description

执行计算机程序的方法、操作系统以及计算设备
现有技术
本发明涉及一种用于执行在计算设备上、特别是微处理器上的计算机程序的方法。该计算机程序包括多个程序对象。在该方法中,在执行计算机程序的过程中对计算设备检测错误。
此外,本发明还涉及一种操作系统,该操作系统能运行在计算设备上,尤其是运行在微处理器上。
最后,本发明也涉及一种用于执行计算机程序的计算设备,该计算机程序包括多个程序对象。该计算设备具有错误发现机制用于检测在计算设备上执行计算机程序期间的错误。
在计算设备上执行计算机程序期间,会导致所谓的暂态错误。因为半导体模块(所谓芯片)的结构越来越小、而信号的时钟频率越来越大并且信号的电压越来越低,所以总是经常出现暂态错误。与永久错误相反,暂态错误仅短暂出现并且通常在一段时间后又自己消失。在暂态错误的情况下仅仅单个的位错误,而并没有永久地损害计算设备本身。暂态错误可能出于不同的原因,例如电磁辐射、α粒子或者中子。
今天,在通信系统中暂态错误已经成为错误处理中的重点。在通信系统(例如在控制器局域网,CAN中)公知的是:在检测到错误时重新发送被确定为有错误的数据。此外,还公知:在通信系统中使用错误计数器,该错误计数器在检测到错误时增加,在正确的发送时递减,并且只要该错误计数器超过确定的值,就阻止数据的发送。
然而,在用于执行计算机程序的计算设备中基本上仅针对永久错误来进行错误处理。对暂态错误的考虑限于错误计数器的累加和必要时为递减。该错误计数器被设置在存储器中并且能够离线地即例如在构造为汽车控制设备的计算设备中在车间停留期间作为诊断或者错误信息被读出。接着才会对错误进行相应地反应。
借助错误计数器的错误处理即一方面在尤其是对安全相关的系统所必需的短暂容错时间内不允许错误处理,而另一方面在这个意义上也不允许构造性的错误处理,即在容错时间内因此计算机程序又被执行。代替计算机在现有技术中计算机在超过错误计数器的确定值之后被切换到应急工作。这意味着,代替有错误的计算机程序其它计算机程序被执行并且为进一步计算考虑到以这样的方式所确定的替代值。替代值例如能按照其它参量来模型化。替换地,通过计算机程序的有错误部分计算出的结果作为有错误的而被丢弃并且为了进一步计算通过为应急工作设置的标准值被代替。因此,公知的用于处理运行在计算设备上的计算机程序的暂态错误的方法不能够系统地、结构地应对大多数错误的暂态性质。
此外,根据现有技术还公知:在计算机设备上执行计算机时通过计算机设备的完全重新启动来消除所出现的暂态错误。该解决方案也不能真正令人满意,因为在现有的计算机程序执行的过程中会丢失所获得的参量并且计算设备在重启的持续时间中不能执行其通常的功能。特别是在安全相关的系统中这是不能接受的。
最后,作为在计算设备上被执行的计算机程序的暂态错误的错误处理还公知:将计算机程序复位一段时间并且重复计算机程序的单个机器指令。该方法也被称作微回滚(Micro Roll-Back)。在公知的方法中,仅仅对象被回跳到机器层(时钟、机器指令)上。这要求对机器层的相应硬件支持,这与计算设备的领域内的极大费用相关。公知方法的实施单纯地通过软件来控制是不可能的。
现有技术中公知的错误处理机制并不能够以恰当的方式对在计算设备上执行计算机程序时出现的暂态错误做出反应。
但是,暂态错误在未来技术中却是极为频繁的。如果发现暂态错误,例如它通过双核机制,则因此始终保持应答错误定位的询问,以便标识正确的结果。当有目的使暂态错误不再导致计算机的重新启动时,这就越适合。错误定位典型如所描述地只能通过开销比较大的方法来实现。
本发明的技术问题是:当在计算机系统中执行计算机程序时,构造性地处理暂态错误:使得在尽可能短的容错时间内重新产生计算机系统的完整功能和功能安全性。
为了解决该技术问题,从上面所述类型的方法出发建议:在检测到错误时至少一个已执行的程序对象被转移进所定义的状态中并且从该状态出来被重新启动。
当然,对系统层还提出以下问题:如何能有效地使用作业重复的概念。通常,并不是这样的情况,即能简单地再次计算任意有错误的作业,因为附加必需的计算时间和为此所使用的时刻从系统上看被不同计划。当处理器负载已接近100%(通常是这样)时,则通过这种未计划的附加负载(如该负载表示作业重复)产生系统的过载,过载典型地会导致崩溃。当考虑时间受控的系统时(如所表示的那样,这些系统至少部分得以实施),这将变得更为明显。在这些系统中,截止时间损害是不可容忍的,在大多数其它严格的实时概念中同样不能容忍。
因此得到,即从系统来看必须考虑到能由潜在作业重复形成的附加负载。当根据每个作业维持作业重复必需的计算时间时,则该作业无疑是有效的,当然为了非错误处理系统必须付出100%的附加性能。从成本来看,这是不能接受的。
因此,本发明的作业是提供一种优化的系统策略,该系统策略不再考虑两次计算作业(以及由此产生永久和很大的费用)并且同时解决这些问题,如这可与时间受控的方法相关。
发明内容
因此,在根据本发明的系统策略的范围内建议了一种方法、一种操作系统以及一种计算设备,该系统策略允许将作业重复的概念与最小或者甚至没有性能费用结合。在这样的情况下,这种系统策略是用于作业、作业、程序或者程序部分的调度方法的边界条件,此外该边界条件还被称作程序对象或者一些程序对象。
重新被启动的程序对象在检测到错误时不必完全被执行。在本发明的意义上,这种程序对象在出现错误时也能被重新启动,该程序对象在检测到错误时刻还没有完全被执行,但是又刚好已经开始其执行。根据本发明,即在出现暂态或者永久错误时重新执行至少一个操作系统对象。相对于微回滚的优点尤其是在于:程序对象的重复能用很小的硬件支持来实现。最多必需额外的存储器位置,以便能够存储几个对重新实施程序对象所必需的信息(例如程序对象的输入参量)。根据本发明的方法的实际管理能通过计算设备的操作系统来实施。即根据本发明的方法能用传统的商用处理器来实现,而不需要额外的硬件。但是不言而喻,也可以用于硬件支持实现根据本发明的方法。
因此,与现有技术相比,更有利的是,再次计算有错误的作业即有错误的作业或有错误的程序或者程序部分或程序对象或者至少操作系统对象。如果该错误原本是暂态的,则在重新计算时这两个输出是相同的,即错误消失并且通过重新计算来进行处理。
从而以有利的方式,提出一种在一个计算设备上,特别是在一个微处理器上执行一个计算机程序的方法,其中所述计算机程序包含多个程序目标,并且在所述方法的情况下,在所述计算设备上执行计算机程序时检测错误,其中在检测到一个错误时把至少一个已经输送去执行的程序目标转入一个确定的状态并且从这种状态重新起动,并且延迟随后的其它的程序目标。
以适当的方式把所述程序目标划分成至少两类,其中检测到一个错误时重复第一类的程序目标,并且在检测到所述第一类的一个已经输送执行的程序目标的一个错误时,取代于第二类的一个程序目标重新起动所述第一类的该程序目标。在此错误的检测只在重新启动的类中进行。
恰当地,对所有程序对象设置有一个循环的总计算时间并且这样地划分总计算时间,使得在检测到错误时重新启动的程序对象在无错误的情况下获得一个循环的总计算时间的最多50%,其中不同类的程序对象交替地执行并且第一类的有错误的程序对象代替紧接其后的第二类的程序对象被执行或被重新启动。
根据任意的方法能够自己进行错误检测。可以考虑的是:使用任意类型的错误发现机制、该机制能检测到执行计算机程序(所谓并发检验)期间的错误。例如在双核架构中,双倍地构造整个计算机核。当计算机核以锁步模式工作,对任何指令能比较:计算机核是否提供相同的结果。于是这些结果的差别肯定会推断出存在错误。错误发现机制实时发现执行程序对象期间的错误。相应地,也适于错误发现的代码,该代码被连续地用于处理器架构中,或者适于计算设备的相同的部分组件。所有这些错误发现机制共同点在于:它们很迅速地发现暂态错误并且当错误被发现时提供错误信号。
根据错误信号来启动错误处理机制,该错误处理机制重复程序对象。如果在重新执行时再次出现相同的错误,则被推断出永久错误,或者增加错误计数器,其中当错误计数器超过确定的值时才推断出永久错误。相反,如果在重新执行程序对象时不再出现该错误,则由此能得到,该错误为暂态错误。在无错误地重新执行程序对象期间,该计算机程序还准备好其通常的功能。即可用性已在最短时间之后又重复。因此,重复至少一个程序对象是一种处理暂态错误良好的方法。
根据本发明的有利的扩展方案,建议将程序对象构造为计算机程序的运行时间对象(以下称作特殊作业)并且在错误的检测中重新执行至少一个作业。作业尤其是操作系统层上是典型对象。如果希望甚至纯粹软件地控制,则作业的重复能用最小的开销来实现。
根据本发明的优选的实施形式,建议重新启动在错误发现的时刻所执行的程序对象。但是替换地或者附加地,也能启动或者重新执行程序对象,该程序对象在检测到错误的时刻已经被完全执行。
建议在执行计算机程序期间特别是开始执行计算机程序时产生并且存储程序对象的至少一个被定义的状态。这例如能通过这样的方式来实现,即存储所有对程序对象的状态相关的参量的值。
此外,建议为了错误发现使用相对于其上执行具有多个程序对象的计算机程序的计算设备冗余工作的其它设备。不言而喻,也将多于一个的冗余计算设备用于错误检测。
有利地,根据本发明的方法应用在汽车中,特别是应用在汽车控制设备中,尽管在执行计算机程序时不可避免暂态错误但是保证了计算机程序的执行安全和可靠。这特别是在汽车中对安全要求严格的应用中的控制程序和/或调节程序的执行是重要的。
此外,还建议:当在重新执行至少一个程序对象时重新出现相同的错误,则推断出永久错误。也可考虑的是,当在重复程序对象可规定的数量之后还始终出现错误,才推断出永久错误。即在这样的情况下,如果在第三次或者更后面重复程序对象之后错误消失,则还推断出暂态错误。通过本发明的扩展方案,重要的程序对象能被重复3次而不是仅仅2次。
根据本发明的另一有利的扩展方案,建议了至少一个程序对象的重复的数量被限制在预给定的值上。由此防止:在永久错误时随便经常地重复相同的程序对象。例如借助计算器或者通过时间限制来实现对至少一个程序对象重复的数量的限制。此外通过预给定与作业相关的重复值还能够实现比不是很重要的作业更经常地重复重要的作业,并且因此提供比不是很重要的作业更经常或者更长地为重要的作业提供可能性,而没有暂态错误无错误地运行,在不是很重要的作业中相对迅速地推断出永久错误并且引起另一系统反应。
根据本发明的另一优选实施形式,建议了至少一个程序对象的重复的数量动态地被限制在可规定的值上。优选地,至少一个程序对象的重复数量根据用于调度的剩余复位时间被动态地限制在可规定的值上。以这样的方式例如能通过第一作业和第二作业,而第三作业能被多次重复。
为了实现根据本发明的方法,建议了在执行计算机程序期间在执行程序对象之前存储执行程序对象所必需的或者定义程序对象的状态的参量。即根据该实施形式,存储所有程序对象的参量的值。
作为替代方案,建议了在一个周期内周期待执行的计算机程序中当对确定的程序对象检测到错误时回跳到在计算机程序的周期中的预给定的回跳点。根据该实施形式,即在错误的情况下在该周期内始终回跳到相同的位置。优选地,在执行计算机程序期间只有在执行程序对象之前在回跳点主要用于与程序对象相关的参量被存储。即在回跳点对每个循环或者周期仅仅必需存储程序对象的相关参量一次。由此,能够节约存储的时间和存储的位置。
接着在检测到错误之后重新执行程序对象时,调用被存储的输入量并且被提供给重新被执行的程序对象作为输入量。
作为本发明的另一实施形式,建议了为程序对象设置有多个回跳点。在出现错误时,不必重新执行整个程序对象,而是仅仅重新执行程序对象的一部分。在出现错误时,简单地回跳到那个前面经过的回跳点,直到程序对象的执行没有错误。例如,在直到第n回跳点无错误执行程序对象当在第n回跳点与第n+1回跳点之间出现错误时则能回跳到第n回跳点。因此,该程序对象从第n回跳点起被重新执行。因此,可能节约时间。优选地,在超过任何回跳点时在执行程序对象期间分别产生和存储至少一个被定义的状态。
特别重要的是,以操作系统的形式实现根据本发明的方法。在这样的情况下,操作系统能运行在计算设备上尤其是能运行在微处理器上并且当操作系统运行在计算设备上时为了实施根据本发明的方法编程操作系统。在这样的情况下即本发明通过操作系统来实现,使得该操作系统以相同的方式如操作系统适于其实施的方法来表示本发明。该操作系统优选被存储在存储器元件上并且为了执行而传送给计算设备。作为存储元件尤其是可应用任何数据载体或者电子存储器介质,例如随机存储器(RAM)、只读存储器(ROM)或者闪速存储器。
作为本发明的作业的另一解决方案,从前面所述类型的计算设备出发建议了,计算设备具有错误处理机制,该错误处理机制在检测到错误时通过错误发现机制引起至少一个程序对象的重新执行。
根据本发明的有利扩展方案,建议了错误处理机制具有触发逻辑,该错误触发逻辑在检测到错误时重新启动至少一个程序对象。
根据优选的实施形式,建议了实时操作系统例如OSEK运行在计算设备上。最后,建议了计算设备包括微处理器。
附图说明
本发明的另一些特征、应用可能性和优点从以下在附图中所表示的本发明的实施形式的说明中得到。在这样的情况下,所有所描述的或者所表示的特征本身或者以本发明的主题的任意组合,与其在权利要求中的结合或者其回引无关地或者与其表达或者图示无关地形成在说明书中或形成在附图中。其中:
图1示出了按照其优选实施形式的根据本发明的方法的流程图;
图2大致示出了根据其优选实施形式的根据本发明的计算设备;
图3由图3a和3b组成地示出了根据本发明的用于结合作业重复的方法;
图4示出了由图4a和图4b组成的一个根据本发明的延伸用于包容进作业重复的第二方案,且
图5示出由图5a和图5b组成的一个根据本发明的延伸用于包容进作业重复的第三方案。
具体实施方式
本发明涉及一种用于在计算设备上尤其是在微处理器上执行计算机程序的方法。该计算机程序包括多个程序对象,这些程序对象优选构造为作业。在该方法中在计算设备上执行计算机程序期间检测到错误。被检测到的错误可以是暂态(即暂时的)或者永久错误。
在计算设备上执行计算机程序期间会出现暂态错误。因为计算设备的半导体模块(所谓芯片)上的结构越来越小,但信号的时钟频率越来越大以及信号的电压越来越低,所以在计算设备上执行计算机程序时越来越频繁地出现暂态错误。与永久错误相反,仅仅暂时出现错误并且在一段时间之后通常又消失。在暂态错误中,仅单个位是错误的,而计算设备本身没有永久地损害。暂态错误能有不同的原因,如例如电磁辐射、α粒子或者中子。
由于暂态错误几乎不可预测地出现并且因此不能重现的事实,在现有技术公知的计算设备中基本上仅对永久错误进行错误处理。暂态错误的考虑限于错误计数器的累加和必要时递减。该错误计数器被设置在存储器中并且能够离线地即例如在构造为汽车控制设备的计算设备中在车间停留期间作为诊断或者错误信息被读出。接着才会对错误相应地反应。公知的错误处理即尤其是对安全相关的系统所必需的短暂容错时间内不允许错误处理,而另一方面在这个意义上也不允许构造性的错误处理,即在容错时间内因此计算机程序又被执行并且计算设备能完成其通常的作业。
与此相反,根据本发明的方法允许通过系统地、结构地应对大多数错误的暂态性质来处理运行于计算设备上的计算机程序的暂态错误。根据本发明的流程图例如运行对象、所谓作业表示在图1中。其它作业的存在没有影响原则上过程,即省去考虑。这样如根据图1所表示的过程来执行作业,即根据本发明还能执行多个作业。并行工作的错误发现机制是特别有利的(所谓并发检验)。但是在流程图中并没有这样表示它,它作为串联模块附装在相应位置上。
在功能块1中开始根据本发明的方法。在功能块1中在计算设备上开始作业的执行,该作业被调用。在功能块2中,产生回跳点。为此目的,足够将作业置于用于重新启动的被定义的状态中并且再次启动作业的作业输入量存储在计算设备的存储元件中。优选地,作业的所有输入量被存储。接着在功能块3中进一步执行作业。在另一回跳点或者直到作业的结束能够进行执行。因此,错误发现机制被执行。错误检测能按照任意方法来进行。在执行计算机程序(所谓并发检验)期间检测到错误。这样例如在双核架构中,双倍地构造整个计算机核。当计算机核以锁步模式工作,对任何指令能比较,计算机核是否提供相同的结果。于是这些结果的不同肯定能够推断出存在错误。这种错误发现机制实时发现执行程序对象期间的错误。相应地,也适于错误发现的代码,该代码被连续地用于处理器架构中,或者适于计算设备的相同的部分组件。优选地使用这种错误发现机制,当检测到错误时迅速地发现暂态错误并且提供相应的错误信号。
在询问块4中检验,错误即暂态或者永久错误是否被发现。如果错误被发现,则在另一询问块7中被分叉,在那里错误计数器逻辑的当前值被检验。如果错误计数器还未低于可规定的值(在递减的错误计数器中)或者超过(在累加的错误计数器中)时,还能执行在其处理期间出现错误的作业一次,或者确定数量的在出现错误之前被执行的作业还能被执行一次。如果可以重新启动作业的执行,则在功能块8中被分叉,在该功能块中错误计数器逻辑的状态用出现另一错误的信息来更新(递减或者累加)。从那里在功能块5中被分叉,在该功能块中存储在功能块2内的量被加载并且在开始执行时提供用于产生被定义的状态的作业。接着,朝功能块3被分叉,在那里待重复的作业部分即例如从已被执行过的回跳点出来,或者但作为完整的即该作业从开始还被启动一次,还被执行一次。
如果在询问块4中得到在功能块3中执行作业期间没有出现错误,则在功能块9中分叉,在该功能块中用没有检测到错误的信息更新错误计数器逻辑的状态。从那里出来,在询问块11中被分叉,在那里检验计算机程序是否被执行到结束。如果是这样,则在结束计算机程序时在功能块6中被分叉。如果不是,在功能块12中被分叉,在那里根据当前的作业状态产生另一回跳点,其方式是定义并且存储安全的相关作业输入量,该量足够再次启动作业。从那里出来,接着又向功能块3被分叉,在那里待重复的作业又重新被启动并且部分或者全部地还被执行一次。
如果在询问块7中得到,由于错误计数器逻辑的状态而不再可以进一步尝试以重新执行作业,则在功能块10中被分叉。在询问块7中检验,用于该作业的错误计数器逻辑的值是否比作业相关的重复值大。作业相关的重复值可针对各种作业相同地预给定或者,但是也可各自针对每个作业单独预给定。以这样的方式可能的是,例如在发现永久错误之前,首先多次重复特别重要的作业。当作业相关的重复值被预给定为1时,该作业仅在检测到永久错误之前,仅被重复一次。如果作业相关的重复值被预给定为2或者3,则在检测到永久错误之前作业被重复2次或者3次。在这样的情况下,即该作业具有更长的时间、或者更多的运行,直到不再出现暂态错误。在功能块10中检测到永久错误并且采取相应的措施。该措施例如可以是,将计算机程序转移到应急工作或者首先采取措施而接着结束计算机程序过程。
根据本发明的方法不必一定包括所有在图1中所表示的和上面所阐述的功能和询问块。这样,例如省去了块7至9,这些块涉及错误计数器逻辑。在检测到错误时,该将要被重新启动和执行的作业这样长地被重复,直到不再出现错误。没有检测到永久错误,使得也能去掉功能单元10。替换地,作业相关的重复值能被预给定为1,使得能去掉用于更新错误计数器的功能块8和9。最后,当用唯一的回跳点执行唯一作业时,也可以省去块11和12。
在图2中,表示用于根据其优选的实施形式执行计算机程序的根据本发明的计算设备。计算设备在其整体上用参考标号20表示。计算设备包括存储器元件21,该存储器元件例如构造为电子存储器特别是构造为闪存存储器。此外,计算设备20还包括微处理器22,在该微处理器上计算机程序能被执行。计算机程序被存储在电子存储器介质21上并且用参考标记23表示。为了在微处理器22上执行计算机程序,计算机程序作为整体或者分段地例如逐指令地通过数据连接24传输给微处理器。数据连接24可以构造为一个或者多个数据线或者构造为用于数据传输的总线系统。此外,在存储介质21上还存储有操作系统,在引导计算设备20时至少部分从存储器21向微处理器22传输并且在那里被执行。该操作系统用参考标记25表示。该操作系统具有管理和控制计算机程序23在微处理器22上的执行以及连接到计算设备20的周边设备的作业。根据本发明,操作系统25以特别的方式构造,使得当操作系统在微处理器22上运行时为了实施根据本发明的方法来编程它并且实施根据本发明的方法。尤其是,操作系统25包括进入错误发现机制的入口用于检测在微处理器22上执行计算机程序23期间的错误。此外,操作系统25还包括错误处理机制,该错误处理机制在检测到错误时引起重新执行计算机程序23的至少一个程序对象(作业)。
因此,在根据本发明的系统策略的框架下建议了一种方法、一种操作系统以及计算机设备,该系统策略允许以最小或者甚至没有执行开销结合作业重复的概念。
在这样的情况下,系统策略被作为基础,该系统策略在各个不同的前提条件下使执行开销最小并且由此使成本最小。通常,在这样的情况下,前提是提供尤其是已描述的错误发现机制,在作业的运行中能发现错误(例如双核机制,具有冗余执行)。此外,在此特别,为了发现永久错误,必需扩展例如如上所述的错误计数器。
在根据本发明的用于结合作业重复的策略中,如在图3中描述的那样,几个前提能被考虑到。
至少两类作业(例如关键和非关键的作业)被区分。在这样的情况下,已经不将错误发现机制用于所有类的作业和/或并不针对所有类的作业实施作业重复。
在图3的例子中,区分两类作业,在这些作业中只有在一类中实施和/或只有在一类中启动错误发现机制。在区分关键作业和非关键作业时,同样根据本发明在关键作业中错误被捕获,尤其是只被用于第一类错误发现机制。在这样的情况下,关键作业是这种作业,即在其中对系统的整个功能或者基本功能必需正确的执行并且必须在确定的时刻稍后进行,以便获得该功能。非关键作业是这样的,即在其中整个系统功能或者也有基本功能并不涉及或者并非主要地被限制。尤其是,在该系统中在这样的情况下在对安全严格和对安全不严格的功能之间进行区分。
第二类即:不关键类2的作业中的暂态错误可能被忽视。此外如所述的那样:第二类作业也不允许轮到一次,即从系统角度来看并没有严重的后果,当第二类作业在作业处理循环中并未被调用。此外,第一关键类1的作业的总运行时间所占百分比应当最好不要超过过程或者作业处理循环的总计算时间中由特定系统所决定的百分比(例如50%)。在这样的情况下,关键作业在平均划分成关键和非关键作业时被分配总共最多50%的总计算时间,使得在所有关键作业有错误的最坏情况下能够重新启动或者计算这些作业。
因此,根据图3的系统是可能的,在该系统中各种类这样交替,使得作业T1的“接替者”S1(类2)在调度表中获得至少如T1的WCET(最坏情况执行时间)一样的时间。
因此,基本构思是:在出现暂态错误时在T1中代替S1再次计算T1。由此保证了,T1中的错误在计算T2之前被消除。由此在作业的计算时间内发生错误识别和错误处理(包括在保持容错特性的情况下很可能的处置)。
在图3中对此在类1的作业T1、T2和T3与类2的作业S1、S2和S3之间进行区分。在无错误地执行时,在图3a中示例性地示出了作业序列T1、S1、T2、S2、T3、S3。在T1期间出现暂态错误时根据图3b在S1时间中再次计算作业并且接着计算T2、S2、T3、S3,使得暂态错误得以校正。
图4示出了包容作业重复的另一个系统方案,图4包含图4a和图4b。在此所述系统应适合较小的跳动(以一个作业计算时间的数量级)。这最好通过采用平台机制(首先是操作系统)贯彻。在此,在图4a中示出在无错误地执行的情况下作业T1、T2、T3、T4、T5和S的循环。
又是应当至少有两类的作业(例如上述的关键和非关键的),其中在此于举例中只在一类的情况下进行作业重复,和/或只在一类的情况下起动错误发现机制。在区分为关键和非关键的作业的情况下,根据本发明只截取关键作业中的错误,特别是只对第一类采用错误发现机制。这是图3所示的情况下。
从而在此还可以忽略第二类的作业中的暂态错误。在此还成立:如果在一个作业处理循环没有调用该第二类的一个作业,还不“应当轮到”一次该第二类的作业,就是说它从系统层没有重要的后果。最后每次过程或者周期,也就是一个作业计算循环必须至少有一个持续得与最长的关键作业那样长时间的非关键作业。这至少可以把一个非关键作业也实现成空闲时间,这当然也对图3的实施例成立。
例如现在假定:在一次运行周期中有作业T1...至...Tn(在此n为自然数,在此为5),它们全都是关键的,并且应当按该序列执行。此外在Tn以后还有至少一个作业S是非关键的并且长于每个单个的Ti。这时在图4b中在作业T3中出现一个暂态错误。在Ti中检测到一个错误的情况下对应于图4b简单地立即重复作业Ti,并且把其余的,也就是T4和T5向后延迟。如果在这轮循环中只出现一个暂态错误,就不会有关键的作业受到忽略并且不会在执行中向后延迟超过最大的作业长度。从而在此是否在多个错误的情况下不执行关键的作业,直接取决于非关键作业的长度或者空闲时间S。出于安全性的原因,在此还可以如此地选择第一类的、关键的作业全部运行时间,使之不占用一次运行或者一个作业处理循环的一个确定的由系统决定的百分数(例如50%)。在此也是在平均分配关键和非关键的时间时向关键作业最多总共指派总计算时间的50%,从而在最差的情况下,即如果所有关键作业都错误的情况下可以把它们重新开始和重新计算。
包含图5a和图5b的图5示出另一个方案,其中成立实质上相符的前提。在此适用于有较大跳动(在一次运行的数量级)。这必须通过采用平台机制,特别是用操作系统贯彻。还是有至少两类的作业(例如关键的T1-T5和非关键的S)。在此还是只对第一类(T1-T5)采用错误发现机制。在此也可以忽略第二类的一个作业中的暂态错误。此外应当成立如果在一个作业处理循环没有调用该第二类的一个作业,还不“应当轮到”一次该第二类的作业,就是说它从系统层没有重要的后果。最后,每次运行或者周期应当有至少一个非关键的作业持续得象最长的关键作业那样长(在此还可以实现为空闲时间)。(如以上在图3和图4的情况那样的考虑)。
假定在一轮周期中有应当在该轮周期中执行的作业T1、...、Tn(都是关键的)。此外在Tn以后还至少有一个非关键的,并且比每个单个的Ti长的作业S。对此在图5a中示出在一轮周期中按序列T1、T2、T3、T4、T5和S的无错误的作业的流程。
在Ti中(例如对应于图5b在T3中)检测出一个错误的情况下把Ti(T3)的结果解释为不相干的,并且与前述实施例相反执行完其它的作业(T4、T5)。在完成了Tn(T5)之后,再次计算Ti(T3)。在此,前提是一种不要求一轮的作业的结果不再为同一轮的其它作业(必须地)所需,因为在此不遵守所述作业的序列。
该系统方案根据对图1和2的介绍采用相应的装置来实施,使得在公开方面根据本发明每个实施形式明确地可与任何其它实施形式组合。
由此,根据本发明能够在暂态错误方面实现最佳的FO特性(FO:Fail Operation(al),Fault Operation(al)),甚至以很小的康复时间,该康复时间重新自行恢复FO特性。该方案也很好地用在时间控制的系统中并且能进行优化。

Claims (14)

1.用于执行在计算机设备(2)上的计算机程序(23)的方法,其中所述计算机程序(23)包括多个程序对象,并且在所述方法中,在执行计算机设备(20)上的所述计算机程序(23)期间进行错误检测,
其特征在于,
所述程序对象被分成至少两类,其中在检测到错误时,重新执行第一类程序对象,并且在检测到所述第一类的一个已经被执行过的程序对象的错误时,把该第一类的检测到错误的程序对象转入到一个定义的状态,并从该状态重新起动所述第一类的检测到错误的程序对象,延迟第一类的随后的另外的程序对象,而对第二类程序对象则不重新执行。
2.根据权利要求1所述的方法,
其特征在于,
仅在被重新启动的类中实施错误检测。
3.根据权利要求1所述的方法,
其特征在于,
对于所有程序对象在循环中设置总计算时间并且把所述总计算时间划分成:使得第一类的在检测到错误时被重新启动的程序对象在无错误的情况下获得循环中的总计算时间的至多50%。
4.根据权利要求1所述的方法,
其特征在于,
不同类的程序对象按照交替方式被执行。
5.根据权利要求1所述的方法,
其特征在于,
所述第一类的有错误的程序对象代替紧接其后的第二类程序对象而被执行。
6.根据权利要求1所述的方法,
其特征在于,
所述程序对象构造为所述计算机程序(23)的作业,并且在检测到错误时重新执行至少一个作业。
7.根据权利要求1或者6所述的方法,
其特征在于,
在检测到错误时被执行的程序对象重新被启动。
8.根据权利要求1所述的方法,
其特征在于,
在执行所述程序对象时,尤其是在开始执行程序对象时产生并且存储程序对象的至少一个被定义的状态。
9.根据权利要求1所述的方法,
其特征在于,
所述方法被用于汽车中尤其是被用在汽车控制设备中。
10.根据权利要求1所述的方法,
其特征在于,
在执行所述计算机程序(23)期间,在执行所述程序对象之前存储执行计算机程序所需参量的值。
11.根据权利要求1所述的方法,
其特征在于,
在一个周期内的将要周期执行的计算机程序(23)中,当对确定的程序对象检测到错误时回跳到在所述计算机程序(23)的周期中的可规定的回跳点上。
12.用于执行计算机程序(23)的计算设备(20),所述计算机程序包括多个程序对象,其中所述计算设备(20)具有错误发现机制以在执行所述计算设备(20)上的所述计算机程序(20)期间检测错误,
其特征在于,
所述程序对象被分成至少两类,所述计算设备(20)具有错误处理机制,该错误处理机制在检测到第一类的一个已经被执行过的程序对象的错误时,把该第一类的检测到错误的程序对象转入到一个定义的状态,并从该状态重新起动该第一类的检测到错误的程序对象,延迟第一类的随后的另外的程序对象,而对第二类程序对象则不重新执行。
13.根据权利要求12所述的计算设备(20),
所述错误处理机制具有触发逻辑,所述触发逻辑在检测到所述第一类的已经被执行过的程序对象的错误时重新启动该第一类的检测到错误的程序对象。
14.根据权利要求12所述的计算设备(20),
其特征在于,
在所述计算设备(20)上运行实时操作系统(25)。
CNB2005800364967A 2004-10-25 2005-10-19 执行计算机程序的方法、操作系统以及计算设备 Expired - Fee Related CN100511165C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102004051967A DE102004051967A1 (de) 2004-10-25 2004-10-25 Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
DE102004051967.6 2004-10-25

Publications (2)

Publication Number Publication Date
CN101048742A CN101048742A (zh) 2007-10-03
CN100511165C true CN100511165C (zh) 2009-07-08

Family

ID=36129013

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800364967A Expired - Fee Related CN100511165C (zh) 2004-10-25 2005-10-19 执行计算机程序的方法、操作系统以及计算设备

Country Status (7)

Country Link
US (1) US7711985B2 (zh)
EP (1) EP1812853B1 (zh)
JP (1) JP4596488B2 (zh)
CN (1) CN100511165C (zh)
AT (1) ATE413646T1 (zh)
DE (2) DE102004051967A1 (zh)
WO (1) WO2006045733A2 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008011848A1 (de) * 2006-07-26 2008-01-31 Nokia Siemens Networks Gmbh & Co. Kg Verfahren und system zur erneuten berechnung von gebühren eines bereits mit anderen, auch fehlerhaften tarifparametern vergebührten ereignisses
EP2568346B1 (en) * 2011-09-06 2015-12-30 Airbus Operations Robust system control method with short execution deadlines
US9734006B2 (en) * 2015-09-18 2017-08-15 Nxp Usa, Inc. System and method for error detection in a critical system
US11305810B2 (en) 2020-04-24 2022-04-19 Steering Solutions Ip Holding Corporation Method and system to synchronize non-deterministic events

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3248697A (en) * 1962-11-27 1966-04-26 Ibm Error classification and correction system
US5138708A (en) * 1989-08-03 1992-08-11 Unisys Corporation Digital processor using current state comparison for providing fault tolerance
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5815651A (en) * 1991-10-17 1998-09-29 Digital Equipment Corporation Method and apparatus for CPU failure recovery in symmetric multi-processing systems
US5530802A (en) * 1994-06-22 1996-06-25 At&T Corp. Input sequence reordering method for software failure recovery
JPH10326220A (ja) * 1997-05-27 1998-12-08 Toshiba Corp ファイルシステムおよびファイル管理方法
JPH117431A (ja) * 1997-06-16 1999-01-12 Hitachi Ltd 複数コンピュータで実行する業務の障害回復システム
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US20040064756A1 (en) * 2002-09-26 2004-04-01 Sudarshan Kadambi Method and apparatus for improving reliability in computer processors by re-executing instructions
FR2869430A1 (fr) * 2004-04-27 2005-10-28 St Microelectronics Sa Controle de l'execution d'un algorithme par un circuit integre
DE102004037713A1 (de) 2004-08-04 2006-03-16 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
A Fault-tolerant TechniqueforSchedulingPeriodicTasksinReal-time Systems. Y.S.Hong,et al.Software Technologies for Future Embedded and Ubiquitous System,2004.Proceedings,Second IEEE Workshop on. 2004
A Fault-tolerant TechniqueforSchedulingPeriodicTasksinReal-time Systems. Y.S.Hong,et al.Software Technologies for Future Embedded and Ubiquitous System,2004.Proceedings,Second IEEE Workshop on. 2004 *
Imprecise Computations. Jane W.S.Liu,et al.Proceedings of the IEEE. 1994
Imprecise Computations. Jane W.S.Liu,et al.Proceedings of the IEEE. 1994 *
The Transient Server ApproachtoSchedulingTime-CriticalRecovery Operation. Sandra Ramos-Thues, et al.Real-Time Systems Symposium,1991.Proceedings.,Twelfth. 1991

Also Published As

Publication number Publication date
US7711985B2 (en) 2010-05-04
CN101048742A (zh) 2007-10-03
JP4596488B2 (ja) 2010-12-08
EP1812853A2 (de) 2007-08-01
EP1812853B1 (de) 2008-11-05
DE102004051967A1 (de) 2006-04-27
WO2006045733A2 (de) 2006-05-04
ATE413646T1 (de) 2008-11-15
DE502005005915D1 (de) 2008-12-18
WO2006045733A3 (de) 2006-07-20
US20080162989A1 (en) 2008-07-03
JP2008518292A (ja) 2008-05-29

Similar Documents

Publication Publication Date Title
CN100538644C (zh) 执行计算机程序的方法、计算设备
CN101243407B (zh) 用于控制计算器系统的方法和装置
CN1993679B (zh) 执行计算机程序的方法、操作系统和计算设备
US8677189B2 (en) Recovering from stack corruption faults in embedded software systems
CN112015599B (zh) 错误恢复的方法和装置
CN100549946C (zh) 用于执行数据处理操作的装置和方法
CN101313281A (zh) 用于在包括至少两个具有寄存器的执行单元的系统中消除错误的装置和方法
CN102640119B (zh) 用于运行计算单元的方法
WO2018083441A1 (en) Main processor error detection using checker processors
JP2008518308A (ja) マルチプロセッサシステム内のデータを分配するための方法およびデータ分配ユニット
CN101216792B (zh) 实时操作系统的任务管理方法、装置
US20050097398A1 (en) Program debug method and apparatus
CN100511165C (zh) 执行计算机程序的方法、操作系统以及计算设备
CN103226499A (zh) 一种恢复内部存储器中的异常数据的方法及装置
CN108694094A (zh) 用于处理存储器访问操作的装置和方法
US20080133975A1 (en) Method for Running a Computer Program on a Computer System
JP4754635B2 (ja) 制御フロー保護機構
CN106547606B (zh) 堆栈自检方法及装置
CN105988885B (zh) 基于补偿回滚的操作系统故障自恢复方法
CN101158920B (zh) 一种检测操作系统故障的方法和装置
JP3746957B2 (ja) 論理分割システムの制御方法
Watanabe et al. Design fault tolerance in operating systems based on a standardization project
KR20230160003A (ko) 소프트웨어 수행 순서 오류 검출 모니터링 방법
JP2017520851A (ja) トランザクションにおけるレジスタの動的なセーブ
JPS63263543A (ja) マルチレベルプログラミング方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

Termination date: 20161019

CF01 Termination of patent right due to non-payment of annual fee