Procédé et dispositif d'ordonnancement de tâches semi-périodiques dans un système multitâche temps réel Method and device for scheduling semi-periodic tasks in a real-time multitasking system
La présente invention concerne le domaine des noyaux temps réel et plus particulièrement un procédé d'ordonnancement de tâches semi-périodiques dans un système multitâche temps réel. The present invention relates to the field of real-time kernels and more particularly to a method for scheduling semi-periodic tasks in a real-time multitasking system.
On s'intéresse en particulier aux systèmes permettant le lancement régulier de tâches. De tels systèmes sont basés sur une base de temps périodique. Lors de chaque période de la base de temps, le noyau détermine les tâches devant être lancées parmi les tâches déclarées dans le système. We are particularly interested in systems allowing the regular launch of tasks. Such systems are based on a periodic time base. During each time period of the time base, the kernel determines the tasks to be launched among the tasks declared in the system.
De tels environnements sont par exemple le domaine des logiciels embarqués dans les avions, les centrales nucléaires ou les systèmes militaires. Such environments are for example the field of embedded software in aircraft, nuclear power plants or military systems.
On appelle tâche, une fonction logicielle s'exécutant sur un processeur et typiquement constituée d'une succession de cycles de calcul. Une telle tâche est lancée lors d'une période particulière de la base de temps. Elle s'exécute ensuite sur le processeur du système pendant un certain nombre de périodes. Elle se termine ensuite. Le noyau temps réel est chargé de la relancer de manière régulière.
De tels noyaux temps réel sont généralement limités à un mécanisme permettant d'initialiser les tâches de manière périodique. Cette limitation entraîne que des tâches qui ne suivent pas strictement cette logique de lancement périodique vont devoir être, par exemple, dupliquées pour permettre leur gestion par un noyau d'ordonnancement purement périodique. Cette duplication entraîne une gestion dispendieuse des ressources et de la capacité de calcul du processeur du système. A task is a software function that executes on a processor and typically consists of a succession of calculation cycles. Such a task is started during a particular period of the time base. It then runs on the system's processor for a number of periods. It ends then. The real-time kernel is responsible for restarting it on a regular basis. Such real-time kernels are generally limited to a mechanism for initiating tasks periodically. This limitation means that tasks that do not strictly follow this periodic launch logic will have to be, for example, duplicated to allow their management by a purely periodic scheduling kernel. This duplication results in expensive management of the resources and computing capacity of the system's processor.
L'invention vise à résoudre les problèmes précédents par un procédé d'ordonnancement de tâches semi-périodiques. Ces tâches doivent respecter une séquence de lancements périodique. Pour chaque tâche est définie une période d'ordonnancement. Au sein de chaque période est déclarée la séquence des moments de lancement de la tâche. Ainsi, la tâche peut être lancée en respectant une séquence de lancements non périodique, cette séquence étant, elle, répétée de manière périodique. The invention aims to solve the above problems by a method of scheduling semi-periodic tasks. These tasks must follow a periodic launches sequence. For each task is defined a scheduling period. Within each period is declared the sequence of moments of launching the task. Thus, the task can be started by respecting a non-periodic launching sequence, this sequence being repeated periodically.
L'invention concerne un dispositif de traitement d'information temps réel, disposant de moyens d'ordonnancement d'au moins une tâche, le temps étant découpé de manière périodique pour définir une période d'ordonnancement, qui comporte des moyens pour définir pour chaque tâche une période de lancement constituée d'un nombre entier de périodes d'ordonnancement ; des moyens pour définir pour chaque tâche des périodes d'ordonnancement particulières au sein de la période de lancement durant lesquelles ladite tâche doit être lancée et des moyens pour déterminer, lors de chaque période d'ordonnancement, les tâches devant être lancées sachant que pour chaque tâche chaque séquence de lancements définie se répète de manière périodique. The invention relates to a device for processing real-time information, having means for scheduling at least one task, the time being cut off periodically to define a scheduling period, which comprises means for defining for each task a launch period consisting of a whole number of scheduling periods; means for defining for each task particular scheduling periods within the launch period during which said task is to be started and means for determining, during each scheduling period, the tasks to be launched knowing that for each task each defined launcher sequence repeats periodically.
Selon un mode de réalisation particulier de l'invention, le dispositif comporte en outre des moyens de stocker une table contenant pour chaque tâche la durée de la période de lancement exprimée sous la forme d'un nombre entier de périodes d'ordonnancement et une liste des moments de lancement de la tâche exprimés sous la forme d'indexés des périodes d'ordonnancement lors desquelles la tâche doit être lancée au sein de la période de lancement. According to a particular embodiment of the invention, the device further comprises means for storing a table containing for each task the duration of the launching period expressed in the form of an integer number of scheduling periods and a list Task start times expressed as indexed scheduling periods during which the task must be started within the launch period.
Selon un mode de réalisation particulier de l'invention, la valeur -1 affectée à une période de lancement correspond à une période infinie permettant de gérer une tâche apériodique. According to a particular embodiment of the invention, the value -1 assigned to a launch period corresponds to an infinite period for managing an aperiodic task.
L'invention concerne également un procédé d'ordonnancement d'au moins une tâche au sein d'un dispositif de traitement d'information temps réel, le temps étant découpé de manière périodique pour définir une période d' ordonnancement, qui
comporte une étape de définition pour chaque tâche d'une période de lancement constituée d'un nombre entier de périodes d'ordonnancement ; une étape de définition pour chaque tâche des périodes d'ordonnancement particulières au sein de la période de lancement durant lesquelles ladite tâche doit être lancée et lors de chaque période d'ordonnancement, une étape de détermination des tâches devant être lancées sachant que pour chaque tâche chaque séquence de lancement définie se répète de manière périodique. The invention also relates to a method for scheduling at least one task within a real-time information processing device, the time being cut off periodically to define a scheduling period, which includes a step of defining for each task a launch period consisting of an integer number of scheduling periods; a step of defining for each task the particular scheduling periods within the launching period during which said task must be launched and during each scheduling period, a step of determining the tasks to be launched, knowing that for each task each defined launch sequence repeats itself periodically.
Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : The characteristics of the invention mentioned above, as well as others, will appear more clearly on reading the following description of an exemplary embodiment, said description being given in relation to the attached drawings, among which:
La Fig. 1 illustre l'ordonnancement d'un ensemble de tâches périodiques. Fig. 1 illustrates the scheduling of a set of periodic tasks.
La Fig. 2 illustre l'ordonnancement d'un exemple de tâche semi-périodique. Fig. 2 illustrates the scheduling of an example of a semi-periodic task.
Les systèmes multitâches temps réel sont utilisés dans nombre d'environnements où il est nécessaire de maîtriser le fonctionnement d'un système d'information. Ils sont utilisés par exemple dans les domaines où la sécurité de fonctionnement du système est primordiale comme le pilotage de sites sensibles tels que les centrales nucléaires ou encore la gestion électronique d'un avion. Real-time multitasking systems are used in many environments where it is necessary to master the operation of an information system. They are used, for example, in areas where the operational safety of the system is paramount, such as the management of sensitive sites such as nuclear power plants or the electronic management of an aircraft.
Ces systèmes sont multitâches dans le sens où une pluralité de fonctions logicielles indépendantes s'exécute sur le même système. Ils sont temps réel, dans la mesure où les moments d'exécution de ces tâches sont connus. Il dérive de ces contraintes que les tâches doivent avoir un temps d'exécution borné et ne doivent pas, même en cas de problème de programmation, pouvoir consommer les ressources du système hors des allocations qui ont été faites, ces ressources comprenant l'utilisation du processeur, des périphériques et aussi du temps. These systems are multitasking in the sense that a plurality of independent software functions are running on the same system. They are real-time, since the execution times of these tasks are known. It derives from these constraints that the tasks must have a limited execution time and must not, even in the case of programming problems, be able to consume the resources of the system out of the allocations that have been made, these resources including the use of the processor, peripherals and also time.
Les tâches utilisées dans ces systèmes ont donc une durée d'exécution maximale connue. Elles doivent typiquement être exécutées régulièrement. Exceptionnellement, certaines tâches spécifiques ont un fonctionnement permanent. The tasks used in these systems therefore have a known maximum execution time. They must typically be performed regularly. Exceptionally, certain specific tasks have a permanent function.
Le fonctionnement de ces systèmes est basé sur une découpe périodique du temps. Cette découpe périodique définit donc une horloge de fonctionnement. Le temps entre deux tops de cette horloge est appelé ici un intervalle temporel {time slot en anglais). The operation of these systems is based on a periodic cutting of time. This periodic cut therefore defines an operating clock. The time between two tops of this clock is called here a time slot {time slot in English).
On s'intéresse ici à la détermination des moments de lancement des différentes tâches devant s'exécuter sur le système, c'est-à-dire à l'ordonnancement de ces tâches.
L'ordonnancement est basé sur une horloge d'ordonnancement périodique, l'intervalle temporel associé définit la période d'ordonnancement. We are interested here in the determination of the launch times of the various tasks to be executed on the system, that is to say the scheduling of these tasks. The scheduling is based on a periodic scheduling clock, the associated time interval defines the scheduling period.
Il est connu de définir pour chacune des tâches devant être exécutées dans le système une période de lancement. Cette période s'exprime généralement en un nombre entier de périodes d'ordonnancement. Cette période de lancement est choisie supérieure à la durée maximale connue d'exécution de la tâche. Le lancement de la tâche est alors déclenché lors d'une période d'ordonnancement et répété périodiquement lors des périodes d'ordonnancement correspondant à la période de lancement. Avantageusement, ces systèmes définissent également pour chaque tâche périodique un décalage {offset en anglais) qui est le nombre de périodes d'ordonnancement que l'on doit attendre au démarrage du système pour lancer la première occurrence de la tâche. It is known to define for each task to be executed in the system a launch period. This period is usually expressed in a whole number of scheduling periods. This launch period is chosen greater than the maximum known duration of execution of the task. The launch of the task is then triggered during a scheduling period and repeated periodically during the scheduling periods corresponding to the launch period. Advantageously, these systems also define for each periodic task an offset (offset in English) which is the number of scheduling periods that must be expected at the start of the system to launch the first occurrence of the task.
La Fig. 1 illustre un tel système. L'horloge d'ordonnancement 1.1 est située en bas, douze périodes d'ordonnancement étant figurées. La Fig. 1 illustre les moments de lancement de trois tâches périodiques. La tâche T0 possède un décalage de 0 et une période de 3. Elle est donc lancée aux périodes d'ordonnancement 0, 3, 6, 9 et 12. La tâche Tl possède un décalage de 1 et une période de 3. Elle est donc lancée aux périodes d'ordonnancement 1, 4, 7 et 10. La tâche T2 possède un décalage de 2 et une période de 4. Elle est donc lancée aux périodes d'ordonnancement 2, 6 et 10. Fig. 1 illustrates such a system. The scheduling clock 1.1 is located at the bottom, twelve scheduling periods being shown. Fig. 1 illustrates the launch times of three periodic tasks. The task T0 has an offset of 0 and a period of 3. It is therefore launched at the scheduling periods 0, 3, 6, 9 and 12. The task T1 has an offset of 1 and a period of 3. It is therefore started at scheduling periods 1, 4, 7 and 10. Task T2 has an offset of 2 and a period of 4. It is therefore started at scheduling periods 2, 6 and 10.
Le problème se pose de la gestion de tâches qui ne suivraient pas strictement un schéma de lancement périodique. On s'intéresse plus particulièrement à des tâches qualifiées de semi-périodiques. Concernant ces tâches, le lancement n'est pas périodique. Par contre, il est possible d'identifier une séquence de moments de lancement qui elle est périodique. The problem arises of managing tasks that do not strictly follow a periodic launch scheme. We are particularly interested in semi-periodic tasks. Regarding these tasks, the launch is not periodic. On the other hand, it is possible to identify a sequence of launching moments which is periodic.
Un exemple d'une telle tâche est illustré Fig. 2. La tâche T0 doit être lancée aux périodes d'ordonnancement 0, 2, 6, 8 12, etc. Il est possible de réaliser cet ordonnancement avec les systèmes connus. Il faut alors considérer qu'il y a deux tâches, T0 et Tl auxquelles on affecte une période de 6 intervalles et un décalage de 0 pour la première et de deux pour la seconde. La tâche T0 est donc lancée aux périodes d'ordonnancement 0, 6, 12, tandis que la tâche T l est lancée aux périodes 2 et 8. L'ordonnancement d'une seule et même tâche consomme alors les ressources de deux tâches au sein du noyau temps réel. An example of such a task is illustrated in FIG. 2. Task T0 must be started at scheduling periods 0, 2, 6, 8 12, etc. This scheduling can be done with known systems. It must then be considered that there are two tasks, T0 and Tl, to which a period of six intervals is assigned and an offset of 0 for the first and two for the second. The task T0 is thus launched at the scheduling periods 0, 6, 12, while the task T l is launched at the periods 2 and 8. The scheduling of one and the same task then consumes the resources of two tasks within real-time kernel.
Pour permettre l'ordonnancement de telles tâches, l'invention se propose de définir pour chaque tâche une période de lancement. Cette période de lancement est le
nombre de périodes d'ordonnancement qui permet d'avoir une séquence de lancement de la tâche qui se répète à l'identique. Pour la tâche illustrée à la Fig. 2, elle est typiquement de 6 périodes d'ordonnancement. Une fois cette période de lancement définie, il faut indiquer à quelle période d'ordonnancement la tâche doit être lancée. On définit alors une li ste des index, au sein de la séquence, des périodes d'ordonnancement auxquelles la tâche doit être lancée. Pour la tâche illustrée Fig. 2, il s'agit des index 1 et 3, signifiant que la tâche doit être lancée lors de la première période d'ordonnancement de la séquence et lors de la troisième. To allow the scheduling of such tasks, the invention proposes to define for each task a launch period. This launch period is the number of scheduling periods which allows to have a sequence of launching the task which repeats itself identically. For the task illustrated in FIG. 2, it is typically 6 scheduling periods. Once this launch period has been defined, it must be indicated to which scheduling period the task is to be started. We then define a list of indexes, within the sequence, of the scheduling periods to which the task must be launched. For the task illustrated in Fig. 2, these are the indexes 1 and 3, meaning that the task must be started during the first scheduling period of the sequence and in the third.
Avantageusement, ces informations sont mémorisées par le noyau temps réel au sein d'une table qui contient une entrée pour chaque tâche du système. Cette entrée est constituée au moins de l'indication de la période de lancement et de la liste des index des périodes d'ordonnancement auxquelles la tâche doit être lancée au sein de la période. Advantageously, this information is stored by the real-time kernel within a table which contains an entry for each task of the system. This entry consists at least of the indication of the launch period and the list of scheduling period indexes to which the task is to be launched within the period.
Le noyau fonctionne alors en effectuant une étape de détermination des tâches devant être lancées lors de chaque période d' ordonnancement. Un exemple de réalisation de cette étape de détermination consiste à maintenir pour chaque tâche un compteur d'index de la période d'ordonnancement au sein de la séquence de lancement. Ce compteur est initialisé à 1 et s'incrémente lors de chaque tâche d'ordonnancement. Lorsque sa valeur est égale à la période plus un, on réinitialise le compteur à 1. Le compteur est comparé aux index de la liste associée à la tâche. Si l'index est compris dans la liste, on lance la tâche. Alternativement, on peut aussi calculer l'index directement par une division d'un index global croissant modulo la période de la tâche. Le reste de cette division donne l'index au sein de la séquence de lancement. The kernel then operates by performing a task determination step to be initiated during each scheduling period. An exemplary embodiment of this determination step consists in maintaining for each task an index counter of the scheduling period within the launch sequence. This counter is initialized to 1 and increments during each scheduling task. When its value is equal to the period plus one, the counter is reset to 1. The counter is compared to the indexes in the list associated with the task. If the index is included in the list, the task is started. Alternatively, one can also calculate the index directly by a division of an increasing global index modulo the period of the task. The remainder of this division gives the index within the launch sequence.
Avantageusement, une tâche ayant une période négative ne sera jamais relancée. Advantageously, a task having a negative period will never be restarted.
On peut ainsi gérer des tâches apériodiques, c'est-à-dire continues, en sus des tâches semi-périodiques dans le système. It is thus possible to manage aperiodic, that is, continuous, tasks in addition to semi-periodic tasks in the system.
Avantageusement, la fin de la liste des index de lancement au sein de la séquence est indiquée par une valeur nulle. Advantageously, the end of the list of launch indexes within the sequence is indicated by a zero value.
Ce procédé d'ordonnancement permet de gérer les tâches semi-périodiques efficacement. Il ne nécessite qu'une entrée par tâche dans la table de gestion.
This scheduling process makes it possible to manage semi-periodic tasks efficiently. It requires only one entry per task in the management table.