DE10056046A1 - Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables. - Google Patents

Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables.

Info

Publication number
DE10056046A1
DE10056046A1 DE2000156046 DE10056046A DE10056046A1 DE 10056046 A1 DE10056046 A1 DE 10056046A1 DE 2000156046 DE2000156046 DE 2000156046 DE 10056046 A DE10056046 A DE 10056046A DE 10056046 A1 DE10056046 A1 DE 10056046A1
Authority
DE
Germany
Prior art keywords
intertask
priority task
variable
task
variables
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.)
Ceased
Application number
DE2000156046
Other languages
German (de)
Inventor
Gabriel Wetzel
Jens Fiedler
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
Priority to DE2000156046 priority Critical patent/DE10056046A1/en
Priority to ITMI20012343 priority patent/ITMI20012343A1/en
Priority to FR0114525A priority patent/FR2817634B1/en
Publication of DE10056046A1 publication Critical patent/DE10056046A1/en
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Abstract

All variables used in a computer program are determined. For each variable tasks are determined, in which the variables are accessed and intertask variables (IV) are determined that are used in multiple tasks. For each IV available mechanisms determine theoretically applicable mechanisms for an intertask communication. For the IVs, for which multiple mechanisms are applicable, a mechanism is selected from the theoretically applicable mechanisms.

Description

Die vorliegende Erfindung betrifft ein Verfahren zur Realisierung einer Intertask-Kommunikation in einem Multitasking-Betriebssystem, das die Ausführung eines Computerprogramms steuert, das in mehrere Tasks mit jeweils mindestens einem Prozess unterteilt ist.The present invention relates to a method for Realization of an intertask communication in one Multitasking operating system that runs a Computer program controls that in several tasks with each is divided into at least one process.

Stand der TechnikState of the art

Den einzelnen Tasks eines Multitasking-Computerprogramms sind verschiedene Prioritäten zugeordnet. Tasks mit einer hohen Priorität können andere Tasks mit einer niedrigeren Priorität unterbrechen. Die Unterbrechung erfolgt bei Tasks, die in einem kooperativen Modus abgearbeitet werden, zwischen zwei Prozessen. Bei Tasks, die in einem preemptiven Modus abgearbeitet werden, kann die Unterbrechung auch mitten in einem Prozess erfolgen. In dem Computerprogramm sind üblicherweise Variablen vorgesehen, die zum Austauschen von Informationen zwischen den Tasks in mehreren Tasks eingesetzt werden. Diese Variablen werden als Intertask-Variable bezeichnet.The individual tasks of a multitasking computer program different priorities are assigned. Tasks with one other tasks with a lower priority Interrupt priority. The interruption takes place at Tasks that are processed in a cooperative mode between two processes. For tasks that are in one preemptive mode can be processed Interruption can also take place in the middle of a process. By doing Computer program usually variables are provided which are used to exchange information between the tasks in multiple tasks can be used. These variables are referred to as an intertask variable.

Ein wichtiger Aspekt bei der Kommunikation zwischen den Tasks eines Computerprogramms ist die Sicherung der Datenkonsistenz der Intertask-Variablen. Während der Abarbeitung eines Teils des Computerprogramms (z. B. Prozess oder Task) dürfen die Inhalte der Variablen, auf die der Teil des Computerprogramms zugreift, nicht durch andere Teile des Computerprogramms verändert werden. Ebenso muss die Datenkonsistenz zwischen mehreren Intertask-Variablen gewährleistet sein. Wenn mehrere Intertask-Variablen logisch zusammengehören, ist sicherzustellen, dass stets zusammengehörende Inhalte der Variablen zwischen den Tasks ausgetauscht werden.An important aspect in the communication between the The tasks of a computer program are to secure the Data consistency of the intertask variables. During the Processing part of the computer program (e.g. process  or task) may contain the contents of the variables to which the Accesses part of the computer program, not through others Parts of the computer program are changed. Likewise must the data consistency between several intertask variables to be guaranteed. If there are multiple intertask variables logically belonging together is to ensure that always related content of the variables between the tasks be replaced.

Ein weiterer wichtiger Aspekt bei der Kommunikation zwischen den Tasks ist der Zeitpunkt des Datenaustausches. Es gibt zwei unterschiedliche Möglichkeiten:
Another important aspect in the communication between the tasks is the time of the data exchange. There are two different options:

  • - Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden. Es wird immer der aktuellste Wert benutzt.- The transfer of the content of the intertask variable from one task to another task is not fixed Intervals bound. It is always the latest Value used.
  • - Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist an feste Zeitabstände gebunden.- The transfer of the content of the intertask variable from one task to another task is fixed Intervals bound.

Aus den Anforderungen an die Datenkonsistenz und den verschiedenen Zeitpunkten des Datenaustausches ergeben sich mehrere Anwendungsfälle:
Several use cases result from the requirements for data consistency and the different times of data exchange:

  • 1. Die Datenkonsistenz einer Intertask-Variable muss sichergestellt werden. Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden. Es wird immer der aktuellste Wert benutzt.1. The data consistency of an intertask variable must be ensured. The adoption of the content of the Intertask variable from one task to another Task is not bound to fixed time intervals. It will always use the latest value.
  • 2. Die Datenkonsistenz einer Intertask-Variable muss sichergestellt werden. Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden. Es wird immer der aktuellste Wert benutzt. Es finden Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variable statt.2. The data consistency of an intertask variable must be ensured. The adoption of the content of the Intertask variable from one task to another Task is not bound to fixed time intervals. It will  always use the latest value. Find it Calculations with multiple write operations on the Intertask variable instead.
  • 3. Die Datenkonsistenz zwischen mehreren Intertask- Variablen muss sichergestellt werden. Die Übernahme der Inhalte der Intertask-Variablen von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden. Es werden immer die aktuellsten Werte benutzt.3. The data consistency between multiple intertask Variables must be ensured. The takeover the contents of the intertask variables from a task Another task is not at fixed intervals bound. It will always be the most current values used.
  • 4. Die Datenkonsistenz einer Intertask-Variable oder zwischen mehreren Intertask-Variablen muss sichergestellt werden. Die Übernahme der Inhalte der Intertask-Variablen von einer Task zu einer anderen Task ist an feste Zeitabstände gebunden. Es finden eventuell Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variablen statt.4. The data consistency of an intertask variable or between several intertask variables be ensured. The adoption of the content of the Intertask variables from one task to another Task is bound to fixed time intervals. Find it possibly calculations with several write operations on the intertask variables instead.
  • 5. Eine Größe wird in mehreren Tasks benutzt, aber Datenaustausch zwischen den Tasks findet nicht statt. Es handelt sich um logisch zusammengehörende, aber voneinander unabhängige Variable.5. One size is used in several tasks, however There is no data exchange between the tasks. It is logically related, but mutually independent variables.
  • 6. Eine Größe wird in mehreren Tasks benutzt. Der Datenaustausch zwischen den Tasks wird auf spezielle Art geregelt (Sonderfälle). Es handelt sich um logisch zusammengehörende und voneinander abhängige Variablen.6. One size is used in several tasks. The Data exchange between the tasks is special Specified regulated (special cases). It is logical related and interdependent variables.

Die Abarbeitung von Tasks eines Computerprogramms in einem kooperativen Modus ist aus der DE 195 00 957 A1 bekannt. Ein Multitasking-Betriebssystem, das sowohl den kooperativen Modus als auch den preemptiven Modus bei der Abarbeitung eines Computerprogramms unterstützt, ist bspw. das Echtzeitbetriebssystem ERCOSEK von der Firma ETAS Entwicklungs- und Applikationswerkzeuge für elektronische Systeme GmbH & Co. KG, Stuttgart, Deutschland (vgl. ETAS GmbH & Co. KG: ERCOSEK V2.0.0 Manual, Stuttgart, 1998). Auf die DE 195 00 957 A1 und das ERCOSEK-Handbuch wird ausdrücklich Bezug genommen.The processing of tasks of a computer program in a cooperative mode is known from DE 195 00 957 A1. A multitasking operating system that supports both the cooperative mode and the preemptive mode when processing a computer program is, for example, the real-time operating system ERCOS EK from the company ETAS Development and Application Tools for Electronic Systems GmbH & Co.KG, Stuttgart, Germany ( see ETAS GmbH & Co. KG: ERCOS EK V2.0.0 Manual, Stuttgart, 1998). Reference is expressly made to DE 195 00 957 A1 and the ERCOS EK manual.

Für eine Intertask-Kommunikation wird bei dem aus dem Stand der Technik bekannten Multitasking-Betriebssystem ein sogenanntes ERCOS Message Communication Model benutzt. Für dieses Verfahren, das einen konsistenten Datenaustausch zwischen den Tasks gewährleistet, muss der Programmierer allerdings die Intertask-Variablen durch Schlüsselwörter als sogenannte Messages bereits bei der Definition der Variablen definieren. Außerdem wird nur ein bestimmter Mechanismus für die Intertask-Kommunikation unterstützt, wodurch die Funktionalität der bekannten Intertask- Kommunikation stark eingeschränkt ist.For intertask communication, the known multitasking operating system so-called ERCOS Message Communication Model used. For this process, which is consistent data exchange between the tasks, the programmer must however, the intertask variables through keywords as so-called messages already when defining the Define variables. In addition, only one particular Mechanism for intertask communication supported whereby the functionality of the well-known Intertask Communication is severely restricted.

In dem Computerprogramm wird für jede Message eine Variable als Original angelegt. Am Anfang einer Task werden diese Originale in lokale Variablen der Tasks kopiert. Die Algorithmen der Task arbeiten während der gesamten Laufzeit der Task mit diesen Kopien. Andere Tasks können nicht auf diese Kopien zugreifen, sie haben vielmehr eigene Kopien. Sollen Ergebnisse von Algorithmen einer Task auch für andere Tasks zur Verfügung stehen, werden die lokalen Kopien am Ende der Task in die Originale kopiert.In the computer program there is a variable for each message created as original. At the beginning of a task, these are Copies originals into local task variables. The Task algorithms operate throughout the runtime the task with these copies. Other tasks cannot access these copies, rather they have their own copies. Should the results of a task's algorithms also be used for other tasks are available, the local Copies of originals copied at the end of the task.

