CN1938683A - 数据处理设备中避免应用程序的不同功能对全局变量的访问之间的数据不一致性的方法 - Google Patents
数据处理设备中避免应用程序的不同功能对全局变量的访问之间的数据不一致性的方法 Download PDFInfo
- Publication number
- CN1938683A CN1938683A CNA2005800108439A CN200580010843A CN1938683A CN 1938683 A CN1938683 A CN 1938683A CN A2005800108439 A CNA2005800108439 A CN A2005800108439A CN 200580010843 A CN200580010843 A CN 200580010843A CN 1938683 A CN1938683 A CN 1938683A
- Authority
- CN
- China
- Prior art keywords
- function
- global variable
- symbol
- object code
- variable
- 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
- 230000006870 function Effects 0.000 title claims abstract description 251
- 238000012545 processing Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 title claims description 43
- 238000009434 installation Methods 0.000 title 1
- 230000002452 interceptive effect Effects 0.000 abstract 2
- 230000008859 change Effects 0.000 description 7
- 230000006872 improvement Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
为了在数据处理系统中避免应用程序的不同功能对全局变量的访问之间的数据不一致性,a)提供在该数据处理系统中要实施的整体功能(O1,...,Om)的符号目标代码,并且从被称为干扰的功能的整体功能中识别那些访问相同的全局变量的功能(O1,O2,On,Om);b)选出所述干扰的功能中的至少一个功能;c)将利用全局变量的值初始化辅助变量的步骤(I)嵌入到每个在步骤b)中所选出的功能的目标代码中,或者在调用所述功能之前嵌入到调用所选出的功能的功能的目标代码中;以及d)通过参阅辅助变量的存储位置来代替所选出的功能的目标代码中的全局变量的符号。
Description
发明领域
本发明涉及在其上运行实时应用程序的数据处理设备中的数据一致性的问题。这种应用程序一般由多个功能组成,这些功能不必在时间上固定地相互协调地来写入或读取地访问共同使用的变量(也被称为全局变量)。如果用于执行计算的这种功能多次相继读取这种变量,并且在两次这种读访问之间通过另一种功能来改变该变量,则可以从计算结果将是有错误的情况来出发。如果计算要求对全局变量进行多次写访问,则同样产生错误,在这些写访问中,如果另一种功能读取地访问这种中间结果,则暂时地在变量中存储该中间结果。
访问相同全局变量的功能在本申请的范围内被称为干扰的功能,而与在个别情况下功能之间的冲突实际上是否有可能无关。
如果一种功能访问可能由干扰的功能的交叉访问而被干扰的全局变量,则为了在数据处理系统中确保全局变量的一致性的公知技术总是将所有其它的功能排除在对相同变量的访问之外。可是,这种方法一般不适于实时应用程序,因为必须停止实施那些必须访问排除在访问之外的变量的功能,直至重新允许对该变量的访问时为止,这导致实施这些功能中的不可预见的延迟。
确保数据一致性的另一种公知的方法是,对于单个功能分别应用全局变量的副本。也就是说,干扰的功能分别在其实施的开始时产生必需的全局变量的局部副本,随后用该副本工作,并且如果功能能够改变该变量,则在该功能结束之前将局部变量返回复制成全局变量,其中不能分别由其它的功能中断复制过程。
在复杂的程序系统中存在以下问题,即在开始开发时常常不清楚,在哪些位置上能出现可导致数据不一致性的访问冲突。通过在每个功能中从该功能所必需的所有全局变量中设立局部副本,可能面临这种问题。可是,这种行为方式导致了对存储器和处理能力的显著提高的需求。
在系统集成的时刻总是能说明,哪种功能中的哪些全局变量必需副本,因为在该时刻,所有功能以及其调用频率和优先级(其中断其它功能的权力)是已知的。为了使系统集成变得容易,存在诸如OLT(离线工具(Off Line Tool))或ESCAPE(
www.etas.com)的不同的软件工具,这些软件工具以存在的源代码借助附加信息来识别为了确保数据一致性而必须用副本工作的功能,并且如此来改变这些功能,以致这些功能用相应的副本代替用原始变量来工作。除此之外,还生成相应的复制过程。这些复制过程按照为静态的操作系统配置将一个或多个功能的副本与其原始变量进行同步,这些功能可以应用共同的副本,因为这些功能相互不中断。由于这些工具读取操作系统配置,以便确定单个功能的优先级和分组,所以这些工具也能自动地在功能或功能组之前或之后将必需的复制过程嵌入到操作系统配置中。
通过该工具被指示改变源代码的事实,限制了该工具的可应用性。可是,该源代码不是必然地总是可供使用的。尤其是当由第三方给开发伙伴提供了功能时,该第三方出于保密原因常常不以源代码的形式而是最多以目标代码的形式将这些功能提供使用。不能用公知的工具来处理这样的功能,以致为了确保无冲突可能有必要在以源代码存在的功能上进行范围广泛的不可自动进行的和因此昂贵且易出错的变化。
此外,介入源代码每次要求重新翻译所改变的代码。尤其是改变功能(例如操作系统配置)的优先级可带来多种其它功能的源代码中的范围广泛的变化。在大的程序系统中,这可导致可能显著延迟开发过程的很长的翻译时间。
其它的问题是,公知的开发工具是分别为某些高级语言设置的,也就是不适于处理用于一种应用程序的、以不同高级语言编写的功能。
发明优点
通过本发明创造了用于避免数据不一致性的方法和用于应用这些方法的开发工具,这些方法和开发工具可被用于任意功能上,而与其源代码以其来编写的高级语言无关,或与是否根本有源代码可供使用无关,并且这些方法和开发工具实现了顺利的开发。
一方面通过以下方式实现了这些优点,即根据权利要求1所述的方法将对于应用辅助变量所必要的同一辅助变量的初始化直接嵌入到存在的目标代码中,以代替将该辅助变量嵌入到源代码中并且然后将该源代码翻译成目标代码。该嵌入可以在于,将用于初始化所必要的程序步骤直接嵌入到所识别的功能中或在调用这些程序步骤之前嵌入到调用所识别的功能的功能中,或者通过嵌入承担初始化的辅助功能的跳转指令来实现。
辅助变量可以是应用该辅助变量的功能的局部变量,也就是只在该功能之内被限定和可访问的变量。在实践中以有利的方式全局限定辅助变量,因为于是多个干扰的功能可应用相同的辅助变量,在这些功能中已知它们相互未陷入冲突。
以两种方式来实现通过访问辅助变量来代替所选出的功能对全局变量的访问。一种方式是,在所选出的功能的首先还以符号形式存在的目标代码中,分别单个地识别和通过辅助变量的符号来代替全局变量的符号,该全局变量的符号例如可以作为写入指令或读取指令的自变量(Argument)来出现。第二种方法是,在链接目标代码时,即当在目标代码中通过参阅具体的存储器地址来代替所有符号时,分别直接通过参阅代替这些符号的辅助变量的存储器地址来代替全局变量的符号,并且如此似乎“弯曲(verbiegen)”写访问/读访问。
优选地利用专用工具来执行代替或“弯曲”,该工具读取目标代码文件,在该目标代码文件中代替符号,或将相应的指令嵌入到连接程序上,并且随后可以将这些指令重新写成为符合格式的目标代码文件。
为了使得代替全局变量而应用辅助变量的功能的数量不必要得大,该方法适宜地包括在干扰的功能中识别能够相互中断的功能的步骤c′),其中,嵌入辅助变量和代替仅访问至少一个如此识别的功能。在既不由其它的功能中断也不能中断其它功能的功能中,不存在数据不一致性的危险,以致在这些功能中不需要代替。
适宜地由上面所提及的工具来实施该步骤c′),该工具为此作为输入文件除了本来的目标文件之外还适宜地获得优选地为控制文件形式的附加信息,该附加信息说明了,多个干扰的功能中的哪些功能能够由其它的功能来中断并且因此必须利用辅助变量代替全局变量来工作。
在附加信息中优选地通过被分配给这些功能的优先级值来确定干扰的功能相互中断的能力。
除此之外,例如通过将控制文件简单地嵌入到能运行的目标文件的说明段(Beschreibungssektion)中,优选地记录在至少一个所选出的功能上所进行的代替,以便给调试程序提供该信息。该附加信息给调试程序提供了以下可能性,即理解所执行的代替,并且因此使得通过工具所执行的改变相对于调试程序的用户是透明的。如果在软件的某个实施时刻,原始变量和副本包含不同的值,并且用户想理解,他测试的功能是访问原始变量还是访问某个副本,则这尤其是感兴趣的。
如果在所选出的功能上所进行的代替中的至少一个代替涉及写访问,也就是如果该功能能够改变辅助变量的值,则也应将利用辅助变量的值来改写全局变量的步骤嵌入到所选出的功能的目标代码中或在调用之后嵌入到调用所选出的功能的功能的目标代码中,以便使得全局可使用这种变化。
另一方面通过以下方式实现了这些优点,即根据权利要求8来提供要在数据处理系统中实施的整体功能的符号目标代码,并且在这些功能中识别干扰的功能,其中,利用分别专用于该功能的符号来表示每个对此进行访问的功能的符号目标代码中的全局变量,选出了至少一个干扰的功能,将用于将全局变量复制到被分配给功能专用的符号的存储位置上的指令嵌入到每个所选出的功能中或者在调用所选出的功能之前嵌入到调用所选出的功能的功能中,并且对于每个未选出的功能,将分别专用于该功能的符号与被分配给全局变量的存储位置逻辑连接。
为了使执行上面所限定的方法的工具容易地识别分别对应于相同的全局变量的功能专用的符号,适宜地提供一表格,该表格含有在功能中被用于全局变量的符号。
如果从源代码中编译多个干扰的功能的目标代码,则可以适宜地规定,被用于此的编译程序通过专用于每个功能的符号来代替全局变量的在功能的源代码中所含有的相同名称,并且设立该表格。
从以下参考附图的实施例的说明中得出了本发明的其它特征和优点。
附图
图1示出了本发明的开发工具的示意性阶段和在这些阶段之间所交换的数据对象;
图2示出了在图1的目标处理器中运行的工作方法的流程图;
图3示出了本发明的第二改进方案的类似图1的示图;
图4示出了第三改进方案的类似的示图;
图5示出了第四改进方案的类似的示图;和
图6示出了在第四改进方案中所应用的控制文件的内容。
实施例的说明
在图1中所示出的开发工具包括编译程序COMP作为第一阶段,该编译程序COMP将位于开发中的应用程序的功能的以诸如C的高级语言编写的源代码S1、S2、...、Sn转换成符号目标代码功能O1、O2、...、On。该符号目标代码由分别对应于1∶1指令的指令所组成,这些指令可以由目标处理器来实施,对于该目标处理器确定了要编译的源代码。可是,不同于可直接实施的代码,这些源代码不涉及写访问或者读访问的固定的存储器地址和跳转指令,而是涉及用符号表示的地址,在处理的稍后的阶段才由连接程序LINK给这些地址分配固定的值。
在编译程序COMP之后布置了目标代码处理器OP,该目标代码处理器OP修改单个功能的、由编译程序所产生的目标代码O1、O2、...、On,以及必要时修改不是由编译程序COMP所编译的功能的其它目标代码On+1、...、Om,以便确保由这些功能中的多个功能所应用的全局变量的一致性。目标代码On+1、...、Om例如可以属于原来以不同于源代码S1、S2、...、Sn的语言所编写的功能,或者属于其源代码不可使用的功能,因为涉及要由应用程序的开发者购买的功能。
目标代码处理器OP有权访问由开发者所提供的文件DESCR,该文件DESCR对于目标代码功能O1、...、Om中的每一个规定了功能对其访问的全局变量以及被分配给该功能的优先级。
图2借助流程图示出了由目标代码处理器OP所执行的处理。在步骤1中,选出目标代码功能Oi(1≤i≤m)之一。在步骤2中,选出针对文件DESCR中的目标代码功能Oi所列举的全局变量之一,并且在步骤3中,同样借助文件DESCR来检查,随着所选出的功能Oi是否存在干扰的功能(也就是访问相同的全局变量的功能Oj(1≤j≤m,j≠i))。如果是肯定的,则在步骤S4中检验,功能中的哪一个具有较高的优先级。如果功能Oi的优先级较低,则这意味着,该功能Oi可以由其它的功能Oj来中断,并且如果其它的、有较高优先级的功能Oj改变了第一功能Oi的两次读访问之间的全局变量或读取全局变量的未被限定的中间值,则因此存在数据不一致的危险。在这种情况下,目标处理器将用于将这些变量复制到辅助变量中的指令在第一次访问有关的全局变量之前嵌入到功能Oi的目标代码中,或者在调用之前嵌入到调用功能Oi的功能中,并且将所有随后的对目标代码Oi中的全局变量的访问通过对辅助变量的这种访问来代替。如果在代替时确定访问中的至少一次访问是写访问,则此外还分别将在其结束之前要实施的、用于将辅助变量的值复制到全局变量中的指令嵌入到功能Oi中。可替换地也可以在调用之后,将这种指令嵌入到进行调用的功能中。
如果步骤4的检查得出了,功能Oi与其它的功能Oj具有相同的优先级或比其它的功能Oj具有更高的优先级,则不存在由其它功能Oj中断该第一功能Oi的危险,并且不需要应用程序副本。在这种情况下,方法直接从步骤4跳跃到步骤6。
步骤6检查,对于在步骤1中所选择的功能Oi是否在文件DESCR中登记了其它的全局变量,并且如果是肯定的,则方法返回到步骤2,并且选出这些变量中的一个。否则在步骤7中检验,是否还有用于处理的功能等待处理,并且如果是否定的,则该方法结束。
目标处理器以这种方式产生一组数据一致的目标代码功能O′1、...、O′m,按照对全局变量的访问的方式,仅将以下指令嵌入到这些目标代码功能O′1、...、O′m中:(如果仅读取地访问功能,则在功能O′1、O′n的情况下通过单个画阴影线的框I来象征性地示出的)用于将全局变量复制到局部的辅助变量中的指令,(在写访问和读访问时,在功能O′2、O′m的情况下通过两个画阴影线的框I、C来象征性地示出的)用于将全局变量复制到局部变量中和返回的指令;或如在功能O′n+1的情况下那样,如果有关的功能具有被分配给访问有关全局变量的功能的最高优先级,则完全没有指令。
如此获得的一致的目标功能由连接程序LINK以本身公知的方式接合成可实施的应用程序,其方式是通过存储位置的显式地址来代替目标代码的所有符号。
借助图3来说明开发工具的优选的扩展方案或该开发工具的工作方式。编译程序COMP、由该编译程序COMP从源代码功能S1、...、Sn中所产生的目标代码功能O1、...、On以及外部的目标功能On+1、...、Om与图1中的相同。可是,不同于图1中的情况,这些功能不是为了使得这些功能数据一致而由目标代码处理器OP来处理,而是这些功能运行产生目标代码块O``1、...、O``p的代码连接程序CLINK。这些块的数量对应于优先级水平的数量,这些优先级水平被分配给目标代码功能并且在由代码连接程序CLINK所读取的文件PRIO中针对单个目标代码功能O1、Om被规定。每个目标代码块O``1、O``p含有相同优先级水平的功能。在块O``1中汇总了具有最高优先级的功能,这些功能可以无危险地直接访问其全局变量,并且不需要目标代码处理器OP中的处理。所有其它的块O``2至O``p在目标代码处理器OP中经受了参考图1和2所说明的一致性处理。通过将功能汇总成较大的块,使得目标代码处理器OP中的处理有效。由于每个单个块的功能不相互中断,所以这些功能可以将共同的局部副本用于每个全局变量,由此节省了存储位置。
一致性处理过的块O``1至O``p然后运行被称为变量连接程序VLINK的其它的连接程序阶段,该变量连接程序VLINK通过显式存储器地址来代替所有的对存储位置的符号参考,并且分析在代码连接程序中还未曾能由显式地址代替的跳转地址,因为这些跳转地址曾表示不同块之间的跳转。因此最后得到了完成的、可实施的应用程序。
在图4中所示出的改进方案中,目标代码块O``1、...、O``p的结构和处理直至产生与图3的情况没有区别。取消了目标代码处理器,代替此地改变了变量连接程序VLINK的工作方式。该变量连接程序VLINK读取文件VAR,该文件VAR针对每个功能规定了该每个功能所访问的全局变量,并且借助该信息确定在目标代码块O``2至O``p中的每个中所应用的全局变量。这些全局变量中的每个在链接目标代码块时在每个块中分别被分配另一个显式存储器地址。变量连接程序VLINK随后将目标代码块的每个单个功能与从程序库(Bibliothek)中所读取的复制功能这样来逻辑连接,使得分别在功能的开始或结束时实施复制功能,其中,这些复制功能分别将由有关功能所应用的全局变量复制到对于这些功能的目标代码组O``1、...、O``p被分配给其的存储位置上或返回复制。由此,在其它的实施例中由目标代码处理器OP所进行的目标代码的操纵变得多余,并且仍然达到了,其中存在由有更高优先级的功能来中断的危险的所有功能任何时候都不访问正本,而是总是仅访问全局变量的副本。
图5示意性地示出了根据本发明的第四改进方案的处理的阶段。如在以上的实施例中那样,第一阶段是编译程序COMP,该编译程序COMP将以源代码编写的功能S1、S2、...、Sn转换成符号目标代码O1、...、On。图5的编译程序的特别之处在于,该编译程序在符号目标代码中针对由多个功能所使用的和在这些功能的源代码中利用相同名称表示的全局变量不将所有这些干扰的功能的符号目标代码中的其源代码名称统一用作全局变量的符号,而是在每个功能的目标代码中,将专用于有关功能的符号用于单个变量。这例如可以通过以下方式实现,即编译程序分别通过将在源代码的功能中所调用的变量与进行调用的功能的名称相链接来产生目标代码的符号。也就是说,在有关功能的由编译程序所产生的目标代码O1、O2中,分别给在功能F1、F2的源代码S1、S2中用G1表示的全局变量分配符号G1_F1或G1_F2。
编译程序COMP在编译期间设立控制文件VAR,在该控制文件VAR中如在图6中所示出的那样,对于每个目标代码功能Oi,说明了在该目标代码中被用于诸如G1、G2的全局变量的符号,这里为G1_Fi或G2_Fi。控制文件VAR优选地具有可用常规的文本编辑程序来编辑的形式,该形式使得开发者能够手动地来补充针对功能On+1至Om的控制文件的录入项,这些功能未由编译程序COMP来编译,而是从开始起以符号目标代码形式存在,并且开发者补充了在源代码S1至Sn中所应用的全局变量的关系之间的对应和这些全局变量在目标代码On+1、...、Om中的关系。
如同样在图6中所示出的那样,第二控制文件PRIO针对每个目标代码功能Oi(i=1,...,m)说明了优先级值PRIO(Oi),该优先级值PRIO(Oi)说明了中断其它功能的运行的有关功能的权利。
连接程序LINK在符号目标代码O1、...、On中通过参阅显式存储位置来代替符号,以便如此产生能运行的应用程序。连接程序在此考虑了控制文件VAR和PRIO的内容。只有在具有最高可能的优先级水平的功能处,连接程序才将在该功能中被用于全局变量的符号通过参阅该变量的实际的存储位置来代替。在调用具有不同于最高可能的优先级水平的功能之前,连接程序包括复制功能I的调用,该复制功能I设立由该功能所应用的全局变量的副本,并且在有关功能的目标代码中,连接程序通过参阅由复制功能所设立的副本的地址来代替在该功能中被用于该全局变量的符号。如果该功能写入地访问该全局变量,则在该功能结束之后附加地包括返回复制功能C,该返回复制功能C将全局变量的副本的值返回复制到这些变量的实际的存储位置上。
在由连接程序所产生的能运行的应用程序中,因而如果k是功能O1至Om的可能的优先级水平的数量,则设立全局变量的直至k-1个副本,并且具有相同优先级水平的、不能相互中断的功能分别访问相同的副本。因此这里如在图3和4的改进方案中那样,将为了设立副本所必需的存储位置限制到最小值上。
Claims (16)
1.用于在数据处理系统中避免应用程序的不同功能对全局变量的访问之间的数据不一致性的方法,该方法具有以下的步骤:
a)提供要在所述数据处理系统中实施的整体功能(01,...,0m)的符号目标代码,并且从被称为干扰的功能的所述整体功能中识别那些访问相同的全局变量的功能(01,02,0n,0m);
b)选出至少一个干扰的功能;
c)将利用所述全局变量的值初始化辅助变量的步骤(I)嵌入到每个在步骤b)中所选出的功能的目标代码中或者在调用所选出的功能之前嵌入到调用所选出的功能的功能的目标代码中;
d)通过参阅所述辅助变量的存储位置,代替所选出的功能的目标代码中的全局变量的符号。
2.按权利要求1所述的方法,其特征在于,在步骤d)中在所选出的功能的符号目标代码中,通过所述辅助变量的符号来代替所述全局变量的符号,并且然后通过参阅所述辅助变量的存储位置,代替所述辅助变量的符号。
3.按权利要求1所述的方法,其特征在于,在步骤d)中,连接程序直接通过参阅所述辅助变量的存储位置来代替所述全局变量的符号。
4.按权利要求3所述的方法,其特征在于,所述连接程序在至少一个未选出的干扰的功能中,通过参阅所述全局变量的存储位置来代替所述全局变量的符号。
5.按以上权利要求之一所述的方法,其特征在于,记录在所述至少一个所选出的功能上进行的代替。
6.按以上权利要求之一所述的方法,其特征在于,如果至少一个在所选出的功能上进行的代替涉及写访问,则嵌入利用所述辅助变量的值改写所述全局变量的步骤。
7.按以上权利要求之一所述的方法,其特征在于,在步骤a)中,借助除了所述功能的目标代码以外所提供的信息(DESCR,VAR),实现所述干扰的功能的识别。
8.用于在数据处理系统中避免应用程序的不同功能对全局变量的访问之间的数据不一致性的方法,该方法具有以下步骤:
a)提供要在所述数据处理系统中实施的整体功能(01,...,0m)的符号目标代码,并且从被称为干扰的功能的所述整体功能中识别那些访问相同的全局变量(G1,G2)的功能(01,02,0n,0m),其中,在每个访问所述全局变量(G1,G2)的功能的符号目标代码中利用分别专用于该功能的符号(G1_Fi;G2_Fi)来表示所述全局变量(G1,G2);
b)选出至少一个干扰的功能;
c)将用于将所述全局变量(G1,G2)复制到被分配给所述功能专用的符号(G1_Fi;G2_Fi)的存储位置上的指令(I)嵌入到每个在步骤b)中所选出的功能中,或者在调用所选出的功能之前嵌入到调用所选出的功能的功能中,和
d)针对每个在步骤b)中未选出的功能:将各个功能专用的符号与被分配给所述全局变量(G1;G2)的存储位置逻辑连接。
9.按权利要求8所述的方法,其特征在于,借助表格(VAR)来识别所述干扰的功能,该表格(VAR)含有在所述功能中被用于所述全局变量的符号。
10.按权利要求9所述的方法,其特征在于,从源代码(S1,S2,...,Sn)中编译所述干扰的功能中的多个功能的目标代码,并且在编译时,编译程序(COMP)通过专用于每个功能的符号(G1_Fi;G2_Fi)来代替所述全局变量的在所述功能的源代码中所含有的相同的名称(G1;G2),并且设立所述表格(VAR)。
11.按权利要求8至10之一所述的方法,其特征在于,如果所选出的功能写入地访问被分配给所述功能专用的符号的存储位置,则嵌入利用副本的值来改写所述全局变量的步骤C。
12.按以上权利要求之一所述的方法,其特征在于在所述干扰的功能中识别能由另一个功能中断的功能的步骤a′),其中,在步骤b)中仅选出在步骤a′)中所识别的功能。
13.按权利要求12所述的方法,其特征在于,借助除了所述功能的符号目标代码以外所提供的信息(DESCR,PRIO)来实现所述步骤a′)的识别。
14.按权利要求13所述的方法,其特征在于,借助所述功能的在附加提供的信息(DESCR,PRIO)中所说明的优先级值,识别所述功能相互中断的能力。
15.用于执行按权利要求1至7之一或权利要求12至14之一所述方法的开发工具,就回引到权利要求1而言,该开发工具具有:输入接口(OP),用于接收所述功能(01,...,0m)的符号目标代码;逻辑单元(OP),用于识别访问相同全局变量的、所谓的干扰的功能(01,02,0n,0m);目标代码处理单元(OP,VLINK),用于在至少一个在所述干扰的功能(01,02,0n,0m)中选出的功能的目标代码中,通过参阅利用全局变量值来初始化的辅助变量的存储位置来代替所述全局变量的符号;和连接程序(LINK),用于在所述处理之后,通过所述目标代码处理单元(OP,VLINK)来链接能运行的应用程序的所述整体功能的目标代码。
16.用于执行按权利要求8至11之一或权利要求12至14之一所述的方法的开发工具,就回引到权利要求7而言,该开发工具具有:输入接口,用于接收所述功能(01,...,0m)的符号目标代码;逻辑单元,用于识别访问相同全局变量的、所谓的干扰的功能(01,02,0n,0m),其中,所述全局变量在每个访问其的功能的目标代码中利用另一个符号来表示;用于嵌入指令(I)的目标代码处理单元(LINK),该指令(I)用于将所述全局变量复制到被分配给所选出的功能的功能专用的符号的存储位置上;和连接程序(LINK),用于在所述处理之后通过所述目标代码处理单元来链接能运行的应用程序的所述整体功能的目标代码,设立了该连接程序(LINK),将由所选出的功能用于所述全局变量的符号(G1_Fi;G2_Fi)与被分配给该符号的存储位置逻辑连接,并且将由未选出的功能用于所述全局变量的符号与所述全局变量(G1,G2)的存储位置逻辑连接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004017050.9 | 2004-04-07 | ||
DE102004017050A DE102004017050A1 (de) | 2004-04-07 | 2004-04-07 | Datenkonsistenz in Datenverarbeitungsanlagen |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1938683A true CN1938683A (zh) | 2007-03-28 |
CN100514294C CN100514294C (zh) | 2009-07-15 |
Family
ID=34965767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800108439A Active CN100514294C (zh) | 2004-04-07 | 2005-03-30 | 避免数据处理设备中的数据不一致性的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8464236B2 (zh) |
EP (1) | EP1738257B1 (zh) |
JP (1) | JP4638484B2 (zh) |
CN (1) | CN100514294C (zh) |
DE (1) | DE102004017050A1 (zh) |
WO (1) | WO2005098617A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9618924B2 (en) | 2011-03-15 | 2017-04-11 | Omron Corporation | CPU of PLC, system program for PLC, and recording medium storing system program for PLC |
CN112380529A (zh) * | 2020-10-26 | 2021-02-19 | 浙江大学 | 一种基于操作的嵌入式裸机系统安全隔离系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2675680C (en) * | 2009-08-27 | 2013-05-14 | Ibm Canada Limited - Ibm Canada Limitee | Generating object code that uses calculated contents for a variable determined from a predicate |
CA2691851A1 (en) * | 2010-02-04 | 2011-08-04 | Ibm Canada Limited - Ibm Canada Limitee | Control flow analysis using deductive reaching definitions |
WO2013035659A1 (ja) * | 2011-09-05 | 2013-03-14 | 株式会社エヌ・ティ・ティ・ドコモ | 情報処理装置およびプログラム |
US20130275954A1 (en) * | 2012-04-17 | 2013-10-17 | Futurewei Technologies, Inc. | Inter-procedural unreachable code elimination with use graph |
US20150128117A1 (en) * | 2013-11-07 | 2015-05-07 | Netronome Systems, Inc. | Linker that statically allocates non-memory resources at link time |
US9823913B2 (en) * | 2015-12-03 | 2017-11-21 | International Business Machines Corporation | Method of adding local variables in place of global in JavaScript |
FR3071334B1 (fr) * | 2017-09-19 | 2019-08-30 | Psa Automobiles Sa | Procede pour assurer la stabilite des donnees d’un processeur multicoeur d’un vehicule automobile |
US10922074B2 (en) | 2017-09-28 | 2021-02-16 | Oracle International Corporation | Deferred state mutation |
CN107844385B (zh) * | 2017-11-08 | 2021-04-23 | 北京龙之心科技有限公司 | 一种基于共享内存的变量读写方法及装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
US5442758A (en) * | 1993-07-19 | 1995-08-15 | Sequent Computer Systems, Inc. | Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring |
US5802368A (en) * | 1995-09-29 | 1998-09-01 | Informix Software, Inc. | Dynamic Library Task Switching |
JPH09330212A (ja) * | 1996-06-13 | 1997-12-22 | Mitsubishi Electric Corp | プログラミング言語処理システム |
FR2762418B1 (fr) * | 1997-04-17 | 1999-06-11 | Alsthom Cge Alcatel | Procede de gestion d'une memoire partagee |
DE19728971C2 (de) * | 1997-07-07 | 2003-10-09 | Bosch Gmbh Robert | Datenverarbeitungsvorrichtung und -verfahren |
JPH11212807A (ja) * | 1998-01-30 | 1999-08-06 | Hitachi Ltd | プログラム実行方法 |
US6110227A (en) * | 1998-06-24 | 2000-08-29 | Microsoft Corporation | Systems and methods for pre-processing variable initializers |
JP3650713B2 (ja) * | 2000-02-04 | 2005-05-25 | 松下電器産業株式会社 | プログラム変換装置、プログラム変換方法及びプログラム記憶媒体 |
US6529985B1 (en) * | 2000-02-04 | 2003-03-04 | Ensim Corporation | Selective interception of system calls |
WO2001090887A1 (fr) * | 2000-05-25 | 2001-11-29 | Fujitsu Limited | Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement |
JP2002099425A (ja) * | 2000-09-25 | 2002-04-05 | Hitachi Ltd | グローバル変数のローカル変数変換方法 |
JP2002132502A (ja) * | 2000-10-25 | 2002-05-10 | Nec Software Hokuriku Ltd | 言語機能解釈による分散オブジェクト自動生成システム及び方法 |
JP2003256219A (ja) * | 2002-03-01 | 2003-09-10 | Aplix Corp | 組込み機器におけるプログラム実行方法 |
JP2003280922A (ja) * | 2002-03-26 | 2003-10-03 | Hitachi Ltd | コードサイズ削減方法 |
JP3840149B2 (ja) * | 2002-06-28 | 2006-11-01 | 株式会社東芝 | コンパイラ、演算処理システム及び演算処理方法 |
US7069548B2 (en) * | 2002-06-28 | 2006-06-27 | Intel Corporation | Inter-procedure global register allocation method |
US7558935B1 (en) * | 2004-05-04 | 2009-07-07 | Sun Microsystems, Inc. | Method and system for optimizing memory allocation |
US7689979B1 (en) * | 2005-08-02 | 2010-03-30 | Adobe Systems Inc. | Methods and apparatus to improve application launch time |
-
2004
- 2004-04-07 DE DE102004017050A patent/DE102004017050A1/de not_active Withdrawn
-
2005
- 2005-03-30 EP EP05747879A patent/EP1738257B1/de active Active
- 2005-03-30 WO PCT/EP2005/051449 patent/WO2005098617A1/de active Application Filing
- 2005-03-30 US US11/547,940 patent/US8464236B2/en active Active
- 2005-03-30 JP JP2007506769A patent/JP4638484B2/ja active Active
- 2005-03-30 CN CNB2005800108439A patent/CN100514294C/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9618924B2 (en) | 2011-03-15 | 2017-04-11 | Omron Corporation | CPU of PLC, system program for PLC, and recording medium storing system program for PLC |
CN112380529A (zh) * | 2020-10-26 | 2021-02-19 | 浙江大学 | 一种基于操作的嵌入式裸机系统安全隔离系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2005098617A1 (de) | 2005-10-20 |
CN100514294C (zh) | 2009-07-15 |
US20090049437A1 (en) | 2009-02-19 |
US8464236B2 (en) | 2013-06-11 |
EP1738257A1 (de) | 2007-01-03 |
DE102004017050A1 (de) | 2005-10-27 |
JP2007531946A (ja) | 2007-11-08 |
JP4638484B2 (ja) | 2011-02-23 |
EP1738257B1 (de) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100514294C (zh) | 避免数据处理设备中的数据不一致性的方法和装置 | |
US6243864B1 (en) | Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths | |
JP4573189B2 (ja) | プログラムコード変換方法 | |
CN100426239C (zh) | 依赖关系图参数范围的划分 | |
US20030093780A1 (en) | Annotations to executable images for improved dynamic optimization of functions | |
KR101213275B1 (ko) | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 | |
US20020095667A1 (en) | Optimizing compilation by forward store movement | |
CN100414517C (zh) | 异构体系结构中的覆盖生成、管理的方法和设备 | |
CN101189578A (zh) | 用于程序代码转换期间的本机代码和目标代码的组合执行的方法及装置 | |
US7784042B1 (en) | Data reordering for improved cache operation | |
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
JPH04322329A (ja) | 多機種対応型情報処理システム、および、方法 | |
US20040194071A1 (en) | Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method | |
KR19990013980A (ko) | 컴파일 방법, 컴파일러, 예외 핸들러 및 프로그램 기록 매체 | |
JP2001216169A (ja) | 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造 | |
CN116775127B (zh) | 一种基于RetroWrite框架的静态符号执行插桩方法 | |
Bal et al. | Language-and machine-independent global optimization on intermediate code | |
JP3264901B2 (ja) | コンパイル装置及びコンパイル方法 | |
KR100866546B1 (ko) | 센서 노드용 소프트웨어 개발 시스템 및 방법 | |
KR20000050238A (ko) | 다수의 운영시스템에서 실행 가능한 프로그램 제작 시스템및 방법 | |
Montuelle | CUFOM: the CERN Universal Format for Object Modules | |
Mogensen | Data-Flow Analysis and Optimisation | |
Luna et al. | HiPE on AMD64 | |
JPH10301791A (ja) | オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ | |
Dahl et al. | Prototyping Compiler and Simulation Tools with PCCTS |
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 |