Brevet FR2658628A1 — publié le 19910823

SYSTEME INFORMATIQUE POUR GERER L'EXECUTION EN TEMPS REEL DE TACHES SELON DES PRIORITES ET HIERARCHIES PREDETERMINEES. La présente invention concerne un système informatique capable d'exécuter en temps réel une pluralité de tâches. L'invention concerne plus particulièrement un système informatique qui gere l'exécution des tâches dont les niveaux de priorité d'exécution ont été définis au préalable. Actuellement, la définition des niveaux de priorité des tâches dans ce genre de système est effectuée à l'aide des moyens d'interruption câblée faisant partie du matériel (Hardware) du système. Une telle définition de priorité n'est pas facile à changer pour s'adapter à de nouvelles tâches à exécuter. Il en résulte une rigidité d'utilisation du système et un temps total plus long pour l'exécution de la tâche interrompue. L'objet de la présente invention est de remédier à ces inconvénients en réalisant un système informatique dont le fonctionnement est plus salubre, dont l'utilisation est plus souple, et dont la gestion des tâches à exécuter est plus dynamique. Le système selon l'invention permet de définir ou redéfinir, au début de chaque relance du logiciel utilisé, les niveaux de priorité, ainsi que les hiérarchies des tâches à exécuter grâce à une routine d' interruption. Le système informatique, selon l'invention, est capable d'exécuter en temps réel une pluralité de tâches. Ce système comprend plusieurs registres de tâches dans lesquels sont mémorisées les tâches à exécuter dont les niveaux de priorité et les hiérarchies dans un niveau de priorité donné ont été définis au préalable par la routine d'interruption, un registre primaire et un registre secondaire de structure identique et dont chaque bit correspond à un niveau de priorité déterminé des tâches mémorisées dans l'un des registres de taches correspondant, les registres primaire et secondaire étant conçus de telle sorte que pour un niveau de prioriété donné, lorsqu'il y a présence d'au moins une tâche en attente d'exécution sur ce niveau, le bit correspondant du registre primaire vaut 1 (0 dans le cas contraire); lorsqu'il y a une tâche en cours d'exécution ou une tâche dont l'exécution est interrompue sur ce niveau, le bit correspondant du registre secondaire vaut 1 (O dans le cas contraire). Les registres primaire et secondaire sont comparés, à l'aide de tests appropriés, de façon à pouvoir n'exécuter qu'une tâche située dans un niveau de priorité supérieur ou réactiver une tâche dont l'exécution a été interrompue pour continuer cette exécution lorsqu'vil nty a plus de tâche en attente d'exécution située à un niveau de priorité supérieur. L'invention sera mieux comprise à l'étude de la description détaillée d'un mode de réalisation de l'invention pris à titre d'exemple nullement limitatif et illustré par les dessins annexés, sur lesquels la figure I est un schéma de fonctionnement du système informatique selon l'invention; et la figure 2 est une schéma d'explication de la détermination de la tâche à exécuter selon l'invention. Pour faciliter la compréhension de l'invention, seule la partie qui nous intéresse du système de l'invention est exposée ci-dessous. Comme illustré sur la figure 1, le système comprend une unité de base 1 dans laquelle sont mémorisées des tâches de fond générées lors de l'exécution des tâches mémorisées dans des registres de tâches P3i. L'unité de base est reliée par une connexion 2 à une unité de définition 3 qui définit, à l'aide d'une routine d'interruption, les niveaux de priorité et les hiérarchies des tâches mémorisées dans les registres P3i. L'unité de définition 3 est reliée par une connexion 4 à une unité de gestion 5 permettant de mémoriser les niveaux de priorité des tâches dans un registre primaire P1 et un registre secondaire P2 et de différencier les niveaux de priorité et les hiérarchies des tâches mémorisées dans les registres P3i en attente d'exécution et/ou en cours d'exécution.L'unité de gestion 5 gère l'exécution des tâches mémorisées dans les registres P3i jusqu a la dernière tâche, le fonctionnement du système étant assuré ensuite dans l'unité de base qui gère les tâches de fond moins prioritaires que les tâches mémorisées dans les registres P3i De préférence, les registres primaire P1 et secondaire P2 sont identiques. Le registre primaire P1 mémorise les niveaux de priorité des tâches en attente d'exécution se trouvant sur les registres P3i correspondants. De même, le registre secondaire P2 mémorise les niveaux de priorité des tâches en cours d'exécution ou dont l'exécution a été interrompue.Chaque registre P 3i correspond à un niveau de priorité donné et mémorise des tâches en attente d'exécution selon une hiérarchie bien définie, de façon à ce que la tâche de hiérarchie supérieure soit exécutée en premier pour un même niveau de prioriété de tâche. En pratique, on choisira avantageusement les registres primaire P1 et secondaire P2 ayant le même nombre de bits qui peut être inférieur ou égal au nombre de registres de tâches P3i Etant donné que le registre primaire P1 mémorise les niveaux de tâches en attente d'exécution, pour un niveau de priorité donné, tant qu'il y a des tâches en attente d'exécution, le bit correspondant du registre primaire P1 vaut 1. Autrement dit, le bit est mis à zéro uniquement lorsque toutes les tâches du niveau de priorité correspondant ont été exécutées. Pour ce qui est du registre secondaire P2, il mémorise le niveau de priorité de tâches en cours d'exécution. Une instruction est donnée au registre secondaire au début de chaque exécution d'une tâche pour mettre à 1 le bit correspondant du registre secondaire signalant ainsi qu'une tâche du niveau de priorité correspondant est en cours d'exécution. Ce bit est remis à zéro lorsque l'exécution de ladite tâche est terminée. Le système de l'invention est conçu de telle sorte que pour un niveau de priorité donné, une seule tâche peut être en cours d'exécution ou dont l'exécution a été interrompue pour cause d'une tâche d'un niveau de priorité supérieur. Autrement dit, une tâche ne peut être exécutée que si aucune autre tâche du même niveau de priorité n'est en cours d'exécution ou dont l'exécution a été interrompue. Il faut d'abord terminer l'exécution de la tâche inachevée avant de solliciter une autre tâche en attente d'exécution et située au même niveau de priorité. Pour déterminer l'ordre d'exécution des tâches mémorisées dans les registres P3i, le système de l'invention prévoit un test primaire T1 et un test secondaire T2 entre le registre primaire P1 et le registre secondaire P2 (figure 2). Le test primaire T1 consiste à vérifier si le contenu du registre secondaire P2 est supérieur ou égal à celui du registre primaire P1. Dans le cas où le test primaire T1 est positif, ce qui signifie qu'une tâche de niveau supérieur ou égal à celui d'une nouvelle tâche à exécuter a été interrompue et doit être relancée. Sur la figure 2,cette opération est représentée par la liaison 10 et une unité 11 de réactivation de la tâche interrompue. Si le test primaire T1 est négatif, le système procède alors au test secondaire T2 qui consiste à déterminer si le contenu du OU EXCLUSIF entre P1 et P2 (P1 0 P2) est supérieur à celui du ET entre P1 et P2 (P1 A ). Si le test secondaire T2 est P1 et (P1 2 2 positif, alors la nouvelle tâche est d'un niveau de priorité supérieur et doit être activée. Dans le cas contraire, la nouvelle tâche est d'un niveau de priorité inférieur ou égal à une tâche interrompue qui doit être réactivée en priorité. Comme illustré sur la figure 2, le test positif du T2 conduit via une liaison 12 à une unité 13 d'activation d'une nouvelle tâche; et le test négatif du T2 implique via la liaison 14 à l'unité 11 de réactivation de la tâche interrompue. Pour mieux expliquer le fonctionnement des tests T1 et T2, un exemple concret est donné ci-dessous en choisissant des registres P1 et P2 pourvus chacun de huit bits correspondant à huit niveaux de priorité numérotés de O à 7. Soit une tâche du niveau de priorité 6 en cours d'exécution tout en supposant que les autres niveaux de priorité ne comportent aucune tâche en attente de l'exécution, l'état desdits registres primaire et secondaire serait alors P1 : 0100 0000 (40 en nombre hexadécimal) P : 0100 0000 (40 en nombre hexadécimal). Si au cours de l'exécution de ladite tâche, une nouvelle tâche du niveau de priorité 3 intervient dans le système, l'état des registres primaire et secondaire devient alors P1 : 0100 1000 (48 en nombre hexadécimal) P2 : 0100 0000 (40 en nombre hexadécimal). Le test primaire T1 est alors négatif puisque le contenu du registre secondaire P2 est inférieur à celui du registre primaire P1. Le système effectue alors le test secondaire T2 P1 8 P2 : 0000 1000 (04 en nombre hexadécimal) P1 A P2 : 0100 0000 (40 en nombre hexadécimal). Il en résulte que le test secondaire T2 est négatif, ce qui signifie qutil faut en premier réactiver la tâche du niveau de priorité 6, ladite tâche ayant été interrompue lors d'intervention de la nouvelle tâche du niveau de priorité 3 dans le système. Le système informatique de l'invention pour la gestion de taches peut être avantageusement utilisé sur véhicules pour assurer le contrôle en temps réel de processus de fonctionnement pour lesquels plusieurs niveaux de priorité et/ou hiérarchies de tâches ont été définis. La hiérarchisation des tâches, pour un même niveau de priorité, permet de minimiser les besoins en mémoire de sauvegarde du contexte lorsque l'on doit interrompre une tâche pour aller en exécuter une autre. Comme exemple, le système de l'invention associé à un ordinateur permet de gérer des tâches qui sont situées : au niveau de priorité 0, pour l'acquisition de la vitesse de chacune des quatre roues du véhicule et de la vitesse du moteur, soit cinq taches; au niveau de priorité 1, une fréquence fixe générée par une horloge qui déclenche une interruption afin de réaliser des acquisitions analogiques et le déroulement du processus, cette tâche générant des tâches de priorité inférieure ou des tâches de fond pour l'initialisation de routine de bas niveau et l'affichage de points en temps réel sur l'écran par exemple; au niveau de priorité 2, les demandes de modification émises par le biais du clavier par le metteur au point, la tâche générée réveillant une unité d'interprètation qui exécute, après avoir reconnu la commande, les actions demandées de façon non prioritaire par rapport aux niveaux précédents. Appliqué à un véhicule, le contrôle d'éléments du châssis peut nécessiter un déroulement au moins partiel du logiciel adapté au système de l'invention à une fréquence fixe (50 Hz par exemple) pour tenir compte d'aspects temporels. Cette logique de contrôle peut avoir besoin de mesurer, selon une certaine procédure, les vitesses de quatre roues et celle du moteur, en utilisant des roues dentées par exemple. Ce sont des événements qui vont surgir de façon aléatoire par rapport à la fréquence de base (50 Hz) et qui doivent être traités rapidement, notamment pour les cinq tâches situées au niveau de priorité O et qui seront traitées séquentiellement. Dans le c s où la durée d'exécution d'un logiciel est variable en fonction d'événements extérieurs selon la logique de contrôle, il peut être intéressant de décomposer l'ensemble du logiciel en tâches dont on définira une priorité d'exécution et une hiérarchie. Auquel cas, les éléments principaux du logiciel génèreront automatiquement les tâches à exécuter, moins prioritaires que le plus bas niveau de priorité, lorsque le temps sera disponible. La même approche du problème s'applique lorsque la fréquence d'échantillonnage du logiciel est variable. Par exemple, pour le contrôle du moteur, lorsque les calculs sont séquencés par le point mort haut dont l'occurence varie de 20 à 200 Hz en fonction du régime moteur. REVENDICATIONS 1. Système informatique capable d'exécuter en temps réel une pluralité de tâches, caractérisé par le fait qu'il comprend plusieurs registres de tâches (P3i) dans lesquels sont mémorisées les tâches à exécuter dont les niveaux de priorité et les hiérarchies dans un même niveau de priorité ont été définis au préalable par une routine d'interruption; un registre primaire (P1) et un registre secondaire (P2) de structure identique, et dont chaque bit correspond à un niveau de priorité des tâches mémorisées dans un registre de tâches (P3i) correspondant, et au moins un test entre les registres primaire et secondaire de façon à pouvoir n'exécuter que des tâches d'un niveau de priorité supérieur et pour un niveau de priorité donnée, à pouvoir terminer en priorité une tâche interrompue avant de commencer une autre tâche. 2. Système selon la revendication 1, caractérisé par le fait qu'un bit du registre primaire (P1) n'est mis à zéro que si toutes les tâches du niveau de priorité correspondant ont été exécutées; un bit du registre secondaire (P2) est mis à zéro tant qu'il nty a pas de tâche en cours d'exécution ou dont l'exécution a été interrompue sur le niveau de priorité correspondant; et que le système comporte un test primaire (T1) et un test secondaire (T2) entre les registres primaire (P1) et secondaire (P2), de façon à ce que si le contenu du registre secondaire est supérieur ou égal à celui du registre primaire, le système réactive l'exécution d'une tâche interrompue d'un niveau depriorité supérieur selon le test primaire; sinon le contenu OU EXCLUSIF entre (P1) et (P2) est comparé, selon le test secondaire, au contenu du ET entre (P1) et (P2), la supériorité du premier terme impliquant l'activation d'une nouvelle tâche, l'infériorité du premier terme impliquant la réactivation de la tâche interrompue d'un niveau de priorité supérieur. 3. Système selon l'une des revendications 1 à 2, caractérisé par le fait qu'il génère des tâches de fond pendant l'exécution d'une tâche mémorisée dans un des registres de tâches (P3i). 4. Utilisation du système informatique selon l'une des revendications précédente pour le contrôle en temps réel du fonctionnement d'un véhicule.