Das bekannte Verfahren ist für die Anwendungsfälle 1 und 2 einsetzbar. Die Datenkonsistenz ist gewährleistet, da die Tasks immer mit einer Kopie der Intertask-Variablen arbeiten. Für den Anwendungsfall 3 ist das bekannte Verfahren nur einsetzbar, wenn das Kopieren der Intertask- Variablen nicht unterbrochen werden kann. Für die übrigen Anwendungsfälle 4 bis 6 ist das Verfahren nicht einsetzbar. Die Aktualisierungsrate der Intertask-Variablen ist abhängig vom Ablauf des Computerprogramms. Es werden immer die aktuellsten Werte benutzt.The known method can be used for use cases 1 and 2 . Data consistency is guaranteed because the tasks always work with a copy of the Intertask variable. The known method can only be used for use case 3 if the copying of the intertask variables cannot be interrupted. The method cannot be used for the other applications 4 to 6 . The update rate of the intertask variables depends on the execution of the computer program. The most current values are always used.

Der vorliegenden Erfindung liegt deshalb die Aufgabe zugrunde, ein Verfahren zur Realisierung einer Intertask- Kommunikation der eingangs genannten Art dahingehend auszugestalten und weiterzubilden, dass das Verfahren eine möglichst hohe Flexibilität und die Intertask-Kommunikation eine möglichst alle Anforderungen abdeckende Funktionalität aufweist.The present invention is therefore based on the object based on a method for realizing an intertask Communication of the type mentioned above to design and further develop that the process a flexibility and intertask communication functionality that covers all requirements having.

Zur Lösung dieser Aufgabe schlägt die Erfindung ausgehend von dem Verfahren zur Realisierung einer Intertask- Kommunikation der eingangs genannten Art ein Verfahren mit den nachfolgenden Verfahrensschritten vor:
To achieve this object, the invention proposes, starting from the method for realizing intertask communication of the type mentioned at the beginning, a method with the following method steps:

  • - Ermitteln aller in dem Computerprogramm benutzten Variablen;- Determine all used in the computer program Variables;
  • - für jede Variable Ermitteln der Tasks, in denen auf die Variable zugegriffen wird und Ermitteln der Variablen (Intertask-Variablen), die in mehreren Tasks benutzt werden;- For each variable, determine the tasks in which the variable is accessed and determining the Variables (intertask variables) used in multiple tasks to be used;
  • - für jede Intertask-Variable Ermitteln von theoretisch anwendbaren Mechanismen für eine Intertask- Kommunikation aus zur Verfügung stehenden Mechanismen;- Determine theoretically for each intertask variable applicable mechanisms for an intertask Communication from available mechanisms;
  • - für die Intertask-Variablen, für die mehrere Mechanismen anwendbar sind, Auswahl eines Mechanismus für eine Intertask-Kommunikation aus dem theoretisch anwendbaren Mechanismen; und- for the intertask variables, for several Mechanisms are applicable, choosing a mechanism for an intertask communication from the theoretical applicable mechanisms; and
  • - in Abhängigkeit von dem theoretisch anwendbaren Mechanismus oder dem ausgewählten Mechanismus Einfügen von Maßnahmen in die Tasks für einen Datenaustausch in dem Computerprogramm.- depending on the theoretically applicable Insert mechanism or the selected mechanism of measures in the tasks for a data exchange in the computer program.
Vorteile der ErfindungAdvantages of the invention

Es wird also eine Tabelle mit allen in dem Computerprogramm benutzten Variablen erstellt. Für jede Variable werden die Tasks bestimmt, in denen die Variable gelesen und/oder beschrieben wird. Dieser Schritt kann automatisiert werden, indem z. B. ein Parser die Quellfiles des Computerprogramms auswertet.So it becomes a table with everyone in the computer program used variables created. For each variable, the  Determines tasks in which the variable is read and / or is described. This step can be automated by z. B. a parser the source files of the computer program evaluates.

In der Tabelle werden dann alle Intertask-Variablen bestimmt. Intertask-Variablen sind alle Variablen, die in mehreren Tasks benutzt werden. Alle Variablen, die in nur einer Task benutzt werden, können in den nachfolgenden Verfahrensschritten vernachlässigt werden. Dieser Schritt des Ermittelns der Intertask-Variablen kann automatisiert werden, indem z. B. ein geeignetes Werkzeug (Tool) die Tabelle auswertet.All intertask variables are then in the table certainly. Intertask variables are all variables that are in multiple tasks can be used. All variables in only a task can be used in the following Process steps are neglected. This step the determination of the intertask variables can be automated be by z. B. a suitable tool (Tool) die Evaluates table.

Aus einer Reihe zur Verfügung stehender Mechanismen, die im Einzelnen weiter unten beschrieben werden, werden dann für jede Intertask-Variable die theoretisch anwendbaren Mechanismen ermittelt. Sie ergeben sich aus den vorkommenden Tasks und deren Priorität. Dazu muss die Priorität jeder Task bekannt sein. Dieser Schritt kann automatisiert werden, indem z. B ein Werkzeug (Tool) die Tabelle auswertet.From a number of available mechanisms, which in the Individuals described below are then used for each intertask variable the theoretically applicable Mechanisms identified. They result from the occurring tasks and their priority. To do this, the Priority of each task to be known. This step can be automated by e.g. B a tool (Tool) die Evaluates table.

Wenn für eine Intertask-Variable mehrere Mechanismen anwendbar sind, muss bspw. ein Programmierer entscheiden, welcher Mechanismus angewendet werden soll. Entsprechend des ausgewählten Mechanismus bzw. entsprechend des anwendbaren Mechanismus, wenn für eine Intertask-Variable nur ein Mechanismus anwendbar ist, werden schließlich am Anfang bzw. am Ende der Tasks Maßnahmen für einen konsistenten Datenaustausch in das Computerprogramm eingefügt. Dieser Schritt kann automatisiert werden, indem z. B. ein geeignetes Werkzeug (Tool) die den einzufügenden Maßnahmen entsprechenden Programmteile erstellt.If there are several mechanisms for an intertask variable are applicable, for example, a programmer must decide which mechanism to use. Corresponding of the selected mechanism or according to the applicable mechanism if for an intertask variable only one mechanism is applicable will eventually be Measures for one at the beginning or end of the tasks consistent data exchange in the computer program inserted. This step can be automated by z. B. a suitable tool (tool) to be inserted Measures corresponding program parts created.

Die Vorteile der erfindungsgemäßen Verfahrens sind insbesondere darin zu sehen, dass eine Variable nicht schon bei der Definition als Intertask-Variable gekennzeichnet werden muss. Vielmehr muss erst, wenn die Konfiguration des gesamten Computerprogrammes feststeht, entschieden werden, ob für eine Variable bestimmte Mechanismen notwendig sind oder nicht. Auf diese Weise kann vermieden, dass zu viele oder zu wenige Variable als Intertask-Variable definiert werden.The advantages of the method according to the invention are  especially seeing that a variable doesn't already identified as an intertask variable in the definition must become. Rather, only when the configuration of the entire computer program is determined, decided, whether certain mechanisms are necessary for a variable or not. This way you can avoid too many or too few variables defined as intertask variables become.

Außerdem unterstützt das erfindungsgemäße Verfahren nicht nur einen speziellen Mechanismus für die Intertask- Kommunikation. Dem Programmierer stehen vielmehr eine Vielzahl unterschiedlicher Mechanismen mit ihren entsprechenden Eigenschaften (Flexibilität der Software, Optimierung des Resourcenverbrauchs, etc.) zur Verfügung, aus denen er für den jeweiligen Anwendungsfall einen optimalen Mechanismus auswählen kann.In addition, the method according to the invention does not support just a special mechanism for the intertask Communication. Rather, the programmer has one Many different mechanisms with their corresponding properties (flexibility of the software, Optimization of resource consumption, etc.) available, from which it can be used for the respective application can choose the optimal mechanism.

Schließlich kann das erfindungsgemäße Verfahren ohne großen Aufwand automatisiert werden. Der Programmierer kann dadurch bei der Erstellung der Software nahezu vollständig von den zum Teil sehr komplexen Zusammenhängen entlastet werden.Finally, the method according to the invention can be carried out without great Effort to be automated. The programmer can therefore almost completely when creating the software relieved of the sometimes very complex relationships become.

Gemäß einer vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen, dass die theoretisch anwendbaren Mechanismen für eine Intertask-Kommunikation anhand der in dem Computerprogramm vorkommenden Tasks und deren Priorität ermittelt werden.According to an advantageous development of the present Invention is proposed that theoretically applicable mechanisms for intertask communication based on the tasks occurring in the computer program and whose priority is determined.

Durch die zur Verfügung stehenden Mechanismen für eine Intertask-Kommunikation wird vorteilhafterweise sichergestellt, dass während der Abarbeitung eines Teils des Computerprogramms (z. B. Prozess oder Task) die Inhalte aller Intertask-Variablen nicht durch andere Teile des Computerprogramms verändert werden. So ist bspw. die Datenkonsistenz einer Intertask-Variable gefährdet, wenn die Intertask-Variable in einer hochprioren Task beschrieben und in einer niederprioren Task gelesen wird. Ein weiteres Problem kann auftreten, wenn eine Intertask- Variable in einer niederprioren Task (z. B. zur Ausführung von Zwischenrechnungen) mehrmals beschrieben und in einer hochprioren Task gelesen wird, und die niederpriore Task zwischen den Schreiboperationen von der hochprioren Task unterbrochen werden kann. Das ist bei kooperativem Scheduling der Fall, wenn die Schreiboperationen in mehreren Prozessen ausgeführt werden. Bei preemptivem Scheduling ist es bereits problematisch, wenn die Schreiboperationen mit mehreren Assembler-Befehlen geschehen.Through the mechanisms available for a Intertask communication is advantageous ensured that while processing a part the computer program (e.g. process or task) the content of all intertask variables not by other parts of the Computer program to be changed. For example  Data consistency of an intertask variable compromised if the intertask variable in a high priority task is described and read in a low-priority task. Another problem can arise if an intertask Variable in a low-priority task (e.g. for execution of interim calculations) described several times and in one high priority task is read, and the low priority task between the write operations from the high priority task can be interrupted. That is cooperative Scheduling the case when the write operations in multiple processes. With preemptive Scheduling is already problematic when that Write operations with multiple assembler instructions happen.

