engineering-design-and-analysis
Calendrier de la sélection de l'algorithme dans Rtos: Théorie de l'équilibre avec l'application
Table of Contents
Les systèmes d'exploitation en temps réel (RTOS) sont l'épine dorsale des systèmes embarqués où la prévisibilité du moment et le comportement déterministe sont essentiels. Des unités de contrôle automobile aux appareils médicaux, à l'automatisation industrielle aux applications aérospatiales, la sélection d'un algorithme de planification approprié peut signifier la différence entre la réussite du système et l'échec catastrophique.
Comprendre les systèmes d'exploitation en temps réel et les principes fondamentaux de l'établissement des calendriers
Les systèmes d'exploitation en temps réel sont axés sur les événements et préemptifs, ce qui signifie que le système d'exploitation peut surveiller la priorité pertinente des tâches concurrentes et apporter des modifications à la priorité de tâche. Une caractéristique clé d'un RTOS est le niveau de cohérence de son niveau quant au temps qu'il prend pour accepter et compléter la tâche d'une application; la variabilité est «jitter».
Dans un RTOS, l'établissement du calendrier ne se limite pas à la gestion des tâches, mais il faut aussi s'assurer que les tâches critiques sont exécutées dans un délai défini, appelé délai. L'agendaur doit prendre ces décisions rapidement et de façon déterministe pour maintenir les garanties en temps réel dont dépendent les applications.
Systèmes en temps réel et en temps réel
Un RTOS qui peut généralement ou généralement respecter une date limite est un système d'exploitation en temps réel souple, mais s'il peut respecter une date limite de façon déterministe, il est un système d'exploitation en temps réel difficile. Cette distinction influence fondamentalement la sélection des algorithmes de programmation.
Les RTOS souples offrent une approche beaucoup plus flexible que les RTOS difficiles, et lorsqu'un RTOS souple manque une date limite, il est indésirable mais pas catastrophique. Les applications telles que la diffusion multimédia, les communications réseau et la réactivité de l'interface utilisateur tombent généralement dans la catégorie des soft en temps réel où les délais manqués occasionnellement sont tolérables.
Classement des algorithmes d'établissement des calendriers
Les algorithmes de planification peuvent être classés en deux types principaux : les algorithmes de planification préventive et les algorithmes de planification non préventive. Cette classification fondamentale influe sur la façon dont les tâches interagissent et comment le système réagit à l'évolution des priorités et des événements urgents.
Préemptifs vs Non-préemptifs
Le planning préventif permet l'interruption d'une tâche en cours d'exécution, donc une autre avec un statut plus « urgent » peut être exécutée. Ce changement dynamique entre les tâches que cet algorithme emploie est, en fait, une forme de multitâche.
Le calendrier non préventif permet à l'inverse de terminer l'exécution d'une tâche avant que l'agendar ne choisisse la tâche suivante. Dans le cas d'un calendrier non préventif, même si la priorité la plus élevée est attribuée à la tâche, il faut attendre que la tâche actuelle, qui peut être lente ou de la priorité la plus faible, puisse mener à une attente plus longue.
Attribution de priorité statique ou dynamique
Le planning statique implique toutes les décisions de planification au moment de la compilation avec la structure temporelle des tâches fixée. Les priorités sont assignées avant le début de l'exécution et restent constantes tout au long du fonctionnement du système.
Dans les algorithmes dynamiques prioritaires, la priorité d'une tâche peut changer pendant son exécution en fonction des temps d'initiation. Les approches dynamiques offrent une plus grande flexibilité et peuvent atteindre une utilisation plus élevée du processeur, mais au coût de complexité accrue et de frais généraux d'exécution.
Schéma de vitesse monotonique (RMS): La norme de priorité statique
Le random-monotonic schealing (RMS) est un algorithme d'attribution de priorité utilisé dans les systèmes d'exploitation en temps réel (RTOS) avec une classe de programmation statique-priorité, où les priorités statiques sont attribuées en fonction de la durée du cycle de l'emploi, de sorte qu'une durée de cycle plus courte entraîne une priorité plus élevée.
Principes fondamentaux du SGR
L'algorithme de programmation Class Monotonique est une règle simple qui assigne des priorités à différentes tâches selon leur période de temps, avec une tâche avec la plus petite période de temps ayant la plus haute priorité, et une tâche avec la plus longue période ayant la plus faible priorité pour l'exécution. Comme la période de temps d'une tâche ne change pas, ni sa priorité change au fil du temps, faisant de Rate Monotonique un algorithme de priorité fixe.
L'algorithme de programmation monotonique de taux fonctionne selon le principe de la préemption, où la préemption se produit sur un processeur donné lorsqu'une tâche prioritaire plus élevée bloque une tâche prioritaire inférieure de l'exécution. Si un processus prioritaire plus faible est exécuté et qu'un processus prioritaire plus élevé devient disponible pour l'exécution, elle prévaudra le processus prioritaire plus faible.
Analyse de calendrier et limites d'utilisation
Liu & Layland (1973) a prouvé que pour un ensemble de tâches périodiques avec des périodes uniques, il existe un calendrier réalisable qui respectera toujours les délais si l'utilisation du CPU est inférieure à une limite spécifique (selon le nombre de tâches). Un ensemble de tâches périodiques indépendantes prévues par le RMS respectera toujours les délais pour toutes les phases de tâches si l'utilisation totale est inférieure à la limite (n(2^{1/n} - 1)).
Dans le cas particulier où toutes les périodes de tâches sont harmoniques, la limite d'utilisation est de 1,0, permettant un débit de traitement à 100% tout en respectant toutes les échéances, bien que cette limite soit une approximation du pire cas; pour les ensembles de tâches choisis au hasard, la limite supérieure probable est d'environ 88%.
Optimisation et considérations pratiques
L'attribution de priorité de vitesse-monotonique est optimale selon les hypothèses données, ce qui signifie que si un algorithme de programmation de priorité statique peut respecter toutes les échéances, alors l'algorithme de vitesse-monotonique peut aussi. RMS est un algorithme de priorité statique optimal pour planifier des tâches périodiques indépendantes, préemptables et sur un seul processeur, optimal dans le sens où si un ensemble de tâches peut être programmé par n'importe quel algorithme de priorité statique, alors RMS sera en mesure de planifier ce jeu de tâches.
Les partenaires industriels préfèrent fortement une approche statique de programmation prioritaire pour les applications en temps réel difficiles, en fonction de considérations pratiques importantes, notamment le fait que la différence de performance est faible dans la pratique, l'expérience indiquant qu'une approche basée sur la théorie monotonique de vitesse peut souvent atteindre jusqu'à 90% d'utilisation.
Avantages du schéma monotonique de vitesse
- Facile à mettre en œuvre
- Si un algorithme d'attribution de priorité statique peut respecter les délais, alors noter la programmation monotonique peut également faire la même chose, ce qui le rend optimal
- Caractérisée par sa simplicité et ne nécessite qu'une seule structure de liste pour la mise en œuvre
- Mise en œuvre plus simple, même dans les systèmes sans support explicite pour les contraintes de temps (périodes, délais)
- Fournit un comportement déterministe et des temps de réponse prévisibles
- Bien étayée par des analyses théoriques et des tests de schedulabilité
- Largement adopté dans l'industrie avec un large soutien d'outils
Limites de la vitesse Monotonique Scheduling
- Très difficile à soutenir des tâches périodiques et sporadiques dans le cadre de l'AMR
- RMA n'est pas optimal lorsque la période de travail et la date limite diffèrent
- Utilisation inférieure liée par rapport aux algorithmes dynamiques
- Sensible aux problèmes d'inversion prioritaire
- Suppose des tâches indépendantes sans partage des ressources
- Peut ne pas convenir aux systèmes avec des temps d'exécution très variables
Date limite la plus tôt (EDF): Calendrier dynamique des priorités
L'algorithme de priorité dynamique le plus important (et analysé) est le plus précoce (EDF). La priorité d'un emploi (en vigueur) est inversement proportionnelle à son échéance absolue, ce qui signifie que le poste le plus prioritaire est celui qui a le plus tôt. Contrairement au SGR, EDF ajuste dynamiquement les priorités de tâches en fonction de leurs échéances actuelles plutôt que des périodes fixes.
Fonctionnement du FED
EDF réalise des utilisations plus élevées du processeur que RMS. L'algorithme évalue en permanence quelle tâche prête a la date limite la plus proche et la planifie pour l'exécution. Le processus le plus prioritaire est celui dont la date limite est la plus proche à temps, et le processus le plus prioritaire est celui dont la date limite est la plus éloignée.
RMS (et programmation prioritaire fixe en général) n'est pas optimale par rapport aux algorithmes dynamiques prioritaires comme le premier délai (EDF), qui peut atteindre jusqu'à 100% d'utilisation du processeur tout en garantissant des délais, tandis que les méthodes prioritaires fixes sont intrinsèquement limitées.
Avantages du FED
- Peut théoriquement atteindre l'utilisation de 100% processeur
- Optimisation pour la programmation dynamique prioritaire sur un seul processeur
- Mieux gérer les différents temps d'exécution des tâches
- Plus de souplesse dans l'adaptation des tâches périodiques et sporadiques
- S'adapte naturellement aux changements de délais
- Pas besoin d'attribuer des priorités statiques pendant la phase de conception
Inconvénients du FED
- Plus complexe à mettre en œuvre que les algorithmes statiques prioritaires
- Frais généraux plus élevés dus aux calculs dynamiques prioritaires
- Exige des informations explicites sur les délais pour toutes les tâches
- Comportement imprévisible pendant les conditions de surcharge
- Plus difficile à analyser et à vérifier la schedulabilité
- Peut provoquer plus de changements de contexte que les approches prioritaires
- Moins intuitive pour les développeurs habitués à la pensée axée sur les priorités
Comparaison entre le SGR et le FED
Il existe des différences entre les algorithmes de programmation prioritaires RMS et EDF. Le choix entre ces deux approches fondamentales dépend souvent des exigences spécifiques de l'application, des contraintes du système et des préférences techniques. RMS offre simplicité et prévisibilité avec des antécédents industriels éprouvés, tandis qu'EDF fournit une optimisation théorique et une utilisation plus élevée au coût de la complexité de la mise en œuvre.
Pour les systèmes avec des tâches périodiques bien définies et des exigences d'utilisation modérées, RMS offre généralement un excellent équilibre de performance et de simplicité. Pour les systèmes qui repoussent les limites d'utilisation ou qui traitent de structures de délais complexes, EDF peut être nécessaire malgré sa complexité ajoutée.
Autres algorithmes d'établissement des calendriers communs dans le RTOS
Actuellement, les algorithmes les plus utilisés dans les RTOS pratiques sont l'ordonnancement non préventif, l'ordonnancement rond et l'ordonnancement prioritaire préventif. Au-delà du SGR et EDF, plusieurs autres approches d'ordonnancement servent des cas d'utilisation spécifiques et des exigences du système.
Premier arrivé Premier servi (FCFS)
FCFS est un algorithme de planification non préventive qui n'a pas de niveaux de priorité assignés aux tâches, où la tâche qui arrive en premier dans la file d'attente de planification (c.-à-d. entre l'état prêt), se met dans l'état de fonctionnement d'abord et commence à utiliser le CPU. FIFO est le plus simple programmeur en ce sens qu'il n'exige qu'un algorithme de queue très basique, ne nécessitant aucune entrée de l'utilisateur (comme l'attribution des priorités, une estimation du temps de réalisation ou de la période des tâches) comme tout est géré par le RTOS.
En raison de l'absence de priorisation de la FIFO, elle peut échouer avec un calendrier qui a une utilisation totale assez faible du processeur, et bien que la FIFO soit un algorithme facile à comprendre, ses capacités limitées la rendent mal adaptée pour de nombreuses applications réelles. FCFS fonctionne mieux pour les systèmes simples avec des contraintes de temps minimales où l'ordre d'exécution des tâches s'aligne naturellement sur l'ordre d'arrivée.
Rond Robin Scheduling
Round-robin est un type préemptif d'algorithme de planification où il n'y a pas de priorités assignées aux tâches, et chaque tâche est mise en état de marche pour un temps prédéfini fixe. Ce temps est communément appelé time-slice (aka quantum), et une tâche ne peut pas fonctionner plus longtemps que le time-slice.
Round Robin a l'avantage d'être simple à comprendre et presque aussi simple à mettre en œuvre, avec l'avantage d'être « juste » en ce que toutes les tâches obtiendront une part égale du processeur et aucune tâche ne peut ennuyer le processeur. Cette équité est extrêmement utile sur un système multi-utilisateurs typique (comme un serveur Linux) mais beaucoup moins pertinent pour un OS en temps réel. Round robin manque de la conscience de délai nécessaire pour les systèmes en temps réel dur mais peut être utile pour les applications en temps réel douces exigeant justice.
Calendrier préventif fondé sur les priorités
Pour établir un calendrier de priorité préventive, il faut attribuer un niveau de priorité à chaque tâche, où une tâche en cours peut être interrompue si une tâche à priorité élevée entre dans la file d'attente. Cette approche offre une souplesse dans la gestion de l'importance de la tâche tout en maintenant la réactivité aux événements critiques.
Calendrier des créneaux horaires (ARINC 653)
La programmation des Slots de temps est similaire à ARINC 653, où plusieurs slots de temps sont mis en place et chaque tâche est assignée à un slot de temps dans une boucle concentrique. Les tâches doivent terminer dans leurs slots de temps assignés ou attendre la prochaine fente qui est assignée à cette tâche. Cette approche fournit un fort isolement temporel entre les tâches, ce qui le rend populaire dans les applications aérospatiales et automobiles critiques pour la sécurité.
Laxité la moins élevée d'abord (LLF)
Le minimum temps de laque (LST) est un algorithme dynamique de programmation axé sur les priorités utilisé dans les systèmes en temps réel où toutes les tâches du système sont assignées une certaine priorité en fonction de leur temps de relâche, avec la tâche qui a le moins de temps de relâche ayant la priorité la plus élevée et vice versa. Laxité (ou temps de relâche) représente combien de temps reste avant une date limite après avoir pris en compte le temps d'exécution restant.
Facteurs critiques influant sur le calendrier de sélection de l'algorithme
Il est important que nous choisissions l'algorithme avant le début du développement de l'application utilisateur, et comme beaucoup de choses dans le domaine de l'ingénierie, il n'y a pas d'algorithme universel qui soit adapté à chaque cas d'utilisation.
Caractéristiques de la tâche et contraintes de temps
En temps réel, les systèmes d'exploitation (RTOS) sont pour la plupart de nature périodique, les données étant principalement fournies par des capteurs, des systèmes de contrôle de servomoteurs et des systèmes de surveillance en temps réel, et ces tâches périodiques utilisent la plupart de la puissance de calcul du processeur.
Un système de contrôle en temps réel comprend de nombreuses tâches périodiques simultanées ayant des contraintes de temps individuelles, y compris le temps de sortie (ri), le temps d'exécution du pire cas(Ci), la période (ti) et le délai(Di) pour chaque tâche individuelle Ti. Une caractérisation précise de ces paramètres est essentielle pour l'analyse de schedulabilité et la sélection des algorithmes.
Prévisibilité et déterminisme du système
Le calendrier en temps réel fournit prévisibilité et déterminisme dans l'exécution des tâches, permettant aux développeurs d'analyser et de garantir le temps d'exécution et le temps de réponse le plus défavorable des tâches, en veillant à ce que les délais critiques soient respectés. L'établissement de calendriers dans le RTOS doit être déterministe, ce qui signifie que le temps d'exécution des tâches doit être prévisible, mais en raison de facteurs tels que les interruptions, les opérations d'OI et la charge du système, la réalisation du déterminisme peut être difficile.
Les algorithmes statiques comme RMS offrent généralement une meilleure prévisibilité et une analyse plus simple par rapport aux algorithmes dynamiques. Pour les systèmes critiques en matière de sécurité nécessitant une certification, la capacité de prouver le comportement le plus défavorable l'emporte souvent sur les avantages théoriques d'utilisation.
Exigences relatives à l'utilisation du transformateur
Le facteur d'utilisation du processeur indique la charge du processeur sur un seul processeur, où U=1 signifie l'utilisation de 100% du processeur. Pour un ensemble de tâches de n l'utilisation périodique du processeur est plus grande que l'une alors que l'ensemble de tâches ne sera pas programmé par un algorithme.
Les algorithmes de planification allouent efficacement les ressources du système, assurant une utilisation efficace du temps, de la mémoire et d'autres ressources du processeur, ce qui contribue à maximiser le rendement et le débit du système.
Complexité et dépassement de la mise en œuvre
L'algorithme de planification dans un RTOS doit être déterministe et rapide pour répondre aux contraintes en temps réel. Le temps d'exécution des décisions de planification, des commutateurs de contexte et des calculs de priorité a une incidence directe sur le temps de traitement disponible pour les tâches d'application.
La plupart des systèmes intégrés à haute performance n'ont pas besoin d'un système d'exploitation en temps réel coûteux et fonctionnel (RTOS), car un programmeur dédié comme ceux utilisés dans les processus d'arbitrage et de gestion du trafic est suffisant, extrêmement efficace et a une empreinte mémoire faible, particulièrement préféré lorsque la taille de la mémoire est limitée et les délais doivent être strictement respectés.
Partage et synchronisation des ressources
Les systèmes de multitâche doivent gérer le partage des données et des ressources matérielles entre plusieurs tâches, et il est généralement dangereux pour deux tâches d'accéder simultanément à la même ressource spécifique de données ou de matériel.
L'algorithme de programmation devrait pouvoir gérer l'inversion et les blocages prioritaires.L'un des principaux défis est de faire face à l'inversion prioritaire, où une tâche hautement prioritaire est bloquée par une tâche moins prioritaire, et de gérer les blocages, une situation où deux ou plusieurs tâches attendent l'une l'autre pour libérer une ressource, ce qui entraîne un blocage.
Inversion prioritaire : un défi critique
Dans le cadre du calendrier à taux monotones (RMS), une inversion de priorité survient lorsqu'une tâche hautement prioritaire est bloquée par une tâche peu prioritaire qui détient une ressource partagée, comme un sémaphore ou un mutex, empêchant la tâche hautement prioritaire de se poursuivre malgré son urgence, résultant de systèmes de priorité fixe préemptifs où les tâches se disputent des ressources mutuellement exclusives, entraînant des retards incontrôlés qui peuvent violer les délais en temps réel.
Comprendre l'inversion prioritaire
Les intervalles de non-préemptabilité et d'interruption sont des sources d'inversion prioritaire, et lorsqu'une tâche prioritaire plus élevée est empêchée de préjuger d'une tâche prioritaire plus faible, l'exécution de la tâche prioritaire plus élevée est retardée en raison de l'exécution d'une tâche prioritaire plus faible.
L'exemple classique de l'inversion de priorité a été observé dans la mission Mars Pathfinder, où une tâche météorologique de faible priorité tenant une ressource partagée a bloqué une tâche de communication de haute priorité, provoquant la remise à zéro du système. Un exemple d'utilisation de l'héritage de priorité de base est lié au "Bogue de remise à zéro de Mars Pathfinder" qui a été fixé sur Mars en modifiant les drapeaux de création pour le sémaphore afin de permettre l'héritage de priorité.
Protocole sur les successions prioritaires
Le protocole d'héritage prioritaire (PIP) vise l'inversion des priorités en élevant temporairement la priorité de la tâche de faible priorité qui détient la ressource pour correspondre à la plus haute priorité de toute tâche de priorité supérieure bloquée, et dans le cadre de PIP, cet héritage est transitoire : si la tâche de faible priorité renforcée bloque une autre tâche de priorité moyenne, elle hérite également de cette priorité, en continuant jusqu'à ce que toutes les ressources soient libérées et que les priorités reviennent.
Pour atténuer l'inversion prioritaire, les protocoles de priorité d'héritage ou de plafond de priorité sont couramment mis en œuvre dans les RTOS. De nombreux RTOS commerciaux tels que VxWorks, VRTX et DSP RTOS comme DSP/BIOS implémentent les RMS avec des protocoles de priorité d'héritage ou de plafond de priorité pour limiter le blocage des ressources et l'inversion prioritaire.
Protocole de plafonnement des priorités
Le protocole de plafond de priorité étend l'héritage de priorité en attribuant à chaque ressource un plafond de priorité égal à la plus haute priorité de toute tâche qui peut la verrouiller. Lorsqu'une tâche verrouille une ressource, elle hérite immédiatement de la priorité de plafond de la ressource, empêchant les tâches de priorité moyenne d'interférer.
Considérations pratiques de mise en œuvre
Comment choisir le bon planificateur au début du projet lorsque le logiciel n'est pas prêt et que nous avons seulement les spécifications de ligne directrice du matériel? Il existe de nombreuses approches, telles que l'analyse monotonique de vitesse (ARM), l'analyse du temps d'exécution du pire cas, et l'analyse de la modélisation de performance au niveau du système.
Contraintes de la plate-forme matérielle
Les microcontrôleurs avec mémoire limitée peuvent avoir des difficultés avec des algorithmes de programmation dynamiques complexes nécessitant des structures de données substantielles. La vitesse de traitement affecte les frais généraux de commutation contextuel et la faisabilité de recalculs prioritaires fréquents.
La vitesse d'attribution est importante, car un schéma standard d'attribution de mémoire scanne une liste liée de durée indéterminée pour trouver un bloc de mémoire libre approprié, ce qui est inacceptable dans un RTOS puisque l'attribution de mémoire doit se produire dans un certain temps. Les stratégies de gestion de la mémoire doivent s'aligner sur les exigences de programmation pour maintenir un comportement déterministe.
Gestion des interruptions et intégration de la RSR
Un RTOS traite rapidement les interruptions et prévient les tâches en cours pour réduire au minimum les temps de réponse. Toutes les routines de service d'interruption (RSR), qu'elles aient un délai difficile en temps réel ou non, devraient être incluses dans l'analyse du SGR afin de déterminer l'échéancier dans les cas où les RSR ont des priorités au-dessus de toutes les tâches contrôlées par les échéanciers, et un RSR peut déjà être correctement priorisé en vertu des règles du SGR si sa période de traitement est plus courte que celle du processus le plus court et non-RSR.
Un planificateur permet souvent de débloquer une tâche du contexte du gestionnaire d'interruption. L'interaction entre la manipulation d'interruption et la planification des tâches doit être soigneusement conçue pour maintenir la réactivité du système tout en préservant les garanties de schedulabilité.
Contexte Changement de cap
Un temps de commutation de contexte est alloué au matériel pour réinitialiser et gérer les ressources entre les exécutions de tâches, et pour basculer entre les tâches, une interruption est utilisée lorsque les tranches de temps expirent.
Les commutateurs de contexte fréquents peuvent réduire significativement l'utilisation efficace du processeur. Les algorithmes dynamiques prioritaires comme EDF peuvent déclencher plus de commutateurs de contexte que les approches statiques comme RMS. Les frais généraux réels dépendent de l'architecture du processeur, de l'implémentation RTOS et des caractéristiques des tâches.
Essais d'établissement et validation
L'algorithme de schématisation (RMS) est important pour les concepteurs de systèmes en temps réel car il permet de garantir qu'un ensemble de tâches est échadrable, lorsqu'un ensemble de tâches est dit échadrable si toutes les tâches peuvent respecter leurs délais, et RMS fournit un ensemble de règles qui peuvent être utilisées pour effectuer une analyse de calendrier garantie pour un ensemble de tâches, en déterminant si un ensemble de tâches est échadrulable dans les pires conditions et en soulignant la prévisibilité du comportement du système.
L'analyse de l'échéancier doit être effectuée au début du processus de conception et répétée au fur et à mesure que le système évolue. Les méthodes d'analyse fournissent des garanties mathématiques mais nécessitent des paramètres précis de la tâche.
Modélisation et simulation du système
La modélisation et la simulation du système ont joué un rôle critique dans l'analyse du calendrier et ont été un facteur clé dans le choix de l'algorithme de planification approprié, et à l'aide de cette analyse au niveau du système, il a été constaté qu'un RTOS complet n'était pas une exigence et que l'on pouvait obtenir de meilleures performances à un coût moindre avec un calendrier précis.
La simulation peut révéler des anomalies de temps, des conflits de ressources et des goulets d'étranglement de performance qui peuvent ne pas être visibles par l'analyse statique. Les modèles devraient inclure des temps d'exécution des tâches réalistes, interrompre les modèles et les assertions de ressources.
Considérations particulières relatives au calendrier de la demande
Les applications typiques sont dans la défense, l'aérospatiale, l'industrie et l'automobile. Différents domaines d'application ont des exigences distinctes qui influencent la sélection des algorithmes de planification et les stratégies de mise en œuvre.
Systèmes automobiles
Les systèmes de gestion des moteurs et les systèmes avancés d'assistance au conducteur sont particulièrement adaptés aux systèmes embarqués qui ne possèdent pas de ressources, comme les unités de commande électronique automobile (ECU), où la prévisibilité et les frais généraux minimaux sont essentiels pour des applications certifiées en matière de sécurité, comme la gestion des moteurs et les systèmes avancés d'assistance au conducteur.
La norme AUTOSAR fournit un cadre pour l'architecture de logiciel automobile, y compris les spécifications de programmation. De nombreux systèmes automobiles utilisent des architectures décalées dans le temps avec la programmation statique pour assurer un comportement déterministe nécessaire à la certification de sécurité.
Aéronautique et avionique
Les applications aérospatiales exigent les plus hauts niveaux de fiabilité et de certification. L'approche monotonique de vitesse fournit le fondement théorique dans la conception du support de programmation en temps réel pour IEEE Futurebus+, qui a été largement avalisée par l'industrie, y compris les communautés VME et MultiBUS, et est également la norme adoptée par la marine américaine, l'approche monotonique de vitesse étant l'approche recommandée dans le manuel de configuration du système Futurebus+ (IEEE 896.3).
ARINC 653 définit la programmation partitionnée pour l'avionique modulaire intégrée, fournissant une isolation spatiale et temporelle entre les applications. Cette approche permet à de multiples applications avec différents niveaux de criticité de coexister sur le matériel partagé tout en maintenant la certification de sécurité.
Contrôle industriel et automatisation
Les systèmes de contrôle industriel disposent souvent de boucles de contrôle périodiques avec des exigences de chronométrage bien définies, en faisant des candidats naturels pour le RMS. L'échantillonnage des capteurs, l'exécution de l'algorithme de contrôle et les mises à jour de l'actionneur doivent se produire à des intervalles précis pour maintenir la stabilité du système.
Les systèmes industriels peuvent combiner des tâches de contrôle en temps réel difficiles avec des fonctions de suivi et de diagnostic en temps réel. De nombreuses applications ont des tâches avec des délais aussi bien difficiles que souples, avec des tâches avec des délais difficiles généralement appelés tâches critiques, les tâches en temps réel étant les tâches non critiques, et l'ensemble des tâches critiques peut être programmé en utilisant le SGR, les tâches non critiques ne pouvant pas être exécutées en cas de surcharge transitoire, en attribuant simplement des priorités telles que la tâche critique la plus prioritaire (c'est-à-dire la plus longue période) a une priorité plus élevée que la tâche non critique la plus prioritaire.
Dispositifs médicaux
Dans des secteurs comme l'aéronautique ou les appareils médicaux, où la précision et la vitesse sont essentielles, un RTOS dur assure une manipulation rapide des données et du traitement. Les appareils médicaux vont des stimulateurs cardiaques implantables avec des exigences de fiabilité extrême à l'équipement de diagnostic avec des besoins complexes de traitement des signaux.
Les dispositifs médicaux critiques pour la sécurité utilisent généralement un calendrier statique prioritaire avec une analyse et des tests approfondis. La capacité de prouver le comportement le plus mauvais et d'obtenir la certification l'emporte souvent sur les avantages théoriques de performances d'algorithmes plus complexes.
Électronique de consommation et IdO
FreeRTOS est l'un des RTOS les plus populaires disponibles, déployé en milliards de produits dans le monde entier, et inclus dans tout, des appareils de consommation à l'électronique médicale et les contrôles industriels. Les appareils de consommation souvent prioriser le coût, la consommation d'énergie, et le temps de mise en marché sur les performances maximales.
Zephyr est open source et évolutive, optimisé pour les appareils à ressources limitées - des capteurs intégrés aux systèmes IoT à part entière. Les appareils IoT sont confrontés à des défis uniques, notamment la connectivité intermittente, les contraintes de batterie et diverses charges de travail.
Sujets de calendrier avancés
Multiprocesseur et calendrier multicore
Dans le cas des systèmes multiprocesseurs, les tâches de tous les processeurs sont gérées en une seule file d'attente prioritaire partagée, ordonnée par leurs taux fixes, la tâche la plus prioritaire étant envoyée à tout processeur sans interruption, ce qui permet une migration dynamique entre les cœurs pour améliorer l'utilisation des ressources.
Les principaux avantages du SGR cloisonné sont sa simplicité d'application, car il exploite des techniques uniprocesseurs éprouvées sans avoir besoin d'une gestion globale de l'État, et ses frais généraux peu élevés, qui découlent de l'absence de coûts de migration et de besoins réduits de synchronisation.
Manipulation des tâches apériodiques et sporadiques
Les systèmes réels comprennent souvent des tâches périodiques (temps d'arrivée imprévisible) et sporadiques (temps minimum inter-arrivée garanti) ainsi que des tâches périodiques.Les serveurs de sondage, les serveurs détermiables et les serveurs sporadiques fournissent des mécanismes pour traiter des tâches périodiques dans des cadres de programmation périodiques.
Bien que les algorithmes de reconstitution plus sophistiqués offrent de meilleures performances, l'important est que, avec relativement peu de complexité supplémentaire de mise en œuvre, l'effet d'exécution différée a été éliminé, rendant le serveur sporadique équivalent à une tâche périodique régulière d'un point de vue théorique et donc pleinement compatible avec l'algorithme RMS.
Systèmes de criticité mixte
Les systèmes de criticité mixte intègrent des tâches avec différents niveaux de sécurité ou d'importance sur le matériel partagé. Les tâches de criticité élevée nécessitent des garanties selon les hypothèses les plus défavorables, tandis que les tâches de criticité faible peuvent utiliser des hypothèses optimistes.
Les autorités de certification acceptent de plus en plus les approches de criticité mixte pour les applications aérospatiales et automobiles, ce qui permet de réduire les coûts grâce à la consolidation du matériel.
Calendrier des activités liées à l'énergie
Les systèmes embarqués alimentés par batterie doivent équilibrer les besoins en temps réel avec la consommation d'énergie. La tension dynamique et l'échelle de fréquence (DVFS) ajuste la vitesse du processeur pour réduire la consommation d'énergie tout en respectant les délais.
Les modes de sommeil permettent d'économiser beaucoup d'énergie, mais ils permettent d'introduire des latences de réveil qui affectent la réactivité. L'ordonnancement doit coordonner l'exécution des tâches pour maximiser la durée du sommeil tout en assurant des réponses opportunes.
Sélection du RTOS et de l'agenda
La plupart des RTOS sont des logiciels libres, permettant aux développeurs de les personnaliser pour des cas d'utilisation spécifiques et de les déployer sur différentes opérations et appareils. Le processus de sélection RTOS devrait envisager des capacités de programmation en plus d'autres facteurs comme le soutien des outils, les ressources communautaires et les conditions de licence.
Services commerciaux et services de libre accès
Les produits comme VxWorks, QNX et ThreadX ont prouvé des records de piste dans des applications exigeantes. ThreadX fournit des fonctionnalités avancées comme la programmation de seuil préventive, l'enchaînement d'événements et l'analyse d'exécution, ainsi qu'une architecture de noyau de pico et des mesures de performance complètes, ce qui en fait un petit RTOS rapide et efficace qui assure un environnement fiable et prévisible pour les applications en temps réel, ce qui en fait un choix solide dans des industries telles que l'automobile, l'aérospatiale et l'électronique grand public.
Les solutions de rechange open source comme FreeRTOS, Zephyr et RTEMS offrent flexibilité et avantages de coûts. RTEMS est un système d'exploitation open source en temps réel contenant un programmeur de taux monotonique de travail.
Évaluation des caractéristiques de calendrier
Keil RTX offre une plateforme structurée et efficace pour les développeurs, supportant le multitâche avec des fonctionnalités comme la programmation flexible — avec des algorithmes comme la rotation ronde, préventive et collaborative — et la latence d'interruption faible. Lors de l'évaluation des options RTOS, examiner les algorithmes de programmation pris en charge, les niveaux de priorité, les primitives de synchronisation et les services de synchronisation.
Les questions clés sont les suivantes : Le RTOS supporte-t-il l'algorithme de programmation requis? Combien de niveaux de priorité sont disponibles? Quels mécanismes de synchronisation sont fournis? Comment l'inversion de priorité est-elle gérée? Quelle résolution de synchronisation est disponible?
Appui aux outils et environnement de développement
Le développement efficace de RTOS nécessite des outils robustes pour le débogage, le profilage et l'analyse. Les débogueurs à noyau permettent de connaître les états de tâche, les priorités et l'utilisation des ressources.
L'intégration avec les environnements de développement, les compilateurs et le matériel cible affecte la productivité. Envisager la disponibilité des paquets de support de planche, des bibliothèques de pilotes et des composants intermédiaires.
Meilleures pratiques pour planifier la mise en œuvre de l'algorithme
Considérations relatives à la phase de conception
Commencez par définir clairement les exigences, y compris les contraintes de temps des tâches, les relations de priorité et les besoins en matière de partage des ressources.
Effectuer une analyse préliminaire de l'échéancier tôt pour cerner les problèmes potentiels. Utiliser des estimations prudentes pour les délais d'exécution et inclure les frais généraux pour les commutateurs de contexte, les interruptions et le blocage des ressources.
Lignes directrices pour la mise en œuvre
Préservez les implémentations de tâches simples et centrées sur des responsabilités uniques. Minimisez la variabilité du temps d'exécution grâce à des pratiques de codage prudentes. Évitez les boucles non limitées, les algorithmes récursifs et l'allocation dynamique de la mémoire dans les chemins critiques du temps.
Mettre en œuvre une synchronisation appropriée en utilisant des primitives appropriés comme les sémaphores, les mutexes et les files d'attente de messages. Un RTOS utilise des mécanismes comme les sémaphores, les files d'attente de messages et les drapeaux d'événements pour communiquer entre et synchroniser différentes tâches.
Essais et validation
Les tests d'unité valident la logique des tâches individuelles, tandis que les tests d'intégration examinent les interactions des tâches et le partage des ressources. Les tests de stress avec des conditions de charge maximale révèlent une marge et identifient des violations potentielles de la date limite.
Mesurer les temps d'exécution réels, les temps de réponse et le contexte de basculement des frais généraux sur le matériel cible. Comparer les mesures par rapport aux prévisions analytiques pour valider les modèles.
Surveillance et entretien
Intégrer les capacités de surveillance des temps d'exécution pour détecter les violations de calendrier et l'épuisement des ressources. Mettre en place des minuteurs de veille pour récupérer des pannes de tâches.
Maintenez l'analyse de la schedulabilité au fur et à mesure que le système évolue. Revérifiez les propriétés de la synchronisation lors de l'ajout de fonctionnalités, de la modification des tâches ou de la modification du matériel.
Pièges courants et comment les éviter
Sous-estimation des temps d'exécution
Mesurer les délais d'exécution les plus défavorables sur le matériel réel avec des conditions réalistes, y compris les effets de cache, les décrochages de pipelines et les assertions de mémoire. Inclure les frais généraux pour les services du système d'exploitation, la manipulation des interruptions et les commutateurs de contexte. Ajouter des marges de sécurité pour tenir compte de l'incertitude de mesure et des changements futurs.
Ignorer l'inversion de priorité
Si l'on ne tient pas compte de l'inversion des priorités, les tâches prioritaires peuvent être interrompues malgré la capacité de traitement adéquate. Toujours utiliser des protocoles d'héritage ou de plafond prioritaires pour les ressources partagées.
Essais inadéquats
Mettre au point des cas de test couvrant la phase de tâche la plus difficile, les taux d'interruption maximums et la discorde de la ressource maximale. Utiliser des tests de stress pour vérifier le comportement dans des conditions de surcharge.
Négligence Impact d'interruption
Interruptions en général de traitement des tâches préemptives indépendamment du taux d'arrivée des événements et donc ont clairement un impact sur la capacité d'autres tâches à respecter leurs délais. Inclure toutes les sources d'interruption dans l'analyse de la synchronisation avec des fréquences et des délais d'exécution réalistes.
Sur-ingénierie
Choisir les algorithmes de planification trop complexes augmente le temps de développement et le fardeau de maintenance sans avantages proportionnels. Choisissez les exigences les plus simples de la conformité à l'algorithme. L'efficacité d'un RTOS dépend en grande partie de son algorithme de planification, ce qui en fait un aspect essentiel de la conception du système.
Tendances futures du calendrier RTOS
Apprentissage automatique et intégration de l'IA
Les applications d'IA intégrées présentent de nouveaux défis de programmation avec des temps d'exécution variables et des dépendances complexes. L'inférence réseau neuronal peut nécessiter un calcul significatif avec variabilité de la synchronisation selon les données d'entrée.
Plateformes informatiques hétérogénées
Les systèmes intégrés modernes intègrent de plus en plus des processeurs hétérogènes, y compris des cœurs à usage général, des DSP, des GPU et des accélérateurs spécialisés. L'établissement des calendriers doit coordonner l'exécution des tâches sur diverses ressources informatiques avec des capacités et des caractéristiques de performance différentes.
Réseautage sensible au temps
Les systèmes en temps réel distribués nécessitent une programmation coordonnée entre les nœuds connectés au réseau. Les normes de réseau sensibles au temps (TSN) fournissent une communication déterministe pour les applications industrielles et automobiles.
Systèmes adaptatifs et auto-optimisants
L'apprentissage automatique pourrait optimiser les paramètres de planification en fonction du comportement observé. Les systèmes d'autosurveillance pourraient détecter des anomalies de calendrier et ajuster automatiquement les priorités ou l'allocation des ressources. Cependant, le maintien du déterminisme et de la certification dans les systèmes d'adaptation présente des défis importants.
Conclusion : atteindre le juste équilibre
Le choix et la mise en œuvre d'algorithmes de programmation pour les systèmes d'exploitation en temps réel exigent un équilibre entre l'optimalité théorique et les contraintes pratiques. L'établissement de calendriers permet une exécution fondée sur les priorités, où les tâches prioritaires sont données en priorité par rapport aux tâches prioritaires inférieures, garantissant que les tâches critiques en temps sont exécutées rapidement, ce qui améliore la réactivité et la fiabilité du système.
Le schéma monotonique de taux fournit une excellente base pour les systèmes avec des tâches périodiques et des besoins d'utilisation modérés, offrant la simplicité, la prévisibilité et un bilan industriel éprouvé. Date limite la plus précoce permet d'utiliser plus largement les systèmes poussant les limites de capacité, bien qu'à une complexité accrue de mise en œuvre.
La mise en oeuvre efficace de l'échéancier exige une analyse rigoureuse, des essais complets et une validation continue. L'inversion des priorités doit être traitée au moyen de protocoles appropriés. La manipulation intermittente, le changement de contexte et le partage des ressources ont tous des répercussions sur les performances en temps réel et doivent être soigneusement gérées.
Le paysage des systèmes embarqués continue d'évoluer avec des processeurs multicœurs, des ordinateurs hétérogènes, l'intégration de l'IA et des architectures distribuées.Ces tendances introduisent de nouveaux défis de programmation tout en s'appuyant sur des principes fondamentaux établis au fil des décennies de recherche en temps réel sur les systèmes.
En fin de compte, la sélection réussie d'algorithmes de planification RTOS se traduit par des capacités théoriques assorties de besoins pratiques, la mise en œuvre minutieusement avec attention aux détails et la validation approfondie par l'analyse et les tests.
Principaux choix pour les praticiens
- Commencez par des spécifications claires des exigences, y compris toutes les contraintes de temps et les relations de priorité
- Choisissez l'algorithme de planification le plus simple qui répond à vos exigences – éviter la suringénierie
- Effectuer une analyse de la schedulabilité tôt et la mettre à jour au fur et à mesure que le système évolue
- Mesurer les délais d'exécution réels sur le matériel cible plutôt que de se fier aux estimations
- Mettre toujours en œuvre des protocoles prioritaires d'héritage ou de plafond pour les ressources partagées
- Inclure la manipulation d'interruption et le changement de contexte dans l'analyse du moment
- Essai complet incluant les scénarios les plus défavorables et les conditions de contrainte
- Décisions relatives à la planification des documents et maintien de la traçabilité selon les exigences
- Envisager d'utiliser la modélisation et la simulation du système pour valider les choix de conception
- Restez informé des capacités de RTOS et des nouvelles techniques de planification
Pour explorer plus en détail les concepts de programmation en temps réel, la communauté Embed Systems Engineering fournit des ressources et des études de cas étendues.L'Institut d'ingénierie des logiciels de l'Université Carnegie Mellon offre des recherches approfondies sur l'analyse monotonique des taux.Pour une expérience pratique, La documentation FreeRTOS fournit des conseils pratiques sur la mise en œuvre, tandis que GeeksforGeeks offre des tutoriels accessibles sur les algorithmes de programmation.