Brevet FR2817634A1 — publié le 20020607

La présente invention concerne un procédé de réalisation d'une communication intertâches dans un système de fonctionnement multitâches qui commande l'exécution d'un programme d'ordinateur sub- divisé en plusieurs tâches avec chaque fois au moins un procédé. Etat de la technique Les différentes tâches d'un programme d'ordinateur multi- tâches ont différentes priorités. Les tâches de priorité élevée peuvent inter- rompre d'autres tâches de priorité inférieure. L'interruption se fait pour les tâches qui sont traitées selon un mode coopératif entre deux procédés. Les tâches traitées selon un mode préemptif permettent une interruption éga- lement au milieu d'un procédé. Dans un programme d'ordinateur on pré- voit habituellement des variables utilisées pour l'échange d'informations entre les différentes tâches. Ces variables sont appelées variables intertâ- ches. Une caractéristique importante pour la communication en- tre les tâches d'un programme d'ordinateur est la protection de la consis- tance des données des variables intertâches. Pendant le traitement d'une partie du programme d'ordinateur (par exemple des procédés ou des tâ- ches) il ne faut pas que le contenu des variables auquel accède une partie du programme d'ordinateur ne soit modifié par d'autres parties du pro- gramme. De même, il faut assurer la consistance des données entre les différentes variables intertâches. Si plusieurs variables intertâches sont logiquement liées, il faut assurer l'échange des contenus des variables entre les tâches qui se correspondent réciproquement. Un autre aspect important dans la communication entre les tâches est l'instant de l'échange des données. On a deux possibilités diffé- rentes: - la reprise du contenu de la variable intertâches d'une tâche à une au- tre tâche n'est pas liée à des intervalles de temps fixes. On utilise tou- jours la valeur la plus actuelle, - la reprise du contenu de la variable intertâches d'une tâche à une au- tre tâche est liée à des intervalles de temps fixes. A partir des exigences concernant la consistance des don- nées et les différents instants de l'échange des données on a plusieurs cas d'application: 1. la consistance des données d'une variable intertâches doit être as- surée. Le transfert du contenu de la variable intertâches, d'une tâ- che à une autre, n'est pas lié à des intervalles de temps fixes. On utilise toujours la valeur la plus actuelle. 2. La consistance des données d'une variable intertâches doit être as- surée. Le transfert du contenu d'une variable intertâches, d'une tâ- s che à une autre, n'est pas lié à des intervalles de temps fixes. On utilise toujours la valeur la plus actuelle. On effectue des calculs avec plusieurs opérations d'enregistrement sur la variable intertâ- ches. 3. La consistance des données entre plusieurs variables intertâches doit être assurée. La reprise du contenu des variables intertâches, d'une tâche à une autre, n'est pas liée à des intervalles de temps fixes. On utilise toujours la valeur la plus actuelle. 4. La consistance des données d'une variable intertâches ou de plu- sieurs variables intertâches doit être assurée. La reprise du contenu des variables intertâches, d'une tâche à une autre, est liée à des in- tervalles de temps fixes. On a éventuellement des calculs avec plu- sieurs opérations d'enregistrement sur les variables intertâches. 5. Une grandeur est utilisée dans plusieurs tâches mais l'échange des données entre les tâches ne s'effectue pas. Il s'agit de variables qui se correspondent logiquement mais sont indépendantes les unes des autres. 6. Une grandeur est utilisée dans plusieurs tâches. L'échange des données entre les tâches est régulé de manière particulière (cas par- ticuliers). Il s'agit de variables logiquement liées mais indépendantes les unes des autres. Le traitement des tâches d'un programme d'ordinateur est connu en mode coopératif selon le document DE 195 OO 957 Al. Dans le cas d'un système de traitement multitâches qui s'appuie à la fois sur le mode coopératif et sur le mode préemptif, pour le traitement d'un pro- gramme d'ordinateur on se reportera par exemple au système de traite- ment en temps réel ERCOSEK de la Société ETAS Entwicklungs- und Applikationswerkzeuge fur elektronische Systeme GmbH & Co. KG, Stutt- gart, DE (vgl. ETAS GmbH & Co. KG: ERCOSEK V2.0.0 Manual, Stuttgart, 1998) et le manuel ERCOSEK mentionné dans DE-195 00 957 Ai. Pour une communication intertâches dans le système de traitement multitâches connu selon l'état de la technique on utilise un modèle de communication de messages ERCOS. Pour ce procédé qui n'assure pas d'échange de données consistant entre les tâches, le pro- grammeur doit toutefois définir les variables intertâches par des mots clefs sous la forme de messages, dès la définition des variables. De plus, seul un mécanisme déterminé est soutenu pour la communication intertâches, ce qui limite fortement les possibilités fonctionnelles de la communication intertâches, connues. Dans un programme d'ordinateur, on enregistre comme ori- ginal une variable pour chaque message. Au début d'une tâche on copie les originaux dans les variables locales des tâches. Les algorithmes des tâches travaillent pendant toute la durée de fonctionnement de la tâche avec de telles copies. D'autres tâches ne peuvent accéder à ces copie; elles ont au contraire leur propre copie. Si des événements d'algorithme d'une tâche doivent être disponibles également pour d'autres tâches, on copie les copies locales à la fin de la tâche vers les originaux. Le procédé connu est utilisable pour les cas d'application 1 et 2. La consistance des données est assurée car les tâches travaillent toujours avec une copie des variables intertâches. Pour le cas d'application 3, on ne peut appliquer le procédé connu que si la copie des variables intertâches n'est pas interrompue. Pour les autres cas d'application 4-6 le procédé ne peut s'appliquer. Le taux d'actualisation des variables intertâches dépend toujours du déroulement du programme. On utilise toujours les valeurs les plus actuelles. La présente invention a pour but de développer un procédé de réalisation d'une communication intertâches du type défini ci-dessus et de développer ce procédé pour offrir une flexibilité aussi élevée que possi- ble et permettre une communication intertâches ayant autant que possi- ble une fonctionnalité couvrant toutes les demandes. A cet effet, l'invention concerne un procédé de réalisation d'une communication intertâches du type évoqué ci-dessus et ayant les étapes suivantes: - on détermine toutes les variables utilisées dans le programme d'ordinateur, - pour chaque variable on détermine la tâche qui utilise cette variable et on détermine les variables (variables intertâches) utilisées dans plu- sieurs tâches, - pour chaque variable intertâches on détermine les mécanismes appli- cables théoriquement pour une communication intertâches à partir des mécanismes disponibles, - pour les variables intertâches pour lesquelles s'appliquent plusieurs mécanismes, on sélectionne un mécanisme pour une communication intertâches à partir des mécanismes théoriquement utilisables et - en fonction du mécanisme théoriquement utilisable ou du mécanisme sélectionné on insère des moyens dans les tâches pour un échange de données dans le programme d'ordinateur. Avantages de l'invention On établit ainsi un tableau avec toutes les variables utili- sées dans le programme d'ordinateur. Pour chaque variable on définit les tâches dans lesquelles la variable est lue et/ou enregistrée. Cette étape peut être automatisée par exemple avec un programme d'analyse syntaxi- que traitant les dossiers sources du programme d'ordinateur. On détermine alors toutes les variables intertâches dans le tableau. Les variables intertâches sont les variables utilisées par plusieurs is tâches. Toutes les variables utilisées dans une seule tâche peuvent être négligées dans les étapes de procédé suivantes. Cette étape de détermina- tion des variables intertâches peut être automatisée en ce qu'on exploite par exemple un outil approprié pour le tableau. A partir d'une série de mécanismes disponibles qui seront détaillés ci-après, on détermine pour chaque variable intertâches, les mé- canismes théoriquement applicables. Ils résultent des tâches qui se pro- duisent et de leur priorité. Pour cela il faut connaître la priorité de chaque tâche. Cette étape peut s'automatiser par exemple avec un outil traitant le tableau. Si pour une variable intertâches on utilise plusieurs méca- nismes, il faut que par exemple le programmeur décide le mécanisme à utiliser. De manière correspondante, il faut appliquer le mécanisme sélec- tionné ou le mécanisme applicable si pour une variable intertâches on ne veut appliquer qu'un mécanisme et que finalement à la fin ou au début de la tâche on insère des moyens pour un échange consistant de données dans le programme d'ordinateur. On peut automatiser cette étape en utili- sant un outil approprié qui établit les parties de programmes correspon- dant aux moyens à insérer. Les avantages du procédé sont notamment le fait qu'une va- riable n'a pas à être caractérisée dès la définition comme variable intertâ- ches. Au contraire, ce n'est que lorsque la configuration du programme d'ensemble est définie que l'on décide s'il faut des mécanismes déterminés pour une variable. On évite ainsi que trop de variables ou trop peu de va- riables soient définies comme des variables intertâches. De plus, le procédé selon l'invention ne soutient pas seule- ment un mécanisme spécial pour la communication intertâches. Au con- s traire, le programmeur dispose d'un grand nombre de mécanismes différents avec leurs propriétés correspondantes (souplesse des program- mes, optimisation de la consommation des ressources, etc...) pour per- mettre de sélectionner un mécanisme optimum pour chaque application. Enfin, le procédé selon l'invention peut être automatisé sans la mise en ceuvre de moyens importants. Le programmeur peut ainsi, en établissant le programme, être libéré pratiquement totalement des re- lations en général très complexes. Selon un développement avantageux de l'invention, les mé- canismes théoriquement applicables pour une communication intertâches se déterminent à l'aide des tâches qui sont utilisées dans le programme et à l'aide de leurs priorités. Grâce au mécanisme disponible pour une communication intertâches on garantit avantageusement que pendant le traitement d'une partie du programme (par exemple procédé ou tâche) le contenu de toutes les variables intertâches ne sera pas modifié par d'autres parties du pro- gramme. C'est ainsi que par exemple la consistance d'une variable intertâ- ches est fragilisée si la variable intertâches est enregistrée dans une tâche de priorité élevée et si elle est lue dans une tâche de priorité inférieure. On peut rencontrer une autre difficulté si une variable intertâches est enre- gistrée plusieurs fois dans une tâche de priorité inférieure (par exemple pour l'exécution de calculs intermédiaires) et est lue dans une tâche de priorité élevée que la tâche de priorité inférieure a été interrompue entre les opérations d'enregistrement par la tâche de priorité élevée. Cela est le cas dans l'échéancier coopératif si les opérations d'écriture sont effectuées dans plusieurs procédés. Dans le cas de l'échéancier préemptif il est déjà difficile que les opérations d'écriture se fassent avec plusieurs ordres d'assembleur. De plus, grâce aux mécanismes disponibles pour une com- munication intertâches on garantit avantageusement que pendant le trai- tement du programme, le contenu de toutes les variables intertâches liées logiquement sont traitées ensemble. C'est ainsi que par exemple la con- sistance des données entre plusieurs variables intertâches est fragilisée si les variables intertâches sont enregistrées dans une tâche de priorité éle- vée et sont lues dans une tâche de priorité inférieure. De plus, la consis- tance des données entre plusieurs variables intertâches est fragilisée si ces variables intertâches sont enregistrées dans une tâche de priorité infé- rieure et sont lues dans une tâche de priorité élevée et si la tâche de prio- rité inférieure est interrompue entre les opérations d'enregistrement par la tâche de priorité élevée. Cela est le cas dans l'échéancier coopératif si des opérations d'enregistrement sont effectuées dans plusieurs procédés. Dans le cas de l'échéancier préemptif, on a déjà des difficultés si les opé- rations d'enregistrement sont faites avec plusieurs ordres d'assembleur. Selon un mode de réalisation préférentiel de l'invention, les mécanismes disponibles comprennent au moins l'un des mécanismes sui- vants: - échange actuel des données, copie au début d'une tâche de priorité in- férieure, - échange actuel de données; il n'y a pas de variable intertâches et pas de copie, - échange actuel de données; copie à la fin d'une tâche de priorité infé- rieure, - échange cyclique de données, copie à la fin d'une tâche de priorité éle- vée à des instants donnés, - échange cyclique de données, copie au début d'une tâche de priorité élevée à des instants déterminés, - pas d'échange de données, les variables sont indépendantes; pas de copie et - cas particuliers. A l'aide des mécanismes présentés ci-dessus on peut réali- ser toutes les applications décrites ci-dessus. Selon un développement avantageux de l'invention, pour l'échange actuel des données - dans une tâche de priorité élevée à enregistrer et au moins une tâche de lecture de priorité inférieure, on associe chaque fois une image pro- pre à au moins l'une des variables intertâches et au début de chaque tâche de priorité inférieure on copie le contenu d'au moins l'une des va- riables intertâches de la tâche de priorité élevée dans au moins une tâ- che de priorité inférieure, si au moins la variable intertâches est enregistrée dans la tâche de priorité élevée et est lue dans au moins une tâche de priorité inférieure, - on ne copie pas le contenu d'une variable intertâches entre une tâche de priorité élevée et une tâche de priorité inférieure si la variable inter- tâches est enregistrée dans la tâche de priorité inférieure et est lue dans au moins une tâche de priorité élevée, ou - à une tâche de priorité inférieure à enregistrer et à au moins une tâche de priorité élevée à lire on associe chaque fois une propre image d'au moins une variable intertâches, et le contenu d'au moins une variable intertâches est copié à la fin de la tâche de priorité inférieure de la tâ- che de priorité inférieure vers au moins une tâche de priorité élevée, si la variable intertâches est enregistrée dans la tâche de priorité infé- rieure et lue dans au moins une tâche de priorité élevée. Selon un mode de réalisation préférentiel de l'invention, au cas o au moins une variable intertâches est enregistrée dans la tâche de priorité élevée et est lue dans au moins une tâche de priorité inférieure, on évite l'interruption de la copie du contenu d'au moins une variable inter- tâches par une tâche de priorité élevée. Selon un autre mode de réalisation préférentiel de l'invention, au cas o la variable intertâches est enregistrée dans la tâche de priorité inférieure et est lue dans au moins une tâche de priorité élevée, on permet une interruption du calcul avec plusieurs opérations d'enregistrement sur la variable intertâches dans la tâche de priorité infé- rieure. Selon un autre développement avantageux de l'invention, pour l'échange cyclique des données - on copie le contenu d'au moins l'une des variables intertâches dans un premier rappel d'une tâche de priorité élevée à partir de la tâche de priorité élevée vers au moins une tâche de priorité inférieure si au moins une variable intertâches a été enregistrée dans la tâche de prio- rité élevée et a été lue dans au moins une tâche de priorité inférieure ou - on copie le contenu d'au moins l'une des variables intertâches au cours d'un premier appel d'une tâche de priorité élevée au début de la tâche de priorité élevée par une tâche de priorité inférieure vers au moins une tâche de priorité élevée si au moins une variable intertâches a été enre- gistrée dans la tâche de priorité inférieure et a été lue dans au moins une tâche de priorité élevée. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide des dessins annexés dans lesquels: - la figure 1 montre un tableau avec les mécanismes d'une communica- tion intertâches dans un système de traitement multitâches, - la figure 2 montre une légende du tableau de la figure 1, - la figure 3 montre un mécanisme connu selon l'état de la technique pour une communication intertâches dans un système de traitement multitâches, - la figure 4 montre un mécanisme pour une tâche de priorité inférieure pour une communication intertâches avec un échange de données ac- tuel, - la figure 5 montre le déroulement d'une tâche pour un échange de données actuel, - la figure 6 montre un mécanisme pour une tâche de priorité élevée pour une communication intertâches avec un échange de données cy- clique, - la figure 7 montre un déroulement de tâches dans un échange de don- nées cyclique, - la figure 8 montre un tableau explicitant un procédé selon l'invention à l'aide de cinq variables prises à titre d'exemple, - la figure 9 montre un ordinogramme d'un procédé selon l'invention cor- respondant à un mode de réalisation préférentiel. Description des exemples de réalisation Selon l'état de la technique on connaît des programmes d'ordinateurs subdivisés en plusieurs tâches. Une tâche est une partie de programme qu'il faut exécuter comme conséquence d'un événement ou à des intervalles de temps réguliers. Chaque tâche a une certaine priorité. Les tâches peuvent être exécutées en mode de coopération ou en mode de préemption. Toutes les tâches préemptives ont en principe une priorité plus élevée que les tâches coopératives. Une tâche comprend une sé- quence d'au moins un procédé. Un procédé est une unité fonctionnelle bouclée à l'intérieur d'une tâche. En technique des programmes, un pro- cédé est une fonction sans argument et sans valeur de retour. Les procé- dés sont traités séquentiellement. Si à un instant déterminé il faut exécuter simultanément plusieurs tâches, celles-ci seront traitées en fonction de leur priorité. La tâche de priorité la plus élevée est exécutée en premier lieu. Une tâche de priorité plus faible est interrompue par une tâche de priorité plus élevée. Une tâche préemptive peut interrompre une tâche de priorité inférieure (préemptive ou coopérative) à tout instant, c'est-à-dire même pendant l'exécution d'un procédé. Une tâche coopérative peut interrompre des tâ- ches de priorité inférieure (seulement des tâches coopératives) unique- ment entre deux procédés. L'exécution d'un programme d'ordinateur composé d'une ou plusieurs tâches est commandée par un système de fonctionnement ou de pilotage multitâches. Il existe dans les différentes tâches une variable à laquelle on accède en lecture et/ou en inscription dans plusieurs tâches. l0 De telles variables sont appelées " variables intertâches ". Ces variables servent à l'échange d'informations entre les tâches. La sécurité de la consistance des données entre plusieurs variables intertâches doit être prise en compte. Si plusieurs variables in- tertâches sont reliées logiquement, il faut assurer que toujours les conte- nus correspondants des variables soient échangés entre les tâches. Pendant l'exécution du programme d'ordinateur il faut veiller à la consistance des données des variables intertâches. On garantit que pendant le traitement d'une partie des programmes (par exemple un procédé ou une tâche) le contenu de toutes les variables auxquelles accède la partie de programme ne soit pas modifié par d'autres parties de pro- grammes. C'est ainsi que la consistance des données d'une variable in- tertâches peut par exemple être mise en danger si la variable intertâches est surscrite dans une tâche de priorité plus élevée et qu'elle est lue dans une tâche de priorité inférieure. On rencontre une autre difficulté lors- qu'une variable intertâches est inscrite plusieurs fois dans une tâche de priorité inférieure (par exemple pour l'exécution de calculs intermédiaires) et qu'elle est lue dans une tâche de priorité élevée et que la tâche de prio- rité inférieure peut être interrompue entre les opérations d'écriture par la tâche de priorité plus élevée. Cela est le cas dans un échéancier coopératif si les opérations d'enregistrement sont effectuées dans plusieurs procédés. Dans un échéancier préemptif, il est déjà délicat que les opérations d'enregistrement soient réalisées avec plusieurs ordres d'assembleur. Un autre aspect important de la communication intertâches est l'instant de l'échange des données. Il existe deux possibilités différen- tes: - dans un échange de données actuel, la reprise du contenu de la varia- ble intertâches, d'une tâche à une autre tâche, n'est pas liée à des in- tervalles de temps fixes et on utilise toujours la valeur la plus actuelle, O10 - dans un échange cyclique de données, la reprise du contenu de la va- riable intertâches par une tâche à l'autre est liée à des intervalles de temps fixes. Il existe trois possibilités d'un échange actuel de données (voir figure 4): 1. Une ou plusieurs variables intertâches sont enregistrées dans une tâche de priorité élevée et sont lues dans une ou plusieurs tâches de priorité faible. Dans ce cas, la tâche enregistrée en priorité élevée et les tâches à lire en priorité faible sont chaque fois associées à une copie propre des variables intertâches. Au début de chaque tâche de priorité inférieure on copie le contenu des variables intertâches par la tâche de priorité élevée vers la tâche de priorité faible (voir " début de tâche" à la figure 4). S'il s'agit de plusieurs variables intertâches il faut assurer que l'opération de copie ne soit pas interrompue par une tâche de priorité plus élevée. 2. Une variable intertâches est enregistrée dans une tâche de priorité inférieure et elle est lue dans une ou plusieurs tâches de priorité élevée. Dans ce cas il n'existe qu'une variable pour toutes les tâches et il n'est pas nécessaire de faire des copies. 3. Une variable intertâches est enregistrée dans une tâche de priorité inférieure et elle est lue dans une ou plusieurs tâches de priorité plus élevée. Les calculs faits avec plusieurs opérations d'écriture sur la variable intertâches dans la tâche de priorité inférieure peuvent être interrompus. En variante on peut également écrire plusieurs variables intertâches dans une tâche de priorité inférieure ou les lire dans une plusieurs tâches de priorité plus élevée. La consistance des données entre ces variables intertâches doit être garantie. Dans ces deux cas on associe à la tâche d'enregistrement de priorité infé- rieure et aux tâches de lecture de priorité élevée, chaque fois une copie propre des variables intertâches. A la fin de la tâche de priorité inférieure on copie le contenu des variables intertâches de la tâche de priorité intérieure dans les tâches de priorité élevée (voir " fin de tâche" à la figure 4). S'il s'agit de plusieurs variables intertâches ou de plusieurs tâches de priorité élevée, il faut assurer que les opéra- tions de copie ne seront pas interrompues par l'une des tâches de priorité plus élevée. La figure 5 montre à titre d'exemple l'exécution d'une tâche selon un premier cycle et selon un second cycle pour l'échange actuel des données. Il apparaît clairement que les opérations de copie sont exécutées par la tâche de priorité élevée Hi vers la tâche de priorité inférieure Lo ou à partir de la tâche de priorité inférieure Lo vers la tâche de priorité élevée Hi au début ou à la fin de la tâche de priorité inférieure. Pour réaliser l'échange cyclique des données, on réalise dans le programme d'ordinateur plusieurs copies respectives pour les va- riables intertâches concernées. Chaque tâche dans laquelle on utilise la variable intertâches se voit attribuer sa propre copie. Le nombre de copies d'une variable intertâches résulte ainsi du nombre de tâches dans les- quelles cette variable est utilisée. Pour l'échange cyclique des données on a deux possibilités (voir figure 6) : 1. On enregistre une ou plusieurs variables intertâches dans une tâche de priorité plus élevée et on la lit dans une ou plusieurs tâches de priorité inférieure. Dans ce cas, au début d'un cycle (au premier ap- pel de la tâche de priorité élevée) à la fin de la tâche de priorité éle- vée (voir " fin de tâche" à la figure 6), copier le contenu des variables intertâches à partir de la tâche de priorité Hi vers les tâches de prio- rité inférieure Lo. 2. On enregistre une ou plusieurs variables intertâches dans une tâche de priorité inférieure et on les lit dans une ou plusieurs tâches de * priorité élevée. Dans ce cas, au début du cycle (dans le premier ap- pel de la tâche de priorité la plus élevée) au début de la tâche de priorité la plus élevée (voir " début de tâche" à la figure 6) copier le contenu des variables intertâches de la tâche de priorité faible Lo vers les tâches de priorité élevée Hi. La durée d'un cycle est définie par la tâche de durée de dé- tection la plus longue au cours de laquelle on utilise la variable intertâ- ches. Chaque cycle commence par l'appel de la tâche de priorité la plus élevée. Puis on a les autres tâches (de priorité plus faible). Dans des sys- tèmes à orientation cyclique on a habituellement la tâche de durée de dé- tection la plus courte qui a la plus forte priorité et la tâche de durée de détection la plus longue aura la priorité la plus faible. Les durées de dé- tection sont liées selon un rapport de nombres entiers. La copie des variables intertâches se fait à un instant dé- terminé dans la tâche de priorité la plus élevée (du cycle). Cette tâche et ainsi la copie des variables intertâches ne peut être interrompue. En cas d'échéancier intact, la tâche de priorité faible ne peut être interrompue par la tâche de priorité élevée au début d'un cycle. Pour cette raison, le procé- dé peut également s'utiliser si les variables intertâches sont enregistrées plusieurs fois dans les tâches et/ou si la consistance des données doit être garantie entre les différentes variables intertâches. La figure 7 montre l'exécution d'une tâche pour un premier cycle et son second cycle pour un échange cyclique de données, présenté à titre d'exemple. Il apparaît clairement que les opérations de copie de la tâ- che de priorité inférieure Lo vers la tâche de priorité élevée Hi ou à partir de la tâche de priorité élevée Hi vers la tâche de priorité faible Lo se fait au début ou à la fin de la tâche de priorité élevée. A partir des exigences concernant la consistance des don- nées et des différents instants d'échange de données on obtient les appli- cations suivantes: 1. Il faut garantir la consistance de donnée d'une variable intertâches. Le transfert du contenu de la variable intertâches, d'une tâche à une autre tâche n'est pas lié à des intervalles de temps fixes (échange actuel de données). 2. La consistance de données d'une variable intertâches doit être ga- rantie. Le transfert du contenu de la variables intertâches d'une tâ- che à une autre tâche n'est pas lié à des intervalles de temps fixes (échange actuel de données). On a des calculs avec plusieurs opéra- tions d'écriture sur la variable intertâches. 3. La consistance des données entre plusieurs variables intertâches doit être assurée. Le transfert du contenu des variables intertâches, d'une tâche à une autre tâche n'est pas lié à des intervalles de temps fixes (échange actuel de données). 4. la consistance de données d'une variable intertâches ou de plu- sieurs variables intertâches doit être assurée. Le transfert des con- tenus des variables intertâches d'une tâche à une autre tâche est lié à des intervalles de temps fixes (échange cyclique de données). On a des calculs avec plusieurs opérations d'enregistrement sur des va- riables intertâches. 5. Une grandeur est utilisée dans plusieurs tâches mais un échange de données entre les tâches n'a pas lieu. Il s'agit de variables indépen- dantes, mais qui sont liées logiquement. 6. Une grandeur est utilisée dans plusieurs tâches. L'échange des données entre les tâches est régulé d'une manière particulière (cas particulier). Il s'agit de variables dépendantes les unes des autres et qui se correspondent logiquement. La figure i montre les mécanismes selon l'invention pour la réalisation de ces applications. Ces mécanismes seront détaillés ultérieu- rement. On décrira tout d'abord un mécanisme selon l'état de la technique, à savoir le mécanisme ERCOS (modèle de communication de message). Ce mécanisme connu est contenu dans un système multitâches ERCOS (marque déposée de la Société ETAS Entwicklungs Applikations- werkzeuge fur elektronische Systeme GmbH und Co. KG, Stuttgart. Le l0 mécanisme connu est représenté à la figure 3. Dans ce système de fonc- tionnement multitâches, connu, on réalise une communication intertâ- ches en ce que dès la définition des variables du programme d'ordinateur, le programmeur définit toutes les variables intertâches par des mots clefs sous la forme de messages. Dans le programme d'ordinateur, pour chaque message on fixe une variable comme original 0. Au début d'une tâche Hi, Lo, on copie les originaux 0 en variables locales de la tâche Hi, Lo. Les al- gorithmes des tâches travaillent pendant toute la durée de fonctionnement de la tâche avec ses copies. D'autres tâches ne peuvent accéder à ces co- pies; au contraire elles ont leurs propres copies. Si les résultats des algo- rithmes des tâches Hi, Lo doivent être disponibles pour d'autres tâches, on effectue des copie locales à la fin des tâches Hi, Lo dans les originaux O (voir figure 3). Ce mécanisme connu ne peut s'utiliser que pour les appli- cations 1 et 2. La consistance des données est assurée en ce que les tâ- ches Hi, Lo traitent toujours une copie de la variable intertâches. Pour l'application 3 on ne peut utiliser le procédé que si la copie des variables intertâches n'a pas été interrompue. Pour les autres cas d'application 4 à 6 on ne peut utiliser le procédé connu. Le taux d'actualisation des varia- bles intertâches dépend du déroulement du programme d'ordinateur. On utilise toujours les valeurs les plus actuelles. Pour réaliser une communication intertâches dans un sys- tème de fonctionnement multitâches, d'une manière plus souple et pour augmenter la fonctionnalité de la communication intertâches, l'invention propose un procédé dont l'ordinogramme correspondant à un mode de réalisation préférentiel est représenté à la figure 9. Une partie du procédé selon l'invention est constituée par les mécanismes représentés à la figure 1. Le mécanisme A concerne un échange actuel de données; au début d'une tâche de priorité inférieure on effectue une copie. Le mécanisme A s'utilise pour les cas d'application 1, 2, 3. On accède à la tâche de priorité élevée Hi en écriture (W) et en lecture (R). On accède seulement en lecture (R) à la tâche de priorité inférieure Lo. Le mécanisme B. 1 concerne égale- ment un échange actuel de données et il n'existe qu'une variable. Dans ces conditions les copies ne sont pas nécessaires. Le mécanisme B. 1 ne s'utilise que pour le cas d'application 1. On accède à la tâche de priorité élevée Hi seulement en lecture (R) et à la tâche de priorité inférieure Lo à la fois en lecture (R) et en écriture (W). Le mécanisme B.2 concerne fina- lement également un échange de données actuel; à la fin de la tâche de priorité inférieure on copie. Le mécanisme B.2 peut s'utiliser dans les ap- plications 2 et 3. On accède à la tâche de priorité élevée Hi seulement en lecture (R) et à la tâche de priorité inférieure Lo en lecture (R) et en écri- ture (W). Le mécanisme C concerne un échange cyclique de données; à la fin d'une tâche de priorité élevée Hi on copie à des instants détermi- nés. Le mécanisme C peut s'utiliser seulement pour l'application 4. On accède à la tâche de priorité élevée Hi à la fois en lecture (R) et en écriture (W) et à la tâche de priorité inférieure Lo seulement en lecture (R). Le mé- canisme D concerne également un échange cyclique de données; au dé- but de la tâche de priorité élevée Hi on copie à des instants déterminés. Le mécanisme D s'utilise également seulement pour le cas d'application 4. Pour la tâche de priorité élevée Hi on accède seulement en lecture (R); on accède à la fois en lecture (R) et en écriture (W) à la tâche de priorité infé- rieure Lo. Dans le mécanisme E il n'y a pas d'échange de données car les variables sont indépendantes. Le mécanisme E s'utilise pour l'application 5. On accède à la tâche de priorité élevée Hi et à la tâche de priorité infé- rieure Lo à la fois en lecture (R) et en écriture (W). Le mécanisme F con- cerne tous les cas particuliers. Il s'utilise pour l'application 6. Dans le mécanisme F on accède à la tâche de priorité élevée Hi et à la tâche de priorité inférieure Lo à la fois en lecture (R) et en écriture (W). Pour une description plus détaillée de la figure 1 on se re- portera à la légende de la figure 1 qui est donnée à la figure 2. Le procédé selon l'invention sera décrit ci-après de manière plus détaillée à l'aide de la figure 9. Le procédé commence par le bloc de fonction 10. Dans le bloc de fonction 1 1 on établit le programme de l'ordinateur ou les tâches et les procédés du programme. Ensuite, dans le bloc fonctionnel 12, on détermine toutes les variables utilisées par le pro- gramme. Ces variables peuvent se trouver par exemple dans un tableau. Pour chaque variable on définit les tâches utilisant les variables, c'està- dire lisant et/ou enregistrant les variables. Cette étape peut être faite de manière automatique par exemple un programme d'analyse synthétique qui exploite les dossiers sources du programme de l'ordinateur. Ensuite, dans le bloc fonctionnel 13, on détermine toutes les variables utilisées dans plusieurs tâches. Ces variables seront appelées les variables intertâches. Cette étape peut être automatisée en exploitant par exemple les tableaux avec les variables à l'aide d'un outil approprié. Puis pour chaque variable intertâches on détermine les mé- l0 canismes théoriquement utilisables parmi les mécanismes disponibles (voir figures 1 et 3). Pour cela, dans un bloc fonctionnel 14, on sélectionne une première variable intertâches. Dans un bloc fonctionnel 15 on déter- mine ensuite les mécanismes théoriquement utilisés pour les variables intertâches sélectionnées. Dans le bloc d'interrogation 16 on vérifie si toutes les variables intertâches ont été traitées. Dans la négative, on passe sur le bloc fonctionnel 14 et on sélectionne la variable intertâches sui- vante. Dans l'affirmative, on poursuit le procédé selon l'invention. Cette étape du procédé représentée par les blocs fonctionnels 14 à 16 peut être automatisée si on exploite le tableau et les variables qu'il contient, par exemple avec un outil approprié. Au cours de la suite du procédé on sélectionne pour les va- riables intertâches utilisables dans plusieurs mécanismes, l'un des méca- nismes utilisables. Cela peut se faire soit par programmation soit de manière automatique. Pour cela, dans le bloc fonctionnel 17, on sélec- tionne tout d'abord une première variable intertâches. Dans le bloc d'interrogation 18, suivant, on vérifie si toutes les variables intertâches ont été traitées. Dans la négative on passe sur un bloc d'interrogation 19 en vérifiant si pour cette variable intertâche sélectionnée on utilise plu- sieurs mécanismes. Dans l'affirmative, dans un bloc fonctionnel 20, on sélectionne l'un des mécanismes utilisables et on passe sur le bloc fonc- tionnel 17. Si pour la variable intertâches sélectionnée on ne peut utiliser qu'un mécanisme, on passe du bloc d'interrogation 19 directement sur le bloc fonctionnel 17. Dans le bloc fonctionnel 17 on sélectionne alors la variable intertâches suivante. Dès que toutes les variables intertâches ont été traitées, on poursuit le procédé selon l'invention par le bloc fonctionnel 21. Dans la suite du déroulement du procédé, au début et à la fin de la tâche du programme de l'ordinateur, on prend des mesures pour un échange de données consistantes dans le programme. Le choix des mesures à intégrer dans les tâches dépend des mécanismes sélectionnés pour les variables intertâches. Dans le bloc fonctionnel 21 on sélectionne tout d'abord une première tâche du programme. Dans un bloc d'interrogation 22 on vérifie ensuite si la tâche sélectionnée contient une variable intertâches. Dans la négative, on passe directement sur le bloc fonctionnel 21 et on sélectionne la tâche suivante. Dans l'affirmative on passe sur le bloc fonctionnel 23 dans lequel on insère les mesures néces- saires à l'échange consistant des données au début ou à la fin de la tâche sélectionnée. Ensuite, dans un autre bloc d'interrogations 24 on vérifie si toutes les tâches du programme ont été traitées. Dans la négative on passe directement sur le bloc fonctionnel 21 et on sélectionne la tâche suivante. Dans l'affirmative, on terme le procédé selon l'invention dans un bloc fonctionnel 25. Un autre exemple de la présente invention sera décrit ci- après l'aide de la figure 8. On envisage un programme d'ordinateur com- prenant en tout 8 tâches portant les références 1 à 8. Le numéro indique en même temps la priorité de la tâche. La tâche 1 a la plus grande priorité et la tâche 8 la priorité la plus faible. Tout d'abord on examine toutes les variables du programme à l'aide d'un programme d'analyse syntaxique. Dans le tableau de la figure 8 on a donné à titre exemple cinq variables gvRadub, g_xFzgow, gASRb, g_uFzr ub, gaRad_ub (colonne 1). Pour chaque variable on dé- finit les tâches utilisant ces variables, c'est-à-dire lisant et/ou enregistrant ces variables (colonnes 2 et 3). Dans les étapes suivantes on ne considère que les variables intertâches. Toutes les variables qui ne sont utilisées que dans une tâche ne sont pas des variables intertâches (voir gxFzguw, g_uFzrub). Pour les variables intertâches on indique dans la quatrième colonne les mécanismes théoriquement utilisables. Enfin, il faut par exemple que le programmeur sélectionne un mécanisme parmi les méca- nismes théoriquement utilisables. Le mécanisme sélectionné est donné dans la colonne 5. Un outil approprié peut être inséré en fonction du méca- nisme sélectionné, au début ou à la fin de la tâche des ordres de pro- grammes appropriés pour réaliser les mesures décrites ci-dessus pour garantir la consistance des données pour une communication intertâches dans le programme d'ordinateur. Comme indiqué ci-dessus, l'ampleur des mécanismes pos- sibles est très grande. Les relations sont complexes. Il peut dans ces con- ditions être intéressant de concevoir l'outil pour exploiter le tableau et les variables qu'il contient pour configurer les possibilités déjà dans le champ préalable. Si par exemple une application permet l'utilisation limitée de seulement une partie du mécanisme (dans le cas limite il s'agit d'un seul mécanisme) on peut exclure d'emblée les mécanismes non nécessaires. Le cas de plusieurs mécanismes utilisant une variable intertâches est dans ces conditions rare. Le programmeur peut se décharger encore plus forte- ment et dans le cas limite totalement de la sécurisation de la consistance des données. REVENDICATIONS ) Procédé pour réaliser une communication intertâches dans un système de fonctionnement multitâches qui commande l'exécution d'un pro- gramme d'ordinateur subdivisé en plusieurs tâches avec chaque fois au moins un procédé, caractérisé par les étapes de procédé suivantes: - on détermine (12) toutes les variables utilisées dans le programme d'ordinateur, - pour chaque variable on détermine la tâche qui utilise cette variable et on détermine (13) les variables (variables intertâches) utilisées dans plusieurs tâches, - pour chaque variable intertâches on détermine (15) les mécanismes applicables théoriquement pour une communication intertâches à par- tir des mécanismes disponibles, - pour les variables intertâches pour lesquelles s'appliquent plusieurs mécanismes, on sélectionne un mécanisme pour une communication intertâches à partir des mécanismes théoriquement utilisables et - en fonction du mécanisme théoriquement utilisable ou du mécanisme sélectionné on insère (23) des moyens dans les tâches pour un échange de données dans le programme d'ordinateur. 2 ) Procédé selon la revendication 1, caractérisé en ce qu' on détermine les mécanismes théoriquement applicables pour une com- munication intertâches à l'aide des tâches du programme d'ordinateur et de leur priorité. 3 ) Procédé selon l'une quelconque des revendications 1 ou 2, caractérisé en ce que par des mécanismes disponibles pour une communication intertâches on assure que pendant le traitement d'une partie du programme d'ordinateur, on ne modifie pas le contenu de toutes les variables intertâ- ches par d'autres parties du programme d'ordinateur. 4 ) Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que par les mécanismes disponibles pour une communication intertâches on assure que pendant le traitement du programme d'ordinateur on modifie ensemble le contenu de toutes les variables intertâches qui se correspon- dent logiquement. ) Procédé selon la revendication 3, caractérisé en ce que les mécanismes disponibles comprennent au moins l'un des mécanismes suivants: - échange actuel des données, copie au début d'une tâche de priorité in- férieure, - échange actuel de données; il n'y a pas de variable intertâches et pas de copie, - échange actuel de données; copie à la fin d'une tâche de priorité infé- rieure, - échange cyclique de données, copie à la fin d'une tâche de priorité éle- vée à des instants donnés, - échange cyclique de données, copie au début d'une tâche de priorité élevée à des instants déterminés, - pas d'échange de données, les variables sont indépendantes; pas de copie et - cas particuliers. 6 ) Procédé selon la revendication 5, caractérisé en ce que pour l'échange actuel des données - dans une tâche de priorité élevée à enregistrer et au moins une tâche de lecture de priorité inférieure, on associe chaque fois une image pro- pre à au moins l'une des variables intertâches et au début de chaque tâche de priorité inférieure on copie le contenu d'au moins l'une des va- riables intertâches de la tâche de priorité élevée dans au moins une tâ- che de priorité inférieure, si au moins la variable intertâches est enregistrée dans la tâche de priorité élevée et est lue dans au moins une tâche de priorité inférieure, - on ne copie pas le contenu d'une variable intertâches entre une tâche de priorité élevée et une tâche de priorité inférieure si la variable inter- tâches est enregistrée dans la tâche de priorité inférieure et est lue dans au moins une tâche de priorité élevée ou - à une tâche de priorité inférieure à enregistrer et à au moins une tâche de priorité élevée à lire on associe chaque fois une propre image d'au moins une variable intertâches et le contenu d'au moins une variable intertâches est copié à la fin de la tâche de priorité inférieure de la tâ- che de priorité inférieure vers au moins une tâche de priorité élevée, si la variable intertâches est enregistrée dans la tâche de priorité infé- rieure et lue dans au moins une tâche de priorité élevée. 7 ) Procédé selon la revendication 6, caractérisé en ce qu' au cas o au moins une variable intertâches est enregistrée dans la tâche de priorité élevée et est lue dans au moins une tâche de priorité inférieure, on évite l'interruption de la copie du contenu d'au moins une variable in- tertâches par une tâche de priorité élevée. 8 ) Procédé selon la revendication 6, caractérisé en ce qu' au cas o la variable intertâches est enregistrée dans la tâche de priorité inférieure et est lue dans au moins une tâche de priorité élevée, on permet une interruption du calcul avec plusieurs opérations d'enregistrement sur la variable intertâches dans la tâche de priorité inférieure. 9 ) Procédé selon la revendication 5, caractérisé en ce que pour l'échange cyclique des données - on copie le contenu d'au moins l'une des variables intertâches dans un premier rappel d'une tâche de priorité élevée à partir de la tâche de priorité élevée vers au moins une tâche de priorité inférieure si au moins une variable intertâches a été enregistrée dans la tâche de prio- rité élevée et a été lue dans au moins une tâche de priorité inférieure ou - on copie le contenu d'au moins l'une des variables intertâches au cours d'un premier appel d'une tâche de priorité élevée au début de la tâche de priorité élevée par une tâche de priorité inférieure vers au moins une tâche de priorité élevée si au moins une variable intertâches a été enre- gistrée dans la tâche de priorité inférieure et a été lue dans au moins une tâche de priorité élevée.