Des Weiteren wird durch den zur Verfügung stehenden Mechanismus für eine Intertask-Kommunikation vorteilhafterweise sichergestellt, dass durch die zur Verfügung stehenden Mechanismen für eine Intertask- Kommunikation sichergestellt wird, dass während der Abarbeitung des Computerprogramms die Inhalte aller logisch zusammengehörender Intertask-Variablen zusammen verändert werden. So ist bspw. die Datenkonsistenz zwischen mehreren Intertask-Variablen gefährdet, wenn die Intertask-Variablen in einer hochprioren Task beschrieben und in einer niederprioren Task gelesen werden. Außerdem ist die Datenkonsistenz zwischen mehreren Intertask-Variablen gefährdet, wenn die Intertask-Variablen in einer niederprioren Task beschrieben und in einer hochprioren Task gelesen werden, und die niederpriore Task zwischen den Schreiboperationen von der hochprioren Task unterbrochen werden kann. Das ist bei kooperativem Scheduling der Fall, wenn die Schreiboperationen in mehreren Prozessen durchgeführt werden. Bei preemptivem Scheduling ist es bereits problematisch, wenn die Schreiboperationen mit mehreren Assembler-Befehlen geschehen. Furthermore, by the available Intertask communication mechanism advantageously ensured that by the for Mechanisms available for an intertask Communication ensures that during the Processing the computer program the contents of all logically related intertask variables changed together become. For example, there is data consistency between several Intertask variables are at risk if the Intertask variables described in a high priority task and in a low priority task can be read. Besides, that is Data consistency between multiple intertask variables at risk if the intertask variables are in a low priority task described and in a high priority Task are read, and the low priority task between the Write operations interrupted by the high priority task can be. This is the case with cooperative scheduling, if the write operations in multiple processes be performed. With preemptive scheduling it is already problematic if the write operations with several assembler instructions happen.  

Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird vorgeschlagen, dass die zur Verfügung stehenden Mechanismen zumindest einen der nachfolgend aufgeführten Mechanismen umfassen:
According to a preferred embodiment of the present invention, it is proposed that the mechanisms available include at least one of the mechanisms listed below:

  • - aktueller Datenaustausch, Kopieren am Anfang einer niederprioren Task;- current data exchange, copying at the beginning of a low priority task;
  • - aktueller Datenaustausch, es gibt nur eine Intertask- Variable, kein Kopieren;- current data exchange, there is only one intertask Variable, no copying;
  • - aktueller Datenaustausch, Kopieren am Ende einer niederprioren Task;- Current data exchange, copying at the end of one low priority task;
  • - zyklischer Datenaustausch, Kopieren am Ende einer hochprioren Task zu bestimmten Zeitpunkten;- cyclical data exchange, copying at the end of one high priority task at certain times;
  • - zyklischer Datenaustausch, Kopieren am Anfang einer hochprioren Task zu bestimmten Zeitpunkten;- cyclical data exchange, copying at the beginning of a high priority task at certain times;
  • - kein Datenaustausch, Variablen sind voneinander unabhängig, kein Kopieren; und- no data exchange, variables are different from each other independent, no copying; and
  • - Sonderfälle.- Special cases.

Anhand der hier aufgeführten Mechanismen lassen sich sämtliche oben beschriebenen Anwendungsfälle realisieren.Based on the mechanisms listed here realize all the use cases described above.

Gemäß einer vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen, dass für den aktuellen Datenaustausch
According to an advantageous development of the present invention, it is proposed that for the current data exchange

  • - einer hochprioren schreibenden Task und mindestens einer niederprioren lesenden Task jeweils ein eigenes Abbild mindestens einer Intertask-Variablen zugeordnet und am Anfang jeder niederprioren Task der Inhalt der mindestens einen Intertask-Variablen von der hochprioren Task zu der mindestens einen niederprioren Task kopiert wird, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird;- a high priority writing task and at least a lower-priority reading task each has its own Map assigned to at least one Intertask variable and at the beginning of each low priority task the content of the at least one intertask variable from the high priority task to the at least one low priority Task is copied if the at least one Intertask variable described in the high priority task and read in the at least one low priority task becomes;
  • - der Inhalt einer Intertask-Variablen zwischen einer hochprioren Task und einer niederprioren Task nicht kopiert wird, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird; oder- the content of an intertask variable between one high priority task and a low priority task  is copied if the intertask variable in the low-priority task described and in the at least reading a high priority task; or
  • - einer niederprioren schreibenden Task und mindestens einer hochprioren lesenden Task jeweils ein eigenes Abbild mindestens einer Intertask-Variablen zugeordnet und der Inhalt der mindestens einer Intertask- Variablen am Ende der niederprioren Task von der niederprioren Task zu der mindestens einen hochprioren Task kopiert wird, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird.- a low-priority writing task and at least a high-priority reading task each has its own Map assigned to at least one Intertask variable and the content of at least one intertask Variables at the end of the low priority task from the low priority task to the at least one high priority Task is copied if the Intertask variable in the low-priority task described and in the at least a high priority task is read.

Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird vorgeschlagen, dass, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird, eine Unterbrechung des Kopierens des Inhalts der mindestens einen Intertask-Variablen durch eine hochpriore Task verhindert wird.According to a preferred embodiment of the present Invention is proposed that if the at least an intertask variable is described in the high-priority task and read in the at least one low priority task an interruption of copying the content of the at least one intertask variable by a high priority Task is prevented.

Gemäß einer anderen bevorzugten Ausführungsform der vorliegenden Erfindung wird vorgeschlagen, dass, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird, eine Unterbrechung der Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variable in der niederprioren Task ermöglicht wird.According to another preferred embodiment of the The present invention proposes that if the Intertask variable described in the lower priority task and reading at least one high priority task, an interruption of calculations with several Write operations on the intertask variable in the low priority task is enabled.

Gemäß einer anderen vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen, dass für den zyklischen Datenaustausch
According to another advantageous development of the present invention, it is proposed that for cyclic data exchange

  • - der Inhalt mindestens einer Intertask-Variablen in einem ersten Aufruf einer hochprioren Task am Ende der hochprioren Task von der hochprioren Task zu mindestens einer niederprioren Task kopiert wird, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird; oder- The content of at least one intertask variable in a first call of a high priority task at the end of the high priority task from the high priority task to copying at least one low priority task,  if the at least one intertask variable in the high priority task described and in the at least reading a low priority task; or
  • - der Inhalt mindestens einer Intertask-Variablen in einem ersten Aufruf einer hochprioren Task am Anfang der hochprioren Task von einer niederprioren Task zu mindestens einer hochprioren Task kopiert wird, falls die mindestens eine Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird.- The content of at least one intertask variable in a first call of a high priority task at the beginning the high priority task from a low priority task at least one high priority task is copied if the at least one intertask variable in the low-priority task described and in the at least a high priority task is read.
Zeichnungendrawings

Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in der Zeichnung dargestellt sind. Dabei bilden alle beschriebenen oder dargestellten Merkmale für sich oder in beliebiger Kombination den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung in den Patentansprüchen oder deren Rückbeziehung sowie unabhängig von ihrer Formulierung bzw. Darstellung in der Beschreibung bzw. in der Zeichnung. Es zeigen:Other features, applications and advantages of the Invention result from the following description of embodiments of the invention, which in the Drawing are shown. Thereby form all described or illustrated features for themselves or in any Combination the subject of the invention, regardless of their summary in the claims or their Relationship and regardless of their wording or Representation in the description or in the drawing. It demonstrate:

Fig. 1 eine Tabelle mit Mechanismen für eine Intertask- Kommunikation in einem Multitasking- Betriebssystem; Fig. 1 is a table with mechanisms for Intertask- communication in a multi-tasking operating system;

Fig. 2 eine Legende zu der Tabelle aus Fig. 1; FIG. 2 shows a legend for the table from FIG. 1;

Fig. 3 einen aus dem Stand der Technik bekannten Mechanismus für eine Intertask-Kommunikation in einem Multitasking-Betriebssystem; Fig. 3 is a well-known from the prior art mechanism for an intertask communication in a multi-tasking operating system;

Fig. 4 einen Mechanismus für eine niederpriore Task für eine Intertask-Kommunikation mit einem aktuellen Datenaustausch; Figure 4 shows a mechanism for a low-priority task for an intertask communication with a current data transfer.

Fig. 5 einen Taskablauf bei einem aktuellen Datenaustausch; Fig. 5 is a task flow in a current data exchange;

Fig. 6 einen Mechanismus für eine hochpriore Task für eine Intertask-Kommunikation mit einem zyklischen Datenaustausch; Fig. 6 is a mechanism for a high-priority task for an intertask communication with a cyclic data exchange;

Fig. 7 einen Taskablauf bei einem zyklischen Datenaustausch; Fig. 7 is a task flow in a cyclic data exchange;

Fig. 8 eine Tabelle zur Verdeutlichung eines erfindungsgemäßen Verfahrens anhand von fünf beispielhaft herausgegriffenen Variablen; und Fig. 8 is a table illustrating a method according to the invention with reference to five exemplary picked out variables; and

Fig. 9 ein Ablaufdiagramm eines erfindungsgemäßen Verfahrens gemäß einer bevorzugten Ausführungsform. Fig. 9 is a flow chart of a method according to a preferred embodiment.

Beschreibung der AusführungsbeispieleDescription of the embodiments

Aus dem Stand der Technik sind Computerprogramme bekannt, die in mehrere Tasks unterteilt sind. Eine Task ist ein Softwareteil, der als Folge eines Ereignisses oder in regelmäßigen Zeitabständen durchgeführt werden soll. Jeder Task ist eine Priorität zugeordnet. Tasks können in einem kooperativen oder preemptiven Modus ausgeführt werden. Dabei sind alle preemptiven Tasks grundsätzlich höher priorisiert als die kooperativen Tasks. Eine Task umfasst eine Sequenz von mindestens einem Prozess. Ein Prozess ist eine abgeschlossene funktionelle Einheit innerhalb einer Task. Programmtechnisch ist ein Prozess eine Funktion ohne Argumente und ohne Rückgabewert. Prozesse werden sequentiell abgearbeitet. Computer programs are known from the prior art, which are divided into several tasks. A task is a Software part that occurs as a result of an event or in should be carried out at regular intervals. Everyone Task is assigned a priority. Tasks can be done in one cooperative or preemptive mode. All preemptive tasks are fundamentally higher prioritized as the cooperative tasks. A task includes a sequence of at least one process. Is a process a closed functional unit within a Task. In terms of programming, a process is a function without Arguments and no return value. Processes become processed sequentially.  

