CN102591736A - 用于在实时操作系统的实施中识别错误的方法 - Google Patents
用于在实时操作系统的实施中识别错误的方法 Download PDFInfo
- Publication number
- CN102591736A CN102591736A CN2011104100363A CN201110410036A CN102591736A CN 102591736 A CN102591736 A CN 102591736A CN 2011104100363 A CN2011104100363 A CN 2011104100363A CN 201110410036 A CN201110410036 A CN 201110410036A CN 102591736 A CN102591736 A CN 102591736A
- Authority
- CN
- China
- Prior art keywords
- instance
- processor
- data
- firmware
- hardware access
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1487—Generic software techniques for error detection or fault masking using N-version programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及一种用于在实时操作系统的实施中识别错误的方法,其中实时操作系统的逻辑相同的实例(106;116)在共用的虚拟化环境中的第一处理器(520)的至少两个处理器核心(100;102)上并行地实施,其中系统管理程序(128)监测实例(106;116)的并行实施,其中在执行通过实例(106;116)引发的硬件访问时,通过系统管理程序将在对于每个实例(106;116)的硬件访问时传输的数据相互比较,其中,在传输的数据之间出现差别的情况下,或者在单方面的通过实例之一引发的硬件访问的情况下,通过系统管理程序(128)识别为是错误。
Description
技术领域
本发明涉及一种用于在执行实时操作系统的实施中识别错误的方法、一种计算机程序产品、以及一种用于在实时操作系统的实施中识别错误的装置。
背景技术
多种现代化的处理器当前提供了更多处理器核心和虚拟化技术。在此,使用了所谓的系统管理程序(Hypervisor)。在此,这是指一种软件,该软件通过应用虚拟化技术使得一个或多个客户操作系统在真实的硬件上运行,并且在此管理能使用的资源。资源在此可以被分配给客户,也可以处于在系统管理程序控制下。与前面的能使用的技术相比,以较小的性能缺陷使其实现并且不会干预客户操作系统。
首要的目标在于,最佳地充分利用现有的高处理器效率,这由此实现,即为各个处理器核心分配不同的任务。因此例如可以在一个核心上委托具有控制任务的、有实时能力的操作系统,而在另一个核心上应用标准操作系统、如Windows系统,以对进行的过程虚拟化。
在执行实时操作系统时的一个问题在于,即必须针对错误的实施对该系统进行保护。程序错误、以及硬件方面的错误可以特别在自动化系统中导致自动化系统引起错误的产品生产或产品加工,或者使自动化系统的完全关闭。在所有情况下产生了较大的经济损失,其可能通过适合的错误识别机构,在实时操作系统的实施中被避免。
发明内容
因此本发明的目的在于,提出一种方法、一种计算机程序产品以及一种装置,用于在实时操作系统的实施中识别错误。
本发明的目的通过独立权利要求所述的特征来实现。本发明的优选的实施方式在从属权利要求中给出。
在此提出了一种用于在实时操作系统的实施中识别错误的方法,其中实时操作系统的逻辑相同的实例(Instanz)在共用的虚拟化环境中的第一处理器的至少两个处理器核心上被并行地实施,其中系统管理程序监测实例的并行实施,其中在执行通过实例引发的硬件访问时,通过系统管理程序将在对于每个实例的硬件访问时传输的数据相互比较,其中,在传输的数据之间出现差别的情况下,或者在单方面的通过实例之一引发的硬件访问的情况下,通过系统管理程序识别为是错误。
本发明因此提出了一种系统保护的方案,其中系统管理程序用于并行处理用于控制任务的实时操作系统(在下面也称为固件)的多种不同的版本。目的在于,识别出在两个核心上的处理过程中的差别,以及例如可能由于数据失真而对用户产生损害之前,停止所分配的自动化系统中的控制。
表面上,利用在此提出的用于确保用户的系统安全的措施使得控制器的系统性能不发生变化。必须分别在产品特性方面考虑对于性能、特别是处理速度以及等待时间的影响。
在固件的行动不同时需要系统管理程序的相互作用(例如访问虚拟的或真实的硬件)。在这种情况下,对虚拟机的处理被中断,并且将中断原因通知给系统管理程序。对于虚拟化软件也可能的是,通过对特殊的操作码(Hypercall超级调用)的处理,中断虚拟机,以便帮助系统管理程序做准备工作。
两种类型的中断可以用于使得虚拟化的固件实例的工作-或中间结果实现匹配(Abgleich)。
所述类型的在中断时的匹配在下面称为“同步点”。
因此实现了一种控制实例,其在控制器的内部的执行中识别出错误,并且可以相应地作出反应。可以因此如在下面还要进一步探讨地,有助于解决由于未识别的存储器错误引起的错误运行的问题,这并不能在所有情况下都利用前述的解决办法来实现。
最少所需要的匹配包括检测写在硬件上的数据和分配由硬件读取的数据。如果应该描述不同的数据,达到不同的同步点或者单方面地达到仅仅一个同步点,则因此可以假定固件发生故障。
根据本发明的一个实施方式,通过实例之一引发的硬件访问是直接的硬件访问或者是在应用半虚拟化的情况下通过超级调用实现的硬件访问。
基本上,固件通过例如输入-和输出区域(I/O端口)、存储器映像设备(memory mapped device)、中断请求(interrupt)和直接存储器访问(directmemory access-DMA)和硬件集成在一起。所有这些相互作用可以而且必须通过系统管理程序实现匹配和同步。
硬件访问在此基本上可以借助于两个方法来实现。一方面可能的是,使虚拟化的固件中的硬件驱动器保持原状,并且对系统管理程序中产生的硬件访问进行拦截和匹配(硬件虚拟化)。其它可能性在于,将硬件驱动器的最下层移动到系统管理程序中,并且通过超级调用实现对其的访问(半虚拟化)。
在硬件虚拟化的情况下,在I/O端口和存储器映像设备上的硬件访问可以通过系统管理程序拦截和处理。在通过中断请求实现与硬件相互作用的情况下需要注意的是,不允许在不同的位置上中断两个虚拟化的固件实例。这可以由此实现,即通过系统管理程序拦截所有的中断请求,并且在同步点处将其注入虚拟化的固件中。另一个可能性在于,以封锁中断请求的方式运行固件,并且有规律地在等候处理的事件中查询前面的中断请求源(Polling轮流检测)。
为了对具有DMA能力的硬件进行处理,对于硬件或系统管理程序存在附加的要求。DMA访问仅仅在一个物理地址上实现,因此系统管理程序为了对存储器内容进行比较或匹配而必须识别和处理存在的DMA传输装置。可以低投入地仅仅通过在虚拟化固件的具有DMA能力的驱动器中插入同步点来满足这种要求,其使得对于系统管理程序而言能简单地识别是否存在DMA指令(Auftrag)。
在半虚拟化的解决办法中,如上述地,使得驱动器连同中断请求-和DMA-处理一起移动到系统管理程序中。驱动器的调用通过超级调用来实现。在已经实现处理之后,该结果通过注入中断请求或者通过设定存储单元通知虚拟化的固件实例。
在决定了选择哪个驱动器模型时,应该权衡研发投入与性能的关系。如果性能被优先考虑,则将硬件驱动器扩展到系统管理程序中。
根据本发明的一个实施方式,硬件访问包括存储器访问,其中在执行通过实例引发的存储器访问时,实例访问了共用的存储器。
例如,在应用对于两个实例的相同的虚拟化地址空间时进行存储器访问,其中虚拟化地址空间分配有对于每个实例的不同的物理地址空间。固件的实例可以在这种情况下分别具有相同的虚拟化地址空间,其被分配给不同的物理地址空间。因此可以运行固件的完全相同的版本。
可替换地,在应用对于两个实例的不同的虚拟化地址空间时实现存储器访问。两个固件实例必须在这种情况下处于不同的定位位置。为了简化系统管理程序的编程,不同的虚拟化的地址空间可以和所属的物理地址空间保持相同,但这不是对于所述的方法的必要的前提条件。
如果控制器的存储器能被所有核心访问,则系统管理程序可以通过对页-表格相应地编程用于实现适合的存储器分配和访问保护。虽然没有对于实现系统保护的必要的前提条件,但是通过在固件实例彼此之间的横向访问以及由系统管理程序中的固件实例立即避免了错误。系统管理程序自身持续访问其客户的存储器、即在其控制之下运行的固件实例。
两个所述的变体-相同的或不同的虚拟化地址空间-具有独特的优点:
因此基本上足以识别通过硬件错误而损坏的储存器,从而使得相同的硬件实例并行地运行。处理随后相关于编码和数据在相同的虚拟地址上进行,然而强制性地在不同的物理地址上进行。对于数据而言,分别对于每个核心总归需要一个固有的存储器区域,对于程序编码而言其也是必需的,以便除了损坏的数据存储器之外也能识别损坏的程序存储器。最迟在将损坏的数据发出到硬件接口上或者在同步点上背离时察觉到工作结果中的分歧。
因此存储器保护的这种变体适合用于识别硬件错误,如存储器翻转(Speicherkipper)或通过具有DMA能力的装置进行错误访问。迄今为止仅可以在存储器中通过使用ECC-RAM来识别错误。相对于迄今为止的解决办法的优点在于这种可能性,即也可以利用使用标准RAM来识别这两种错误类型。
然而虽然在这种配置中能确定通过硬件引起的存储器错误,但是软件错误可能还保持为未被察觉。例如这可能引起无法借助于错误的指示器通过读和写来识别数据损坏,这可能是错误的固件编程的结果。因此有效的是,引入其它措施来使得固件多元化,然而不会不必要地在固件中带来附带的复杂性。
为了能识别这种数据失真,因此例如在控制器内部将两个处理器的固件设置在不同的虚拟化地址上。固件在此还是相同的,仅仅是地址在定位时是不同的。如果现在读或写突然选择的存储单元,则这导致了在控制器的两个处理器中的不同逻辑内容的错误解释或失真。如果处理了错误的数据或执行了错误的固件,则可以识别出该错误。
对于这个问题而言目前没有令人满意的解决办法。通过使用迄今为止可使用的方法、例如写入保护并不能确保完全的安全性。
根据本发明的另一个实施方式,对于不同的数据类型而言,共用的存储器的分配的存储器区域对于实例而言是不同的。
这能够实现识别由于超过存储区域界限的读和写而引起的-例如是由于对固件错误编程而引起的-数据损坏,因为在应用指示器时的另一个错误来源是超过为此可靠地设置的存储区域的寻址。在此,数据在原本的有效数据旁边是错误解释的或者是失真的。
为了识别这种错误类型因此提出,将数据类型的不同数据区域有区别地建立在两个在不同的抽象等级上的核心上。
这例如在最高的抽象等级(链路部段)上详细地涉及了数据类型、例如初始化的全局数据(例如..data)、未初始化的全局数据(例如..bss)、固定的数据(例如..rodata)、局部数据(堆栈区域)和程序数据(例如..text)。
例如可以从一种将数据分配给特定的存储区域的特定分配关系出发,对于固件实例之一而言,例如通过改变各个的链路部段的顺序实现在存储器区域上的重新分类,在更深的抽象等级中例如改变是链路部段或者堆栈中的变量-和函数顺序、将不同长度的不同的初始化的Dummy-变量和-函数引入链路部段中或堆栈中,或将未初始化数据和空存储器不同地初始化。
附加地,优选地在管理存储器资源时这样改变在不同的处理器上的初始化,从而在并行地要求资源时占据不同相邻关系的区域。
在此也解决了一个问题,对于该问题而言迄今为止还没有令人满意的技术方案。虽然可以通过处理器机构(Paging)确保数据的相邻性。然而这是粗略的,即在实践中对于单独的数据结构是不可用的。
总体上可以确定,即利用所述的方法可以保护存储器,也可以在此识别所述类型的存储器错误,迄今为止的方法在此处是失败的,或者出于费用原因而不能应用。在产品版本中不使用该方法的系统也可以由此获得好处,即在系统测试阶段期间临时地应用,以便显示出上述类型的程序错误。
在本发明的另一个方面中,在第二处理器上实施实时操作系统的至少另一个相同的实例,其中在错误识别的情况下将存在的错误通知给第二处理器。
这例如相应于上述的用于可用性高的控制器(H-系统)的方法的应用。可用性高的控制器(H-系统)由两个控制器组件(H-CPU)组成,它们通过特殊的通信模块相互连接。目的在于,当H-CPU之一发生故障或误操作时,能够在剩下的H-CPU上无冲击地继续在这个H-系统中运行的应用程序。
为了实现这个目的,用户程序、如由现有技术已知地,在两个H-CPU中并行进行。在此固件例如必须将输入-和输出的数据(例如外围数据、通信数据)在H-系统中单侧连接的情况下分配到两个H-CPU上,在两侧(冗余)连接的情况下,适合地使数据匹配。
两个H-CPU的固件在此对处理进行监控。当H-CPU发生故障时,剩下的H-CPU继续运行用户程序。当过程中出现差别时(冗余损耗),固件确保了,即那个H-CPU从H-系统中得出,其通过错误的处理产生了差别。错误性能的分配对于始发者而言是重要的。在H-CPU的固件的情况下,该分配特别由于其很高的复杂性而变得困难。
对于存储器安全所提出的方案对于在H-系统中的应用是有利的,这是因为能实现对错误的H-CPU进行可靠的识别。一旦H-CPU之一在其实时操作系统的实施中察觉到错误,它就通知给另一个H-CPU,其随后可以完全地承担控制任务。也就取代了仅仅一个在两个H-CPU的工作之间的差别进行确定,而无需知道哪个CPU现在是错误的,在当前情况下错误的CPU被识别为该CPU并且例如与所分配的自动化系统的运行脱离。
根据本发明的一个实施方式,通过将信号发送给第二处理器或者通过解除与第二处理器的通信连接来实现通知错误。
在另一个方面,本发明涉及一种具有用于执行根据前述权利要求所述的方法步骤的、能由处理器执行的指令的计算机程序产品。
在另一个方面,本发明涉及一种用于在实时操作系统的实施中识别错误的装置,其中该装置具有带有至少两个处理器核心的第一处理器,其中该装置设计用于在共用的虚拟化环境中的处理器核心上并行地实施实时操作系统的相同的实例,其中装置还具有系统管理程序,其中该系统管理程序设计用于监测实例的并行实施,其中系统管理程序还设计用于,在执行通过实例引发的硬件访问时,通过系统管理程序将在对于每个实例的硬件访问时传输的数据相互比较,其中系统管理程序设计用于,在传输的数据之间出现差别的情况下,或者在单方面的通过实例之一引发的硬件访问的情况下识别出错误。
附图说明
下面根据附图详细说明了本发明的优选的实施方式。图中示出:
图1示出用于在实时操作系统的实施中识别错误的装置的框图,
图2示出存储器布局的不同的可能性,
图3示出在应用超级调用接口的情况下在实时操作系统的实施中用于识别错误的装置的框图,
图4示出一种可能性,即对于不同的数据类型而言,如何能为实例区分共用的存储器的所属的存储器区域,
图5示出H-系统的框图。
以下相互类似的元件以相同的标号标出。
具体实施方式
图1示出用于在实时操作系统的实施中识别错误的装置的框图。在此如上述地应用了处理器,其具有两个以标号100和102标出的核心(核心0和核心1)。在每个核心上实施实时操作系统的一个实例,其中在图1中将实时操作系统称为“固件”。核心100的固件106和核心102的固件116在逻辑上相同并且在一个共用的虚拟化环境中并行地实施。需要说明的是,即固件实例仅仅“在逻辑上”相同,然而通过上述的用于实现多样化的措施能完全地在物理上彼此加以区分。在这种情况下,固件实例除了这种用于实现多样化的措施(例如不同应用的虚拟化地址空间)之外都是相同的。系统管理程序110在此监测了固件实例106和116的并行实施。在硬件虚拟化时进行硬件访问的情况下实现了相应的固件106和116对共用的硬件112的访问,其中系统管理程序110可以拦截这种硬件访问。这种对硬件访问的拦截在图1中以标号108和114使用概念“同步点”说明。
在此还要说明的是,即同步点为了提早识别错误也能与硬件访问无关地设定在固件中。
当在执行通过固件106或116引发的对硬件112的访问时,在硬件访问时所传输的数据通过系统管理程序110相互比较(标号128)。
由于两个固件106和116在逻辑上相同并且彼此并行地工作,因此在单方面的、通过固件106或116引发的对硬件112访问的情况下产生了决定,即在执行固件106或116时必然存在错误。同样地,系统管理程序110然后能将错误识别为这种错误,即在固件106和116并行地进行硬件访问的情况下,在此所传输的数据彼此有差别。
两个固件106和116分别形成了一个相同的、用于执行相应的应用程序104和118的实时操作系统,这些应用程序为了实现错误识别的目的而同样必须是相同的。
上述的硬件访问包括对存储器120的访问,其中在执行通过固件106和116引发的存储器访问时,两个固件对共用的存储器120进行访问。存储器120的一部分在此分配了固件106的区域122,并且存储器的另一个部分分配了固件116的区域124。另一个存储器区域126对于系统管理程序110来说是备用的。
图2现在示出了存储器布局的不同的可能性。在图2a中示出存储器布局,其中固件106和116的实例分别具有相同的虚拟地址空间。然而该虚拟地址空间被分配给存储器120中的不同的物理地址空间。这因此涉及了固件106和116所运行版本绝对相同的情况。
在图2b中相反地示出了分配不同的虚拟地址空间的可能性,其中在这种情况下两个固件实例106和116被不同地定位。如上面已经详细探讨地,这能实现借助于错误的指示器通过读和写来识别数据错误。
图3示出在实时操作系统的实施中用于识别错误的装置的框图。和图1不同地,在图3中实现了利用半虚拟化的硬件访问,这如上述地表明,即相应的硬件驱动器移动到系统管理程序110中。以标号300和302标出的“超级调用接口”是一种软件接口,其能实现,使得系统管理程序110的结构简化并且以提高的功率实施固件实例106和116。
图4示出一种可能性,对于不同的数据类型而言,如何能为实例区分共用的存储器的所分配的存储器区域。
如上面描述地,错误源在应用指示器的情况下是超过许可的区域的寻址。在此,数据在固有的有效数据附近被错误解释或失真。如果例如对所应用的固件进行错误的编程,从而取代存储器区域Var2的精确的寻址,实现实际的寻址超过Var2的许可的区域,因此这关于固件实例106在对来自区域Var3(参见图4)的数据进行写和读时产生。
然而如果现在对于不同的数据类型Var1,Var2,Var3和Var4而言,对于固件实例106和116采取了不同的数据区域的重新分类,则因此可以由于产生不同的传输数据,在相应的存储器访问中显示出这种错误源。
如果例如,如在图4a中示出地,在应用指示器的情况下采取超过Var2的寻址,则这因此关于固件106在来自于区域Var3的数据中产生,相反地,固件116换而言之提供来自从区域Var1的数据。由于这些所提供的数据在正常情况下不是相同的,因此系统管理程序能够基于超过区域界限的读和写探测到所述的数据损坏并且相应地在固件106和116的实施中识别出错误。
图5示出了H-系统的框图。H-系统在此由两个控制组件组成,即通过相应的通信模块相互连接的CPU 520和522。通信模块在此可以是CPU520的硬件112的和CPU 522的硬件512的一部分。
CPU 520又具有根据图1的用于识别错误的装置、即核心100和102与相应的固件106和116以及系统管理程序110的组合。
以类似的方式,CPU 522具有两个核心500和502,在其上同样运行了逻辑上相同的固件506和516。两个固件506和516在此与固件106和116在逻辑上是相同的。同样也相关于CPU 522设有系统管理程序510,其监测固件506和516的实例的并行实施。
因此在处理器522上实施了固件106和116的至少另一个相同实例。在错误识别的情况下、即存在相关于固件106或116的实施的错误,硬件112将这一情况报告给CPU 522,其随后与CPU 520的状态无关地单独继续进行其任务。在硬件112和512之间的通信在此通过在图5中示出的通信连接524实现。
可替换地也可能的是,在错误识别的情况下,CPU 520完全调节运行或者利用硬件520中断通信连接524。CPU 522在此可以这样配置,即在中断通信连接524时单独地继续进行CPU 522的运行。
下面探讨在根据图5的H-系统中的错误识别的不同情况。在根据前述方法确定在H-CPU之一中的数据损坏的情况下,将产生的H-CPU明确地标识。其随后必须从H-系统中得出。
这种情况例如出现在通过在H-CPU的存储器中的比特翻转(Bitkipper)引起的硬件错误时,和当仅仅在H-系统的H-CPU上运行的固件部分中的软件错误时。该情况可能在同步运行的固件部分中的软件错误时出现,这些固件部分通过所述的固件变型具有不同的效果。
另一个可能性是在两个H-CPU中确定数据损坏,因为上述的用于识别数据损坏的措施可以导致并行执行的错误编码在一个H-系统的两个H-CPU上被识别。这种情况导致H-系统的失灵,并且必须要避免这如迄今为止地那样通过应用质量安全的措施得到保障。一个对于这种错误反应的优点是,能提早识别产生的错误,这特别在测试阶段中使得对错误的分析更容易。
为了使得H-系统的错误性能的可能性最小化,可以在固件上对于四个处理器核心中的每一个不同地实施上述的变体。也就是说,可以相关于固件106和116将两个核心的固件设置在不同的虚拟地址上,相反地在固件506和516方面将核心的固件设置在再次不同的虚拟地址上。
通过多种不同的固件变体,一方面提高了发现错误的可能性,另一方面降低了在H-系统中的两方面错误的可能性。
另一个情况是确定H-系统中的数据损坏,其中这种情况描述了H-系统的错误性能,其不被单独的H-CPU所识别。它例如可以通过错误编程的算法在固件中引起。在此,存储器保护不提供相对于迄今为止的H-系统的优点。这种类型的错误也通过应用质量安全的措施来避免。
要说明的是,即同样也可能在错误安全系统(F-系统)中应用所述的措施。
Claims (11)
1.一种用于在实时操作系统的实施中识别错误的方法,其中实时操作系统的逻辑相同的实例(106;116)在共用的虚拟化环境中的第一处理器(520)的至少两个处理器核心(100;102)上被并行地实施,其中系统管理程序(128)监测所述实例(106;116)的并行实施,其中在执行通过所述实例(106;116)引发的硬件访问时,通过所述系统管理程序将在对于每个实例(106;116)的所述硬件访问时传输的数据相互比较,其中,
-在所述传输的数据之间出现差别的情况下,或者
-在单方面的通过所述实例之一引发的硬件访问的情况下,通过所述系统管理程序(128)识别为是错误。
2.根据权利要求1所述的方法,其中所述硬件访问包括存储器访问,其中在执行通过所述实例(106;116)引发的存储器访问时,所述实例访问了共用的存储器(120)。
3.根据权利要求2所述的方法,其中在应用对于两个实例(106;116)的相同的虚拟化地址空间时实现所述存储器访问,其中所述虚拟化地址空间分配有对于每个实例(106;116)的不同的物理地址空间。
4.根据权利要求2所述的方法,其中在应用对于两个实例(106;116)的不同的虚拟化地址空间时实现所述存储器访问。
5.根据权利要求4所述的方法,其中所述相应的虚拟化地址空间分配有物理地址空间,其中所述虚拟化地址空间和所述相应的物理地址空间是相同的。
6.根据权利要求2所述的方法,其中对于不同的数据类型而言,所述共用的存储器的所属的存储器区域(122;124)对于所述实例(106;116)而言是不同的。
7.根据权利要求1所述的方法,其中所述通过所述实例(106;116)之一引发的硬件访问是直接的硬件访问或者是在应用半虚拟化的情况下通过超级调用实现的硬件访问。
8.根据权利要求1所述的方法,其中还在第二处理器(522)上实施所述实时操作系统的至少另一个相同的实例(506;516),其中在错误识别的情况下将存在的错误通知给所述第二处理器(522)。
9.根据权利要求8所述的方法,其中通过将信号发送给所述第二处理器(522)或者通过解除与所述第二处理器(522)的通信连接(524)来实现通知所述错误。
10.一种具有用于执行根据前述权利要求所述的方法步骤的、能由处理器执行的指令的计算机程序产品。
11.一种用于在实时操作系统的实施中识别错误的装置,其中所述装置具有带有至少两个处理器核心(100;102)的第一处理器(520),其中所述装置设计用于在共用的虚拟化环境中的所述处理器核心上并行地实施所述实时操作系统的逻辑相同的实例(106;116),其中所述装置还具有系统管理程序(110),其中所述系统管理程序设计用于监测所述实例(106;116)的并行实施,其中所述系统管理程序还设计用于,在执行通过所述实例(106;116)引发的硬件访问时,通过所述系统管理程序(110)将在对于每个实例的所述硬件访问时传输的数据相互比较,其中所述系统管理程序(110)设计用于,
-在所述传输的数据之间出现差别的情况下,或者
-在单方面的通过所述实例(106;116)之一引发的硬件访问的情况下,识别出错误。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10194309.0A EP2466466B1 (de) | 2010-12-09 | 2010-12-09 | Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems |
EP10194309.0 | 2010-12-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102591736A true CN102591736A (zh) | 2012-07-18 |
CN102591736B CN102591736B (zh) | 2016-06-29 |
Family
ID=43877096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110410036.3A Active CN102591736B (zh) | 2010-12-09 | 2011-12-09 | 用于在实时操作系统的实施中识别错误的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8656217B2 (zh) |
EP (1) | EP2466466B1 (zh) |
CN (1) | CN102591736B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104798046A (zh) * | 2012-10-01 | 2015-07-22 | Abb技术有限公司 | 对称多处理器布置、安全关键系统及其方法 |
CN105210043A (zh) * | 2013-03-15 | 2015-12-30 | 日本电气株式会社 | 信息处理装置 |
CN109872150A (zh) * | 2017-12-04 | 2019-06-11 | 恩智浦美国有限公司 | 具有时钟同步操作的数据处理系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103999058B (zh) | 2011-12-16 | 2017-02-22 | 国际商业机器公司 | 带驱动器系统服务器 |
EP3364297B1 (en) | 2012-06-26 | 2022-05-04 | Lynx Software Technologies Inc. | Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection prevention, and/or other features |
US10229043B2 (en) * | 2013-07-23 | 2019-03-12 | Intel Business Machines Corporation | Requesting memory spaces and resources using a memory controller |
US9213840B2 (en) | 2014-05-15 | 2015-12-15 | Lynx Software Technologies, Inc. | Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features |
US11782745B2 (en) | 2014-07-01 | 2023-10-10 | Lynx Software Technologies, Inc. | Systems and methods involving aspects of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, anti-fingerprinting and/or other features |
CN107820604B (zh) * | 2015-04-14 | 2021-09-21 | 吉佳维申公司 | 具有联网设备的计算机驱动系统的半虚拟化安全威胁防护 |
US10521327B2 (en) * | 2016-09-29 | 2019-12-31 | 2236008 Ontario Inc. | Non-coupled software lockstep |
DE102020131998A1 (de) | 2020-12-02 | 2022-06-02 | Bayerische Motoren Werke Aktiengesellschaft | Steuerung eines Kraftfahrzeugs |
EP4266176A1 (de) * | 2022-04-22 | 2023-10-25 | Siemens Mobility GmbH | Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit redundanter datenspeicherung |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126498A1 (en) * | 2002-01-02 | 2003-07-03 | Bigbee Bryant E. | Method and apparatus for functional redundancy check mode recovery |
US6625751B1 (en) * | 1999-08-11 | 2003-09-23 | Sun Microsystems, Inc. | Software fault tolerant computer system |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
US20080126885A1 (en) * | 2006-09-06 | 2008-05-29 | Tangvald Matthew B | Fault tolerant soft error detection for storage subsystems |
US20100058335A1 (en) * | 2008-08-28 | 2010-03-04 | Weber Bret S | Methods and systems for integrated storage and data management using a hypervisor |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889988A (en) * | 1995-01-03 | 1999-03-30 | Intel Corporation | Debugger for debugging tasks in an operating system virtual device driver |
EP2575039B1 (de) * | 2011-09-28 | 2016-12-14 | Siemens Aktiengesellschaft | Verfahren und Anordnung zur Nutzung einer Ressource einer Hardware-Plattform mit zumindest zwei virtuellen Maschinen |
EP2575002B1 (de) * | 2011-09-28 | 2018-02-21 | Siemens Aktiengesellschaft | Verfahren und Virtualisierungssoftware für die Bereitstellung von unabhängigen Zeitquellen für virtuelle Laufzeitumgebungen |
-
2010
- 2010-12-09 EP EP10194309.0A patent/EP2466466B1/de active Active
-
2011
- 2011-12-08 US US13/315,021 patent/US8656217B2/en active Active
- 2011-12-09 CN CN201110410036.3A patent/CN102591736B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625751B1 (en) * | 1999-08-11 | 2003-09-23 | Sun Microsystems, Inc. | Software fault tolerant computer system |
US20030126498A1 (en) * | 2002-01-02 | 2003-07-03 | Bigbee Bryant E. | Method and apparatus for functional redundancy check mode recovery |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
US20080126885A1 (en) * | 2006-09-06 | 2008-05-29 | Tangvald Matthew B | Fault tolerant soft error detection for storage subsystems |
US20100058335A1 (en) * | 2008-08-28 | 2010-03-04 | Weber Bret S | Methods and systems for integrated storage and data management using a hypervisor |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104798046A (zh) * | 2012-10-01 | 2015-07-22 | Abb技术有限公司 | 对称多处理器布置、安全关键系统及其方法 |
CN105210043A (zh) * | 2013-03-15 | 2015-12-30 | 日本电气株式会社 | 信息处理装置 |
US9720755B2 (en) | 2013-03-15 | 2017-08-01 | Nec Corporation | Information processing device |
CN109872150A (zh) * | 2017-12-04 | 2019-06-11 | 恩智浦美国有限公司 | 具有时钟同步操作的数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2466466A1 (de) | 2012-06-20 |
US20120151280A1 (en) | 2012-06-14 |
US8656217B2 (en) | 2014-02-18 |
CN102591736B (zh) | 2016-06-29 |
EP2466466B1 (de) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591736A (zh) | 用于在实时操作系统的实施中识别错误的方法 | |
US7917811B2 (en) | Virtual computer system | |
EP3352083B1 (en) | Debugging method, multi-core processor, and debugging equipment | |
CN103116515B (zh) | 提供用于虚拟运行环境的独立的时间源的方法和虚拟化软件 | |
CN104205064B (zh) | 将程序事件记录事件向运行时间检测事件变换的系统及方法 | |
CN1147775C (zh) | 受保护的存储器系统和方法 | |
US7865782B2 (en) | I/O device fault processing method for use in virtual computer system | |
CN104335185A (zh) | 受限事务执行 | |
CN104364778A (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CA2549453A1 (en) | Method and apparatus for synchronizing an industrial controller with a redundant controller | |
CN102906707A (zh) | 管理与硬件事件关联的处理 | |
DE502008002533D1 (de) | Integriertes mikroprozessorsystem für sicherheitskritische regelungen | |
CN104350462A (zh) | 事务中止指令 | |
CN101952807A (zh) | 管理计算环境的多个可分页客户端对存储装置的使用 | |
CN104335177A (zh) | 有选择地控制事务处理中的指令执行 | |
CN104335186A (zh) | 处理器辅助设施 | |
CN104335184A (zh) | 事务执行分支指示 | |
CN103124938A (zh) | 对可编程逻辑控制器的执行环境进行升级的方法、系统及程序 | |
CN102103482B (zh) | 自适应优化的比较-交换操作 | |
US8069367B2 (en) | Virtual lock stepping in a vital processing environment for safety assurance | |
KR102167393B1 (ko) | 메모리 공유 환경에서 데이터 무결성 감시 장치 및 방법 | |
CN108268266A (zh) | 一种升级方法和装置 | |
CN100511167C (zh) | 监控多处理器系统中的存储单元的方法和设备 | |
CN104115153A (zh) | 进入安全系统环境的定向唤醒 | |
CN103019865B (zh) | 虚拟机监控方法和系统 |
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 |