Wenn zu einem bestimmten Zeitpunkt mehrere Tasks gleichzeitig ausgeführt werden sollen, werden die Tasks entsprechend ihrer Priorität abgearbeitet. Die Task mit der höchsten Priorität wird als erste ausgeführt. Eine Task mit einer niedrigeren Priorität wird von einer höherprioren Task unterbrochen. Eine preemptive Task kann niederpriore Tasks (preemptive oder kooperative Tasks) jederzeit, d. h. auch während der Abarbeitung eines Prozesses, unterbrechen. Eine kooperative Task kann niederpriore Tasks (nur kooperative Tasks) lediglich zwischen zwei Prozessen unterbrechen.If there are multiple tasks at a given time The tasks are to be executed simultaneously processed according to their priority. The task with the highest priority is carried out first. A task with a lower priority is given by a higher priority Task interrupted. A preemptive task can have a lower priority Tasks (preemptive or cooperative tasks) at any time, d. H. interrupt even during the execution of a process. A cooperative task can have lower priority tasks (only cooperative tasks) only between two processes interrupt.

Die Ausführung eines aus mehreren Tasks bestehenden Computerprogramms wird von einem Multitasking- Betriebssystem gesteuert. In den einzelnen Tasks gibt es Variable, auf die in mehreren Tasks lesend und/oder schreibend zugegriffen wird. Solche Variable werden als Intertask-Variable bezeichnet. Sie dienen zum Austausch von Informationen zwischen den Tasks.The execution of a multi-task Computer program is run by a multitasking Operating system controlled. There are in the individual tasks Variable to which reading and / or reading in several tasks is accessed in writing. Such variables are called Intertask variable called. They are used to exchange Information between the tasks.

Während der Ausführung des Computerprogramms muss auf Datenkonsistenz der Intertask-Variablen geachtet werden. Es ist sicherzustellen, dass während der Abarbeitung eines Teiles der Software (z. B. Prozess oder Task) die Inhalte aller Variablen, auf die der Softwareteil zugreift, nicht durch andere Softwareteile verändert werden. So ist die Datenkonsistenz einer Intertask-Variablen bspw. gefährdet, wenn die Intertask-Variable in einer hochprioren Task beschrieben und einer niederprioren Task gelesen wird. Ein weiteres Problem tritt auf, wenn eine Intertask-Variable in einer niederprioren Task (z. B. zur Durchführung von Zwischenrechnungen) mehrmals beschrieben und in einer hochprioren Task gelesen wird, und die niederpriore Task zwischen den Schreiboperationen von der hochprioren Task unterbrochen werden kann. Das ist bei kooperativem Scheduling der Fall, wenn die Schreiboperationen in mehreren Prozessen durchgeführt werden. Bei preemptivem Scheduling ist es bereits problematisch, wenn die Schreiboperationen mit mehrern Assembler-Befehlen realisiert sind.During the execution of the computer program must be on Data consistency of the intertask variables must be observed. It it must be ensured that during the processing of a Part of the software (e.g. process or task) the content not all variables that the software part accesses be changed by other software parts. That's how it is Data consistency of an intertask variable, for example, at risk, if the intertask variable is in a high priority task described and a low priority task is read. On Another problem occurs when an intertask variable is in a low priority task (e.g. to perform Interim calculations) described several times and in one high priority task is read, and the low priority task between the write operations from the high priority task can be interrupted. That is cooperative Scheduling the case when the write operations in  several processes can be carried out. With preemptive Scheduling is already problematic when that Write operations with multiple assembler instructions are realized.

Auch die Sicherung der Datenkonsistenz zwischen mehreren Intertask-Variablen ist zu beachten. Falls mehrere Intertask-Variablen logisch zusammengehören, ist sicherzustellen, dass stets zusammengehörende Inhalte der Variablen zwischen den Tasks ausgetauscht werden. So ist die Datenkonsistenz zwischen mehreren Intertask-Variablen bspw. gefährdet, wenn die Intertask-Variablen in einer hochprioren Task beschrieben und einer niederprioren Task gelesen werden. Die Datenkonsistenz zwischen mehreren Intertask-Variablen ist außerdem gefährdet, wenn die Intertask-Variablen in einer niederprioren Task beschrieben und in einer hochprioren Task gelesen werden, und die niederpriore Task zwischen den Schreiboperationen von der hochprioren Task unterbrochen werden kann. Das ist bei kooperativem Scheduling der Fall, wenn die Schreiboperationen in mehreren Prozessen durchgeführt werden. Bei preemptivem Scheduling ist es bereits problematisch, wenn die Schreiboperationen mit mehreren Assembler-Befehlen realisiert sind.Also ensuring data consistency between several Intertask variables have to be considered. If more Intertask variables belong together logically ensure that the content of the Variables can be exchanged between the tasks. So is the data consistency between several intertask variables e.g. at risk if the intertask variables are in a high priority task and a low priority task to be read. The data consistency between several Intertask variables are also at risk if the Intertask variables described in a low-priority task and read in a high priority task, and the low priority task between the write operations of the high priority task can be interrupted. That is with cooperative scheduling when the Write operations performed in multiple processes become. With preemptive scheduling it is already problematic if the write operations with multiple Assembler instructions are implemented.

Ein weiterer wichtiger Aspekt bei der Intertask- Kommunikation ist der Zeitpunkt des Datenaustausches. Es gibt zwei unterschiedliche Möglichkeiten:
Another important aspect in intertask communication is the time of data exchange. There are two different options:

  • - Bei einem aktuellen Datenaustausch ist die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task nicht an feste Zeitabstände gebunden und es wird immer der aktuellste Wert benutzt.- With a current data exchange, the takeover is the content of the intertask variable from a task another task not at fixed intervals bound and it always becomes the most current value used.
  • - Bei einem zyklischen Datenaustausch ist die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task an feste Zeitabstände gebunden.- In the case of cyclic data exchange, the takeover is  the content of the intertask variable from a task another task is bound to fixed time intervals.

Es gibt drei Möglichkeiten eines aktuellen Datenaustausches (vgl. Fig. 4):
There are three options for a current data exchange (see Fig. 4):

  • 1. Eine oder mehrere Intertask-Variablen werden in einer hochprioren Task beschrieben und in einer oder mehreren niederprioren Tasks gelesen. In diesem Fall wird der hochprioren schreibenden Task und den niederprioren lesenden Tasks jeweils eine eigene Kopie der Intertask-Variablen zugeordnet. Am Anfang jeder niederprioren Task wird der Inhalt der Intertask- Variablen von der hochprioren Task zu der niederprioren Task kopiert (vgl. "Task-Anfang" in Fig. 4). Handelt es sich um mehrere Intertask- Variablen, muss sichergestellt werden, dass das Kopieren nicht durch eine der höherprioren Tasks unterbrochen werden kann.1. One or more intertask variables are written in a high priority task and read in one or more low priority tasks. In this case, the high-priority writing task and the low-priority reading task are each assigned a separate copy of the Intertask variable. At the beginning of each low-priority task, the content of the intertask variable is copied from the high-priority task to the low-priority task (cf. "Task start" in Fig. 4). If there are several Intertask variables, it must be ensured that the copying cannot be interrupted by one of the higher priority tasks.
  • 2. Eine Intertask-Variable wird in einer niederprioren Task beschrieben und in einer oder mehreren hochprioren Tasks gelesen. In diesem Fall gibt es nur eine Variable für alle Tasks und Kopien sind nicht notwendig.2. An intertask variable is in a lower priority Task described and in one or more high priority tasks read. In this case, there is only are not a variable for all tasks and copies necessary.
  • 3. Eine Intertask-Variable wird in einer niederprioren Task beschrieben und in einer oder mehreren höherprioren Tasks gelesen. Die Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variable in der niederprioren Task können unterbrochen werden. Alternativ können auch mehrere Intertask-Variablen in einer niederprioren Task beschrieben oder in einer oder mehreren höherprioren Tasks gelesen werden. Die Datenkonsistenz zwischen diesen Intertask-Variablen muss sichergestellt werden. In diesen beiden Fällen wird der niederprioren schreibenden Task und den hochprioren lesenden Tasks jeweils eine eigene Kopie der Intertask-Variablen zugeordnet. Am Ende der niederprioren Task wird der Inhalt der Intertask- Variablen von der niederprioren Task zu den hochprioren Tasks kopiert (vgl. "Task-Ende" in Fig. 4). Handelt es sich um mehrere Intertask-Variablen oder mehrere hochpriore Tasks, muss sichergestellt werden, dass das Kopieren nicht durch eine der hochprioren Tasks unterbrochen werden kann.3. An intertask variable is written in a lower priority task and read in one or more higher priority tasks. The calculations with several write operations on the intertask variable in the low-priority task can be interrupted. Alternatively, several intertask variables can also be written in a lower-priority task or read in one or more higher-priority tasks. The data consistency between these intertask variables must be ensured. In these two cases, the low-priority writing task and the high-priority reading task are each assigned a separate copy of the Intertask variable. At the end of the low-priority task, the contents of the intertask variables are copied from the low-priority task to the high-priority tasks (cf. "End of task" in FIG. 4). If there are several Intertask variables or several high-priority tasks, it must be ensured that the copying cannot be interrupted by one of the high-priority tasks.

In Fig. 5 ist der Taskablauf beispielhaft für einen ersten Zyklus und einen zweiten Zyklus bei dem aktuellen Datenaustausch dargestellt. Es ist deutlich zu erkennen, dass die Kopiervorgänge von der hochprioren Task Hi zu der niederprioren Task Lo bzw. von der niederprioren Task Lo zu der hochprioren Task Hi am Anfang bzw. am Ende der niederprioren Task ausgeführt werden.In FIG. 5, the task scheduling is exemplified for a first cycle and a second cycle in the current data exchange. It can clearly be seen that the copying processes from the high-priority task Hi to the low-priority task Lo or from the low-priority task Lo to the high-priority task Hi are carried out at the beginning or at the end of the low-priority task.

Zur Realisierung des zyklischen Datenaustausches werden in dem Computerprogramm (Software) für die betreffenden Intertask-Variablen jeweils mehrere Kopien angelegt. Jeder Task, in der die Intertask-Variable benutzt wird, wird eine eigene Kopie zugeordnet. Die Anzahl der Kopien einer Intertask-Variable ergibt sich somit aus der Anzahl der Tasks, in der sie benutzt wird.To implement the cyclic data exchange, in the computer program (software) for the concerned Intertask variables each created several copies. Everyone Task in which the intertask variable is used becomes a own copy assigned. The number of copies of one Intertask variable thus results from the number of Tasks in which it is used.

Für den zyklischen Datenaustausch gibt es zwei Möglichkeiten (vgl. Fig. 6):
There are two options for cyclic data exchange (see Fig. 6):

  • 1. Eine oder mehrere Intertask-Variablen werden in einer hochprioren Task beschrieben und in einer oder mehreren niederprioren Tasks gelesen. In diesem Fall muss zu Beginn eines Zyklus (im ersten Aufruf der hochprioren Task) am Ende der hochprioren Task (vgl. "Task-Ende" in Fig. 6) der Inhalt der Intertask- Variablen von der hochprioren Task Hi zu den niederprioren Tasks Lo kopiert werden.1. One or more intertask variables are written in a high priority task and read in one or more low priority tasks. In this case, at the beginning of a cycle (in the first call of the high-priority task) at the end of the high-priority task (cf. "Task end" in FIG. 6), the content of the intertask variables from the high-priority task Hi to the low-priority tasks Lo be copied.
  • 2. Eine oder mehrere Intertask-Variablen werden in einer niederprioren Task beschrieben und in einer oder mehreren hochprioren Tasks gelesen. In diesem Fall muss zu Beginn des Zyklus (im ersten Aufruf der höchstprioren Task) am Anfang der höchstprioren Task (vgl. "Task-Anfang" in Fig. 6) der Inhalt der Intertask-Variablen von der niederprioren Task Lo z uden hochprioren Tasks Hi kopiert werden.2. One or more intertask variables are written in a low-priority task and read in one or more high-priority tasks. In this case, at the beginning of the cycle (in the first call of the highest-priority task) at the beginning of the highest-priority task (cf. "Task start" in FIG. 6), the content of the intertask variables from the low-priority task Log and high-priority tasks Hi be copied.

Die Dauer eines Zyklus wird von der Task mit der längsten Abtastzeit bestimmt, in der die Intertask-Variable benutzt wird. Jeder Zyklus beginnt mit dem Aufruf der Task mit der höchsten Priorität. Dann folgen die anderen (niederprioren) Tasks. In zyklusorientierten Systemen hat üblicherweise die Task mit der kürzesten Abtastzeit die höchste Priorität und die Task mit der längsten Abtastzeit die niedrigste Priorität. Die Abtastzeiten stehen in einem ganzzahligen Verhältnis zueinander.The duration of a cycle is determined by the task with the longest Determines the sampling time in which the intertask variable is used becomes. Each cycle begins with the call of the task with the top priority. Then follow the others (lower priorities) Tasks. In cycle-oriented systems, this usually has Task with the shortest sampling time has the highest priority and the task with the longest sampling time has the lowest Priority. The sampling times are in an integer Relationship to each other.

Das Kopieren der Intertask-Variablen findet zu einem definierten Zeitpunkt in der Task mit der höchsten Priorität (des Zyklus) statt. Diese Tasks und somit auch das Kopieren der Intertask-Variablen kann nicht unterbrochen werden. Auch kann bei intakten Scheduling die niederpriore Task nicht von der hochprioren Task zu Beginn eines Zyklus unterbrochen worden sein. Aus diesen Gründen ist das Verfahren auch einsetzbar, wenn die Intertask- Variablen in den Tasks mehrmals beschrieben und/oder die Datenkonsistenz zwischen mehreren Intertask-Variablen sichergestellt werden soll.The intertask variables are copied to one defined time in the task with the highest Priority (of the cycle) instead. These tasks and therefore also copying the intertask variables cannot to be interrupted. Even with intact scheduling the low priority task not from the high priority task at the beginning of a cycle. For these reasons the method can also be used if the intertask Variables described several times in the tasks and / or the Data consistency between multiple intertask variables should be ensured.

In Fig. 7 ist ein Taskablauf für einen ersten Zyklus und sein einen zweiten Zyklus für einen zyklischen Datenaustausch beispielhaft dargestellt. Deutlich ist zu erkennen, dass die Kopiervorgänge von der niederprioren Task Lo zu der hochprioren Task Hi bzw. von der hochprioren Task Hi zu der niederprioren Task Lo am Anfang bzw. am Ende der hochprioren Task erfolgen.In Fig. 7, a task scheduling for a first cycle and a second cycle be used for cyclic data exchange is illustrated by way of example. It can be clearly seen that the copying processes from the low-priority task Lo to the high-priority task Hi or from the high-priority task Hi to the low-priority task Lo take place at the beginning or at the end of the high-priority task.

Aus den Anforderungen an die Datenkonsistenz und den verschiedenen Zeitpunkten des Datenaustausches ergeben sich die nachfolgenden Anwendungsfälle:
The following use cases result from the requirements for data consistency and the different times of data exchange:

  • 1. Die Datenkonsistenz einer Intertask-Variable muss sichergestellt werden. Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden (aktueller Datenaustausch).1. The data consistency of an intertask variable must be ensured. The adoption of the content of the Intertask variable from one task to another Task is not bound to fixed time intervals (current data exchange).
  • 2. Die Datenkonsistenz einer Intertask-Variable muss sichergestellt werden. Die Übernahme des Inhalts der Intertask-Variable von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden (aktueller Datenaustausch). Es finden Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variable statt.2. The data consistency of an intertask variable must be ensured. The adoption of the content of the Intertask variable from one task to another Task is not bound to fixed time intervals (current data exchange). There are calculations with several write operations on the intertask variable instead of.
  • 3. Die Datenkonsistenz zwischen mehreren Intertask- Variablen muss sichergestellt werden. Die Übernahme der Inhalte der Intertask-Variablen von einer Task zu einer anderen Task ist nicht an feste Zeitabstände gebunden (aktueller Datenaustausch).3. The data consistency between multiple intertask Variables must be ensured. The takeover the contents of the intertask variables from a task Another task is not at fixed intervals bound (current data exchange).
  • 4. Die Datenkonsistenz einer Intertask-Variable oder zwischen mehreren Intertask-Variablen muss sichergestellt werden. Die Übernahme der Inhalte der Intertask-Variablen von einer Task zu einer anderen Task ist an feste Zeitabstände gebunden (zyklischer Datenaustausch). Es finden Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variablen statt.4. The data consistency of an intertask variable or between several intertask variables be ensured. The adoption of the content of the Intertask variables from one task to another Task is bound to fixed time intervals (more cyclical Data exchange). There are calculations with several  Write operations to the intertask variables take place.
  • 5. Eine Größe wird in mehreren Tasks benutzt, aber ein Datenaustausch zwischen den Tasks findet nicht statt. Es handelt sich um logisch zusammengehörende, aber voneinander unabhängige Variablen.5. One size is used in several tasks, but one There is no data exchange between the tasks. It is logically related, but mutually independent variables.
  • 6. Eine Größe wird in mehreren Tasks benutzt. Der Datenaustausch zwischen den Tasks wird auf spezielle Art geregelt (Sonderfälle). Es handelt sich um logisch zusammengehörende und voneinander abhängige Variablen.6. One size is used in several tasks. The Data exchange between the tasks is special Specified regulated (special cases). It is logical related and interdependent variables.

Die zur Realisierung dieser Anwendungsfälle erfindungsgemäß vorgesehenen Mechanismen sind in Fig. 1 dargestellt. Sie werden im Einzelnen später beschrieben. Zunächst wird jedoch ein aus dem Stand der Technik bekannter Mechanismus, das sogenannte ERCOS Message Communication Model, beschrieben. Dieser bekannte Mechanismus ist in einem bekannten Echtzeit Multitasking-Betriebssystem ERCOSEK der Firma ETAS Entwicklungs- und Applikationswerkzeuge für elektronische Systeme GmbH und Co. KG, Stuttgart enthalten. Der bekannte Mechanismus ist in Fig. 3 dargestellt. Bei dem bekannten Multitasking-Betriebsystem wird eine Intertask-Kommunikation dadurch realisiert, dass ein Programmierer bereits bei der Definition der Variablen des Computerprogramms alle Intertask-Variablen durch Schlüsselwörter als sogenannte Messages definiert. In dem Computerprogramm (Software) wird für jede Message eine Variable als Original O angelegt. Am Anfang einer Task Hi, Lo werden diese Originale O in lokale Variable der Task Hi, Lo kopiert. Die Algorithmen der Task arbeiten während der gesamten Laufzeit der Task mit diesen Kopien. Andere Tasks können nicht auf diese Kopien zugreifen, sie haben vielmehr eigene Kopien. Sollen Ergebnisse von Algorithmen der Tasks Hi, Lo auch für andere Tasks verfügbar sein, werden die lokalen Kopien am Ende der Task Hi, Lo in die Originale O kopiert (vgl. Fig. 3).The mechanisms provided according to the invention for realizing these use cases are shown in FIG. 1. They will be described in detail later. First, however, a mechanism known from the prior art, the so-called ERCOS Message Communication Model, is described. This known mechanism is contained in a known real-time multitasking operating system ERCOS EK from the company ETAS Development and Application Tools for Electronic Systems GmbH and Co. KG, Stuttgart. The known mechanism is shown in Fig. 3. In the known multitasking operating system, intertask communication is realized in that a programmer already defines all intertask variables by keywords as so-called messages when defining the variables of the computer program. In the computer program (software), a variable is created as the original O for each message. At the beginning of a task Hi, Lo, these originals O are copied into local variables of the task Hi, Lo. The task's algorithms work with these copies throughout the task's runtime. Other tasks cannot access these copies, rather they have their own copies. If results from algorithms of tasks Hi, Lo are also to be available for other tasks, the local copies are copied into the originals O at the end of task Hi, Lo (cf. FIG. 3).

Dieser bekannte Mechanismus kann nur für die Anwendungsfälle 1 und 2 eingesetzt werden. Die Datenkonsistenz wird dadurch gewährleistet, dass die Tasks Hi, Lo immer mit einer Kopie der Intertask-Variable arbeiten. Für den Anwendungsfall 3 ist das Verfahren nur einsetzbar, wenn das Kopieren der Intertask-Variablen nicht unterbrochen werden kann. Für die anderen Anwendungsfälle 4 bis 6 ist das bekannte Verfahren nicht einsetzbar. Die Aktualisierungsrate der Intertask-Variablen ist abhängig von dem Ablauf des Computerprogramms. Es werden immer die aktuellsten Werte benutzt.This known mechanism can only be used for use cases 1 and 2 . Data consistency is guaranteed by the fact that the tasks Hi, Lo always work with a copy of the Intertask variable. For use case 3 , the method can only be used if the copying of the intertask variables cannot be interrupted. The known method cannot be used for other applications 4 to 6 . The update rate of the intertask variables depends on the execution of the computer program. The most current values are always used.

Um die Realisierung einer Intertask-Kommunikation in einem Multitasking-Betriebssystem flexibler zu gestalten und um die Funktionalität der Intertask-Kommunikation zu erhöhen, schlägt die Erfindung ein Verfahren vor, von dem ein Ablaufdiagramm einer bevorzugten Ausführungsform in Fig. 9 dargestellt ist. Teil des erfindungsgemäßen Verfahrens sind die in Fig. 1 dargestellten Mechanismen. Der Mechanismus A betrifft einen aktuellen Datenaustausch, wobei am Anfang einer niederprioren Task kopiert wird. Der Mechanismus A ist für die Anwendungsfälle 1, 2 und 3 einsetzbar. Auf die hochpriore Task Hi wird schreibend (W) und lesend (R) zugegriffen. Auf die niederpriore Task Lo wird nur lesend (R) zugegriffen. Der Mechanismus B.1 betrifft ebenfalls einen aktuellen Datenaustausch, wobei es nur eine Variable gibt. Kopien sind somit nicht notwendig. Der Mechanismus B.1 ist nur für den Anwendungsfall 1 einsetzbar. Auf die hochpriore Task Hi wird nur lesend (R) und auf die niederpriore Task Lo wird sowohl lesend (R) als auch schreibend (W) zugegriffen. Der Mechanismus B.2 betrifft schließlich auch einen aktuellen Datenaustausch, wobei am Ende der niederprioren Task kopiert wird. Der Mechanismus B.2 ist für die Anwendungsfälle 2 und 3 einsetzbar. Auf die hochpriore Task Hi wird lesend (R) und auf die niederpriore Task Lo wird lesend (R) und schreibend (W) zugegriffen.In order to make the implementation of intertask communication in a multitasking operating system more flexible and to increase the functionality of the intertask communication, the invention proposes a method, of which a flowchart of a preferred embodiment is shown in FIG. 9. The mechanisms shown in FIG. 1 are part of the method according to the invention. Mechanism A relates to a current data exchange, with copying at the beginning of a low-priority task. Mechanism A can be used for use cases 1 , 2 and 3 . The high-priority task Hi is accessed for writing (W) and reading (R). The low priority task Lo is only read (R). Mechanism B.1 also concerns current data exchange, with only one variable. Copies are therefore not necessary. Mechanism B.1 can only be used for use case 1 . The high-priority task Hi is only read (R) and the low-priority task Lo is only read (R) and write (W). Finally, mechanism B.2 also concerns current data exchange, with copying at the end of the low-priority task. Mechanism B.2 can be used for use cases 2 and 3 . The high priority task Hi is read (R) and the low priority task Lo is read (R) and write (W).

Der Mechanismus C betrifft einen zyklischen Datenaustausch, wobei am Ende einer hochprioren Task Hi zu bestimmten Zeitpunkten kopiert wird. Der Mechanismus C ist nur für den Anwendundsfall 4 einsetzbar. Auf die hochpriore Task Hi wird sowohl lesend (R) als auch schreibend (W) und auf die niederpriore Task Lo wird lediglich lesend (R) zugegriffen. Der Mechanismus D betrifft ebenfalls einen zyklischen Datenaustausch, wobei am Anfang der hochprioren Task Hi zu bestimmten Zeitpunkten kopiert wird. Der Mechanismus D ist ebenfalls nur für den Anwendungfall 4 einsetzbar. Auf die hochpriore Task Hi wird nur lesend (R) und auf die niederpriore Task Lo wird sowohl lesend (R) als auch schreibend (W) zugegriffen. Bei dem Mechanismus E erfolgt kein Datenaustausch, da die Variablen voneinander unabhängig sind. Der Mechanismus E ist für den Anwendungsfall 5 einsetzbar. Auf die hochpriore Task Hi und auf die niederpriore Task Lo wird sowohl lesend (R) als auch schreibend (W) zugegriffen. Der Mechanismus F betrifft sämtliche Sonderfälle. Er ist für den Anwendungsfall 6 einsetzbar. Bei dem Mechanismus F wird auf die hochpriore Task Hi und auf die niederpriore Task Lo sowohl lesend (R) als auch schreibend (W) zugegriffen.Mechanism C relates to a cyclic data exchange, with copying at certain times at the end of a high-priority task Hi. Mechanism C can only be used for use case 4 . The high priority task Hi is read (R) and write (W) and the low priority task Lo is read only (R). Mechanism D also relates to a cyclic data exchange, with copying at certain times at the beginning of the high-priority task Hi. Mechanism D can also only be used for use case 4 . The high-priority task Hi is only read (R) and the low-priority task Lo is only read (R) and write (W). There is no data exchange with mechanism E because the variables are independent of each other. Mechanism E can be used for application 5 . The high-priority task Hi and the low-priority task Lo are both read (R) and write (W). Mechanism F affects all special cases. It can be used for application 6 . With mechanism F, the high-priority task Hi and the low-priority task Lo are both read (R) and write (W).

Zur näheren Erläuterung der Fig. 1 wird auf die Legende zu Fig. 1, die in Fig. 2 abgebildet ist, verwiesen.For a more detailed explanation of FIG. 1, reference is made to the legend to FIG. 1, which is shown in FIG. 2.

Im Folgenden wird nun das erfindungsgemäße Verfahren aus Fig. 9 näher erläutert. Das Verfahren beginnt in einem Funktionsblock 10. In einem Funktionsblock 11 wird das Computerprogramm bzw. werden die Tasks und die Prozesse des Computerprogramms, erstellt. Anschließend werden in einem Funktionsblock 12 alle Variablen ermittelt, die in dem Computerprogramm benutzt werden. Diese Variablen können bspw. in einer Tabelle abgelegt werden. Für jede Variable werden die Tasks bestimmt, in denen auf die Variable zugegriffen, d. h. die Variable gelesen und/oder beschrieben, wird. Dieser Schritt kann automatisiert werden, indem bspw. ein Parser die Quellfiles des Computerprogramms auswertet.The method according to the invention from FIG. 9 is now explained in more detail below. The method begins in a function block 10 . The computer program or the tasks and the processes of the computer program are created in a function block 11 . Then all the variables that are used in the computer program are determined in a function block 12 . These variables can, for example, be stored in a table. The tasks in which the variable is accessed, that is to say the variable is read and / or written, are determined for each variable. This step can be automated by, for example, a parser evaluating the source files of the computer program.

Anschließend werden in einem Funktionsblock 13 alle Variablen bestimmt, die in mehreren Tasks benutzt werden. Diese Variablen werden als Intertask-Variablen bezeichnet. Dieser Schritt kann automatisiert werden, indem z. B. ein geeignetes Werkzeug (Tool) die Tabelle mit den Variablen auswertet.Subsequently, all variables that are used in several tasks are determined in a function block 13 . These variables are called intertask variables. This step can be automated by e.g. B. A suitable tool (tool) evaluates the table with the variables.

Dann werden für jede Intertask-Variable aus zur Verfügung stehenden Mechanismen (vgl. Fig. 1 und Fig. 3) die theoretisch anwendbaren Mechanismen ermittelt. Dazu wird in einem Funktionsblock 14 eine erste Intertask-Variable ausgewählt. In einem Funktionsblock 15 werden dann die für die ausgewählte Intertask-Variable theoretisch anwendbaren Mechanismen ermittelt. In einem Abfrageblock 16 wird dann überprüft, ob alle Intertask-Variablen abgearbeitet worden sind. Falls nein, wird zu dem Funktionsblock 14 verzweigt und die nächste Intertask-Variable ausgewählt. Falls ja, wird das erfindungsgemäße Verfahren fortgesetzt. Dieser durch die Funktionsblöcke 14 bis 16 repräsentierte Schritt des Verfahrens kann automatisiert werden, indem z. B. ein geeignetes Werkzeug (Tool) die Tabelle mit den darin abgelegten Variablen auswertet.Then, for each variable intertask be made available mechanisms (see. Fig. 1 and Fig. 3) the theoretically applicable mechanisms determined. For this purpose, a first intertask variable is selected in a function block 14 . The mechanisms theoretically applicable for the selected intertask variable are then determined in a function block 15 . A query block 16 is then used to check whether all intertask variables have been processed. If not, the system branches to function block 14 and the next intertask variable is selected. If so, the method according to the invention is continued. This step of the method represented by the function blocks 14 to 16 can be automated by e.g. B. a suitable tool (tool) evaluates the table with the variables stored in it.

Im weiteren Verlauf des Verfahrens wird für diejenigen Intertask-Variablen, auf die mehrere Mechanismen anwendbar sind, einer der anwendbaren Mechanismen ausgewählt. Dies kann entweder durch einen Programmierer oder automatisiert geschehen. Dazu wird in einem Funktionsblock 17 zunächst eine erste Intertask-Variable ausgewählt. In einem Abfrageblock 18 wird überprüft, ob alle Intertask-Variablen abgearbeitet worden sind. Falls nein, wird zu einem Abfrageblock 19 verzweigt, wo überprüft wird, ob für die ausgewählte Intertask-Variable mehrere Mechanismen anwendbar sind. Falls ja wird in einem Funktionsblock 20 einer der anwendbaren Mechanismen ausgewählt und zu dem Funktionsblock 17 verzweigt. Falls für die ausgewählte Intertask-Variable nur ein Mechanismus anwendbar ist, wird von dem Abfrageblock 19 unmittelbar zu dem Funktionsblock 17 verzweigt. In dem Funktionsblock 17 wird dann die nächste Intertask-Variable ausgewählt. Sobald alle Intertask-Variablen abgearbeitet worden sind, wird das erfindungsgemäße Verfahren bei Funktionsblock 21 fortgesetzt.In the further course of the method, one of the applicable mechanisms is selected for those intertask variables to which several mechanisms can be applied. This can be done either by a programmer or automatically. For this purpose, a first intertask variable is first selected in a function block 17 . A query block 18 checks whether all intertask variables have been processed. If not, a branch is made to a query block 19 , where it is checked whether several mechanisms can be used for the selected intertask variable. If so, one of the applicable mechanisms is selected in a function block 20 and a branch is made to the function block 17 . If only one mechanism can be used for the selected intertask variable, the query block 19 branches directly to the function block 17 . The next intertask variable is then selected in function block 17 . As soon as all intertask variables have been processed, the method according to the invention is continued at function block 21 .

Im weiteren Verlauf des Verfahrens werden am Anfang bzw. am Ende der Tasks des Computerprogramms Maßnahmen für einen konsistenten Datenaustausch in das Computerprogramm eingefügt. Welche Maßnahmen in welche Tasks eingefügt werden, hängt von den für die Intertask-Variablen ausgewählten Mechanismen zusammen. In dem Funktionsblock 21 wird zunächst eine erste Task des Computerprogramms ausgewählt. In einem Abfrageblock 22 wird dann überprüft, ob die ausgewählte Task eine Intertask-Variable enthält. Falls nein, wird unmittelbar zu dem Funktionsblock 21 verzweigt und die nächste Task ausgewählt. Falls ja, wird zu einem Funktionsblock 23 verzweigt, in dem die Maßnahme für den konsistenten Datenaustausch am Anfang bzw. am Ende der ausgewählten Task eingefügt wird. Anschließend wird in einem weiteren Abfrageblock 24 überprüft, ob alle Tasks des Computerprogramms abgearbeitet worden sind. Falls nein, wird unmittelbar zu dem Funktionsblock 21 verzweigt und die nachfolgende Task ausgewählt. Falls ja, wird das erfindungsgemäße Verfahren in einem Funktionsblock 25 beendet. In the further course of the method, measures for a consistent data exchange are inserted into the computer program at the beginning or at the end of the tasks of the computer program. Which measures are inserted into which tasks depends on the mechanisms selected for the intertask variables. First, a first task of the computer program is selected in function block 21 . A query block 22 then checks whether the selected task contains an intertask variable. If no, the system branches immediately to function block 21 and the next task is selected. If so, a branch is made to a function block 23 in which the measure for the consistent data exchange is inserted at the beginning or at the end of the selected task. A further query block 24 then checks whether all the tasks of the computer program have been processed. If no, the system branches directly to function block 21 and the subsequent task is selected. If so, the method according to the invention is ended in a function block 25 .

Im Folgenden wird ein weiteres Ausführungsbeispiel der vorliegenden Erfindung anhand Fig. 8 näher erläutert. Es wird ein Computerprogramm betrachtet, das insgesamt acht Tasks umfasst, die mit 1 bis 8 bezeichnet sind. Die Nummer gibt gleichzeitig die Priorität der Tasks an. Die Task 1 hat die höchste Priorität, die Task 8 die niedrigste.A further exemplary embodiment of the present invention is explained in more detail below with reference to FIG. 8. A computer program is considered which comprises a total of eight tasks, which are labeled 1 to 8. The number also indicates the priority of the tasks. Task 1 has the highest priority, task 8 the lowest.

Zunächst wird das Computerprogramm von einem Parser nach allen Variablen durchsucht. In der Tabelle aus Fig. 8 sind exemplarisch fünf Variablen g_vRad_ub, g_xFzg_ow, g_ASR_b, g_uFzr_ub, g_aRad_ub aufgeführt (vgl. Spalte 1). Für jede Variable werden die Tasks bestimmt, in denen auf die Variable zugegriffen, d. h. die Variable gelesen und/oder beschrieben, wird (vgl. Spalten 2 und 3).First, the computer program is searched by a parser for all variables. In the table from FIG. 8, five variables g_vRad_ub, g_xFzg_ow, g_ASR_b, g_uFzr_ub, g_aRad_ub are listed as examples (cf. column 1 ). For each variable, the tasks are determined in which the variable is accessed, ie the variable is read and / or written to (see columns 2 and 3 ).

In den nachfolgenden Schritten werden nur die Intertask- Variablen betrachtet. Alle Variablen, die nur in einer Task vorkommen, sind keine Intertask-Variablen (vgl. g_xFzg_uw, g_uFzr_ub).In the following steps, only the intertask Considered variables. All variables that are only in one task are not intertask variables (see g_xFzg_uw, g_uFzr_ub).

Für die Intertask-Variablen sind die theoretisch anwendbaren Mechanismen in der vierten Spalte angegeben. Schließlich muss z. B. von dem Programmierer aus den theoretisch anwendbaren Mechanismen einer ausgewählt werden. Der ausgewählte Mechanismus ist in Spalte 5 angegeben.The theoretically applicable mechanisms for the intertask variables are given in the fourth column. Finally, e.g. B. can be selected by the programmer from the theoretically applicable mechanisms. The selected mechanism is shown in column 5 .

Ein geeignetes Werkzeug (Tool) kann entsprechend dem ausgewählten Mechanismus am Anfang bzw. am Ende der Tasks geeignete Programmbefehle zur Realisierung der oben beschriebenen Maßnahmen zur Sicherstellung der Datenkonsistenz bei einer Intertask-Kommunikation in dem Computerprogramm einfügen.A suitable tool (Tool) can be according to the selected mechanism at the beginning or end of the tasks suitable program instructions to implement the above measures described to ensure the Data consistency in intertask communication in the Insert computer program.

Wie oben beschrieben, ist der Umfang der möglichen Mechanismen sehr groß. Die Zusammenhänge sind komplex. Es kann daher sinnvoll sein, das Werkzeug (Tool) zur Auswertung der Tabelle mit den darin abgelegten Variablen so zu gestalten, dass die Möglichkeiten schon im Vorfeld konfigurierbar sind. Erlaubt z. B. eine Anwendung die Beschränkung auf nur einen Teil der Mechanismen (im Grenzfall ein einziger Mechanismus), können die nicht benötigten Mechanismen von vornherein ausgeschlossen werden. So wird der Fall, dass für eine Intertask-Variable mehrere Mechanismen anwendbar sind, seltener vorkommen. Der Programmierer kann noch stärker (im Grenzfall vollständig) von der Sicherung der Datenkonsistenz entlastet werden.As described above, the scope is possible Mechanisms very large. The relationships are complex. It  can therefore be useful to use the tool Evaluation of the table with the variables stored in it to be designed in such a way that the options are available in advance are configurable. Allows e.g. B. an application Restriction to only some of the mechanisms (in Borderline a single mechanism), they cannot necessary mechanisms excluded from the outset become. So the case is for an intertask variable several mechanisms are applicable, are less common. The Programmers can do even more (in the limit, completely) be relieved of the need to ensure data consistency.

Claims (9)

1. Verfahren zur Realisierung einer Intertask- Kommunikation in einem Multitasking-Betriebssystem, das die Ausführung eines Computerprogramms steuert, das in mehrere Tasks mit jeweils mindestens einem Prozess unterteilt ist, gekennzeichnet durch die nachfolgenden Verfahrensschritte:
  • - Ermitteln (12) aller in dem Computerprogramm benutzten Variablen;
  • - für jede Variable Ermitteln der Tasks, in denen auf die Variable zugegriffen wird und Ermitteln (13) der Variablen (Intertask-Variablen), die in mehreren Tasks benutzt werden;
  • - für jede Intertask-Variable Ermitteln (15) von theoretisch anwendbaren Mechanismen für eine Intertask-Kommunikation aus zur Verfügung stehenden Mechanismen;
  • - für die Intertask-Variablen, für die mehrere Mechanismen anwendbar sind, Auswahl (20) eines Mechanismus für eine Intertask-Kommunikation aus den theoretisch anwendbaren Mechanismen; und
  • - in Abhängigkeit von dem theoretisch anwendbaren Mechanismus oder dem ausgewählten Mechanismus Einfügen (23) von Maßnahmen in die Tasks für einen Datenaustausch in dem Computerprogramm.
1. Method for realizing intertask communication in a multitasking operating system that controls the execution of a computer program that is divided into several tasks, each with at least one process, characterized by the following method steps:
  • - determining ( 12 ) all variables used in the computer program;
  • - For each variable, determining the tasks in which the variable is accessed and determining ( 13 ) the variables (intertask variables) that are used in several tasks;
  • - For each intertask variable, determining ( 15 ) theoretically applicable mechanisms for intertask communication from available mechanisms;
  • - for the intertask variables for which several mechanisms can be used, selection ( 20 ) of a mechanism for intertask communication from the theoretically applicable mechanisms; and
  • - Depending on the theoretically applicable mechanism or the selected mechanism, inserting ( 23 ) measures into the tasks for data exchange in the computer program.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die theoretisch anwendbaren Mechanismen für eine Intertask-Kommunikation anhand der in dem Computerprogramm vorkommenden Tasks und deren Priorität ermittelt werden.2. The method according to claim 1, characterized in that that the theoretically applicable mechanisms for a Intertask communication based on that in the computer program  occurring tasks and their priority are determined. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass durch die zur Verfügung stehenden Mechanismen für eine Intertask-Kommunikation sichergestellt wird, dass während der Abarbeitung eines Teils des Computerprogramms die Inhalte aller Intertask-Variablen nicht durch andere Teile des Computerprogramms verändert werden.3. The method according to claim 1 or 2, characterized characterized that by the available Mechanisms for intertask communication ensured will that while processing part of the Computer program the contents of all Intertask variables not changed by other parts of the computer program become. 4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass durch die zur Verfügung stehenden Mechanismen für eine Intertask-Kommunikation sichergestellt wird, dass während der Abarbeitung des Computerprogramms die Inhalte aller logisch zusammengehörender Intertask- Variablen zusammen verändert werden.4. The method according to any one of claims 1 to 3, characterized characterized that by the available Mechanisms for intertask communication ensured will that while processing the computer program the content of all logically related intertask Variables can be changed together. 5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass die zur Verfügung stehenden Mechanismen zumindest einen der nachfolgend aufgeführten Mechanismen umfassen:
aktueller Datenaustausch, Kopieren am Anfang einer niederprioren Task;
aktueller Datenaustausch, es gibt nur eine Intertask- Variable, kein Kopieren;
aktueller Datenaustausch, Kopieren am Ende einer niederprioren Task;
zyklischer Datenaustausch, Kopieren am Ende einer hochprioren Task zu bestimmten Zeitpunkten;
zyklischer Datenaustausch, Kopieren am Anfang einer hochprioren Task zu bestimmten Zeitpunkten;
kein Datenaustausch, Variablen sind voneinander unabhängig, kein Kopieren; und
Sonderfälle.
5. The method according to claim 3, characterized in that the mechanisms available include at least one of the mechanisms listed below:
current data exchange, copying at the beginning of a low-priority task;
current data exchange, there is only one Intertask variable, no copying;
current data exchange, copying at the end of a low-priority task;
cyclical data exchange, copying at the end of a high-priority task at certain times;
cyclical data exchange, copying at the beginning of a high-priority task at certain times;
no data exchange, variables are independent of each other, no copying; and
Special cases.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass für den aktuellen Datenaustausch
einer hochprioren schreibenden Task und mindestens einer niederprioren lesenden Tasks jeweils ein eigenes Abbild mindestens einer Intertask-Variablen zugeordnet und am Anfang jeder niederprioren Task der Inhalt der mindestens einen Intertask-Variablen von der hochprioren Task zu der mindestens einen niederprioren Task kopiert wird, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird;
der Inhalt einer Intertask-Variablen zwischen einer hochprioren Task und einer niederprioren Task nicht kopiert wird, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird; oder
einer niederprioren schreibenden Task und mindestens einer hochprioren lesenden Task jeweils ein eigenes Abbild mindestens einer Intertask-Variablen zugeordnet und der Inhalt der mindestens einen Intertask- Variablen am Ende der niederprioren Task von der niederprioren Task zu der mindestens einen hochprioren Task kopiert wird, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird.
6. The method according to claim 5, characterized in that for the current data exchange
A high-priority writing task and at least one low-priority reading task are each assigned their own image of at least one Intertask variable and at the beginning of each low-priority task the content of the at least one Intertask variable is copied from the high-priority task to the at least one low-priority task if the at least one an intertask variable is described in the high-priority task and in which at least one low-priority task is read;
the content of an intertask variable between a high priority task and a low priority task is not copied if the intertask variable is described in the low priority task and is read in the at least one high priority task; or
a low-priority writing task and at least one high-priority reading task are each assigned their own image of at least one Intertask variable and the content of the at least one Intertask variable at the end of the low-priority task is copied from the low-priority task to the at least one high-priority task if the Intertask -Variable described in the low priority task and in which at least one high priority task is read.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird, eine Unterbrechung des Kopierens des Inhalts der mindestens einen Intertask- Variablen durch eine hochpriore Task verhindert wird.7. The method according to claim 6, characterized in that if the at least one intertask variable in the high priority task and in the at least one low priority task is read, an interruption of the Copying the content of the at least one intertask Variables are prevented by a high priority task. 8. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass, falls die Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird, eine Unterbrechung der Berechnungen mit mehreren Schreiboperationen auf die Intertask-Variable in der niederprioren Task ermöglicht wird.8. The method according to claim 6, characterized in that if the intertask variable is in the lower priority Task described and in the at least one high priority Task is read with an interruption in the calculations  several write operations on the intertask variable in the low priority task is enabled. 9. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass für den zyklischen Datenaustausch
der Inhalt mindestens einer Intertask-Variablen in einem ersten Aufruf einer hochprioren Task am Ende der hochprioren Task von der hochprioren Task zu mindestens einer niederprioren Task kapiert wird, falls die mindestens eine Intertask-Variable in der hochprioren Task beschrieben und in der mindestens einen niederprioren Task gelesen wird; oder
der Inhalt mindestens einer Intertask-Variablen in einem ersten Aufruf einer hochprioren Task am Anfang der hochprioren Task von einer niederprioren Task zu mindestens einer hochprioren Task kopiert wird, falls die mindestens eine Intertask-Variable in der niederprioren Task beschrieben und in der mindestens einen hochprioren Task gelesen wird.
9. The method according to claim 5, characterized in that for the cyclic data exchange
the content of at least one intertask variable in a first call of a high-priority task at the end of the high-priority task is understood from the high-priority task to at least one low-priority task if the at least one intertask variable is described in the high-priority task and in the at least one low-priority task is read; or
the content of at least one intertask variable is copied in a first call of a high-priority task at the beginning of the high-priority task from a low-priority task to at least one high-priority task if the at least one intertask variable is described in the low-priority task and in the at least one high-priority task is read.
DE2000156046 2000-11-11 2000-11-11 Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables. Ceased DE10056046A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE2000156046 DE10056046A1 (en) 2000-11-11 2000-11-11 Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables.
ITMI20012343 ITMI20012343A1 (en) 2000-11-11 2001-11-08 PROCEDURE FOR MAKING AN INTERTASK COMMUNICATION IN A MULTITASKING EXERCISE SYSTEM
FR0114525A FR2817634B1 (en) 2000-11-11 2001-11-09 METHOD FOR REALIZING INTERSTACLE COMMUNICATION IN A MULTITASTIC COMPUTER OPERATING SYSTEM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2000156046 DE10056046A1 (en) 2000-11-11 2000-11-11 Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables.

Publications (1)

Publication Number Publication Date
DE10056046A1 true DE10056046A1 (en) 2002-05-23

Family

ID=7663026

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2000156046 Ceased DE10056046A1 (en) 2000-11-11 2000-11-11 Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables.

Country Status (3)

Country Link
DE (1) DE10056046A1 (en)
FR (1) FR2817634B1 (en)
IT (1) ITMI20012343A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3071334B1 (en) * 2017-09-19 2019-08-30 Psa Automobiles Sa METHOD FOR ENSURING DATA STABILITY OF A MULTICOAL PROCESSOR OF A MOTOR VEHICLE

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138713A (en) * 1988-10-28 1992-08-11 International Business Machines Corporation Multiprocessing computer system with exit logic and method for maintaining resource integrity
US5381550A (en) * 1991-12-13 1995-01-10 Thinking Machines Corporation System and method for compiling a source code supporting data parallel variables
DE19903599A1 (en) * 1999-01-29 2000-08-03 Siemens Ag Process for secure access to at least one variable in a preemptive multitasking-controlled processor system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810231B2 (en) * 1990-01-30 1998-10-15 ジヨンソン・サービス・カンパニー Method of locating data in distributed network system having nodes
US5442789A (en) * 1994-03-31 1995-08-15 International Business Machines Corporation System and method for efficiently loading and removing selected functions on digital signal processors without interrupting execution of other functions on the digital signal processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138713A (en) * 1988-10-28 1992-08-11 International Business Machines Corporation Multiprocessing computer system with exit logic and method for maintaining resource integrity
US5381550A (en) * 1991-12-13 1995-01-10 Thinking Machines Corporation System and method for compiling a source code supporting data parallel variables
DE19903599A1 (en) * 1999-01-29 2000-08-03 Siemens Ag Process for secure access to at least one variable in a preemptive multitasking-controlled processor system

Also Published As

Publication number Publication date
FR2817634A1 (en) 2002-06-07
ITMI20012343A1 (en) 2003-05-08
FR2817634B1 (en) 2007-06-08

Similar Documents

Publication Publication Date Title
DE4410775C2 (en) Control unit and operating method of an operating system for this control unit
EP0947049B1 (en) Reconfiguration method for programmable components during running time
DE60217157T2 (en) METHOD AND DEVICE FOR BINDING SHADOW TABS TO VECTORIZED INTERRUPTS
DE2630323B2 (en) Data storage device with a main memory, an auxiliary memory and a look-ahead logic
DE2411963B2 (en) DATA PROCESSING SYSTEM
DE2355993B2 (en) PROGRAMMABLE DATA PROCESSING SYSTEM
DE4011745A1 (en) Task performance recorder for multi-tasking operating system protocol - includes stores for interrupt information of sizes of task selection interrupts and information on system calls
DE2714805A1 (en) DATA PROCESSING SYSTEM
DE2101949A1 (en) Method for protecting data groups in a multiprocessing data processing system
DE112019001821T5 (en) METHOD AND DEVICE FOR REPLAYING AN ACTIVATION FRAMEWORK FOR UNINTERRUPTED MEMORY CLEANING (PAUSE-LESS GARBAGE COLLECTION)
EP3080668B1 (en) Method for influencing a control program of a control unit
DE102018202446A1 (en) Method for modularizing a software architecture
DE102016202305A1 (en) Method and device for operating a control device
DE2064383B2 (en) Data processing system with several central processing devices
DE4445651A1 (en) Process for the control of technical processes
DE10040267A1 (en) Processor Memory System
DE1774421B1 (en) MORE PROGRAM DATA PROCESSING SYSTEM
DE19901879A1 (en) Data tracing method in data processing arrangement
DE10056046A1 (en) Method for implementing an intertask communication in a multi-tasking OS controlling a program split into multiple tasks determines all used variables, all tasks for each variable and usable mechanisms for intertask variables.
DE10320062A1 (en) Storage management for a portable data carrier
DE2717700C2 (en) Memory access arrangement
DE102007015507B4 (en) Processor with first and second modes of operation and method of operation
DE10061001A1 (en) Automobile technical process control method, involves using microprocessor for execution of control program tasks corresponding to technical processes
EP1235123A2 (en) Add-om mechanism for a control system based on a type data-field
DE19637883B4 (en) Data processing system for executing large program systems

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection