IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Après 20 ans de développement et d'attente, le code de Linux temps réel (PREEMPT_RT) a finalement été intégré au noyau principal de Linux avec la version 6.12
Dont la sortie est prévue pour novembre

Le , par Stéphane le calme

5PARTAGES

9  0 
L’histoire de Linux temps réel remonte à la fin des années 1990, lorsque le besoin de supporter des applications temps réel sous Linux a commencé à se faire sentir. Les premiers efforts se sont concentrés sur la création de noyaux temps réel séparés fonctionnant parallèlement au noyau Linux. Des projets académiques comme KURT, RTAI et RTLinux ont posé les bases de cette technologie.

Après deux décennies de développement et d’attente, le code de Linux temps réel (PREEMPT_RT) a finalement été intégré au noyau principal de Linux avec la version 6.12. Cette intégration marque une étape cruciale pour le système d’exploitation open-source, ouvrant la voie à son utilisation dans des applications critiques nécessitant une précision et une fiabilité temporelles.


Qu’est-ce qu’un système d’exploitation temps réel (RTOS) ?

Un RTOS est un système d'exploitation spécialisé conçu pour gérer des tâches critiques avec précision et fiabilité. Il dispose généralement de fonctions réduites et prend en charge des applications multithreads en fournissant des sorties traitées dans des délais précis et possède un comportement déterministe. Comme ces applications sont critiques en termes de temps, elles doivent être exécutées exactement au moment prévu afin de maintenir le fonctionnement de l'ensemble du système.

Contrairement aux systèmes d'exploitation généraux tels que Windows ou macOS, un RTOS est conçu pour répondre aux événements et traiter les données dans des délais très courts, souvent mesurés en millisecondes ou en microsecondes.

Un RTOS garantit que les tâches critiques seront accomplies dans les délais impartis. De nombreuses personnes pensent que les RTOS sont destinés aux processus rapides. Ce n'est pas le cas. La vitesse n'est pas l'objectif des RTOS, c'est la fiabilité qui l'est. Cette prévisibilité est cruciale dans les applications où la synchronisation est essentielle, comme les systèmes de contrôle industriels, les appareils médicaux et les équipements aérospatiaux.

Les airbags de nos véhicules sont le meilleur exemple de ce concept. Lorsqu'une voiture roulant à vive allure a un accident, les airbags doivent se déployer dans les 10 à 20 millisecondes suivant l'accident. Un retard, même de quelques millisecondes, peut entraîner la mort. Il n'y a donc pas de marge d'erreur, et la tâche doit être accomplie immédiatement.

VxWorks est un exemple de système d'exploitation en temps réel utilisé aujourd'hui dans les rovers martiens de la NASA pour les guider et dans l'avion Boeing 787 Dreamliner pour contrôler les systèmes avioniques, garantissant ainsi une réactivité en temps réel des commandes de vol. Un autre exemple est QNX Neutrino, qui est largement utilisé dans les voitures pour l'infotainment et les systèmes avancés d'aide à la conduite tels que les freins antiblocage.

D'autres exemples courants de RTOS sont :
  • Systèmes de transaction en ligne
  • Système de soins intensifs médicaux
  • Système de freinage antiblocage
  • Système de contrôle du trafic
  • Systèmes de cotation des prix du bétail
  • Systèmes de contrôle des compagnies aériennes

Les RTOS assurent une planification méticuleuse et une gestion des ressources nécessaires pour répondre à la demande des applications et garantir que les tâches sensibles au facteur temps respectent les délais. Il existe deux types de RTOS : les systèmes d'exploitation en temps réel souples et les systèmes d'exploitation en temps réel durs. La principale différence réside dans le fait qu'un RTOS dur doit exécuter de manière fiable une fonction spécifique dans un temps donné, par exemple X millisecondes.

L'évolution du concept

Le concept de système temps réel n'est pas quelque chose qui a été pensé ces dernières années dans Linux, puisque l'idée a commencé il y a presque 20 ans, pour être exact en 2005, dans le cadre du projet Realtime-Preempt (« -rt ») avec le développement du mode PREEMPT_RT pour le noyau Linux.

Pour ceux qui ne connaissent pas PREEMPT_RT, il s'agit d'un patch pour le noyau Linux qui transforme le système d'exploitation en un système temps réel (real-time). L'objectif principal de PREEMPT_RT est de réduire la latence et d'assurer la prévisibilité de l'exécution des tâches, ce qui est crucial dans les applications qui nécessitent des réponses rapides.

En d'autres termes, nous pouvons dire que PREEMPT_RT permet d'interrompre presque toutes les parties du noyau, ce qui réduit le temps de latence. Contrairement à un noyau standard, toutes les sections ne peuvent pas être interrompues, ce qui peut entraîner des retards dans les temps de réponse.

Depuis 2015, le projet est sous la supervision de la Fondation Linux et jusqu'à présent, l'implémentation du mode PREEMPT_RT a été proposée sous la forme de correctifs externes. Sur la base de ces correctifs, des distributions telles que RHEL, SUSE et Ubuntu ont créé des éditions en temps réel de leurs produits, très demandées dans des secteurs tels que les systèmes financiers, les dispositifs de traitement audio et vidéo, les systèmes d'aviation, la médecine, la robotique, les télécommunications et les applications industrielles, où il est essentiel de garantir des temps de réponse prévisibles aux événements.

En 2019 a commencé le processus de promotion des correctifs développés dans le projet PREEMPT_RT vers le noyau Linux principal. Dans la version 5.3 du noyau, l'option PREEMPT_RT a été incluse dans le fichier de configuration pour activer le mode temps réel :

Les bits printk nécessaires à PREEMPT_RT se trouvent dans linux-next. C'était le dernier obstacle connu pour PREEMPT_RT. La file d'attente RT a également la « console atomique » pour l'UART 8250 qui n'est pas encore dans linux-next. Cela signifie un comportement de « console héritée » comme dans le cas où aucune impression n'est effectuée à partir du contexte atomique dans les cas d'urgence. Le contrôleur UART 8250 est le seul à fournir le support de la « console atomique » aujourd'hui.

Le contexte atomique sur Linux fait référence à des opérations qui doivent être exécutées de manière indivisible, c’est-à-dire sans interruption. Cela est crucial pour garantir la cohérence des données et éviter les conditions de course, surtout dans les environnements multi-thread et multi-processus. L’atomicité signifie qu’une opération se déroule entièrement ou pas du tout. Dans le contexte des systèmes d’exploitation, cela implique que l’opération ne peut pas être interrompue par d’autres processus ou threads. Par exemple, une opération de mise à jour d’une variable partagée entre plusieurs threads doit être atomique pour éviter des incohérences.

Tout ce travail est sur le point de porter ses fruits, car l'intégration complète des changements nécessaires a pris cinq ans et est sur le point de s'achever, puisqu'il est prévu que dans la version 6.12, le noyau puisse être compilé en mode PREEMPT_RT sans qu'il soit nécessaire d'appliquer des correctifs supplémentaires.

Il est mentionné que le dernier obstacle qui a empêché l'activation de PREEMPT_RT était l'absence de prise en charge de la sortie atomique non bloquante à l'aide de la fonction printk. Cette fonctionnalité a déjà été adoptée dans la branche linux-next. De plus, une console atomique non bloquante est attendue pour le contrôleur UART 8250, dont l'absence empêche actuellement la sortie de messages d'urgence vers la console à partir de code s'exécutant dans des contextes atomiques.

Pourquoi cela a-t-il pris si longtemps ?

L’intégration de Linux temps réel dans le noyau principal a été retardée par plusieurs facteurs, notamment des défis techniques, des questions de financement et des perceptions politiques. Steven Rostedt, un développeur clé de Linux temps réel, a expliqué que chaque partie du code devait être réécrite plusieurs fois pour répondre aux normes élevées du noyau principal.

« En fait, nous ne faisions pas avancer un projet si nous ne pensions pas qu'il était prêt », a expliqué Rostedt. « Presque tout était généralement réécrit au moins trois fois avant d'être mis en ligne, car nous avions des exigences très élevées en matière de contenu ».

En outre, le chemin vers la ligne principale n'a pas seulement été jalonné de défis techniques. La politique et la perception ont également joué un rôle. « Au début, nous ne pouvions même pas parler de temps réel », se souvient Rostedt. Tout le monde disait : « Oh, nous ne nous intéressons pas au temps réel ».

Un autre problème était l'argent. Pendant de nombreuses années, le financement de Linux en temps réel a été irrégulier. En 2015, la Fondation Linux a créé le projet collaboratif Real-Time Linux (RTL) pour coordonner les efforts autour de l'intégration de PREEMPT_RT.

Les avantages de Linux temps réel

Avec l’intégration de PREEMPT_RT, Linux est désormais prêt à être utilisé dans des dispositifs critiques tels que les systèmes de contrôle industriel, les dispositifs médicaux et les équipements aérospatiaux. Cette intégration garantit que Linux peut répondre aux exigences strictes de ces applications, offrant une fiabilité et une précision temporelle sans précédent.

Applications potentielles et impact

L’intégration de Linux temps réel ouvre de nouvelles possibilités pour son utilisation dans des domaines variés. Par exemple, dans l’industrie automobile, les systèmes de conduite autonome et les systèmes de sécurité critiques peuvent bénéficier de la précision et de la fiabilité de Linux temps réel. De même, dans le secteur médical, les dispositifs de surveillance et les équipements de diagnostic peuvent tirer parti de cette technologie pour offrir des performances améliorées et une meilleure sécurité des patients.

Dans le domaine de l’aérospatiale, où la précision et la fiabilité sont essentielles, Linux temps réel peut être utilisé pour les systèmes de contrôle de vol, les systèmes de navigation et les dispositifs de communication. En outre, les systèmes de production industrielle, qui nécessitent une coordination précise des machines et des processus, peuvent également bénéficier de cette avancée.

Défis et perspectives futures

Malgré cette avancée majeure, plusieurs défis subsistent pour l’adoption généralisée de Linux temps réel. L’un des principaux défis est la nécessité de former les développeurs et les ingénieurs à l’utilisation de cette technologie. De plus, des efforts continus seront nécessaires pour maintenir et améliorer le code afin de répondre aux exigences croissantes des applications critiques.

En conclusion, l’intégration de Linux temps réel dans le noyau principal est une réalisation majeure pour la communauté open-source. Elle ouvre de nouvelles possibilités pour l’utilisation de Linux dans des applications critiques, renforçant ainsi sa position en tant que système d’exploitation polyvalent et fiable. Cette avancée marque le début d’une nouvelle ère pour Linux, où il pourra jouer un rôle encore plus important dans les technologies de pointe et les systèmes critiques.

Source : Linux

Et vous ?

Quels sont, selon vous, les principaux avantages de l’intégration de PREEMPT_RT dans le noyau principal de Linux ?
Pensez-vous que cette intégration pourrait changer la perception de Linux dans les industries critiques ? Pourquoi ou pourquoi pas ?
Quels défis techniques ou organisationnels voyez-vous encore pour l’adoption généralisée de Linux temps réel ?
Comment cette avancée pourrait-elle influencer le développement futur des systèmes d’exploitation temps réel ?
Avez-vous des expériences personnelles ou professionnelles avec des systèmes d’exploitation temps réel ? Si oui, comment comparez-vous ces expériences avec les promesses de Linux temps réel ?
Quels autres domaines ou applications pourraient bénéficier de cette intégration selon vous ?
Voyez-vous des risques potentiels associés à l’utilisation de Linux temps réel dans des applications critiques ?
Comment cette intégration pourrait-elle affecter la communauté open-source et le développement collaboratif ?
Pensez-vous que d’autres systèmes d’exploitation devraient suivre l’exemple de Linux en intégrant des fonctionnalités temps réel ? Pourquoi ou pourquoi pas ?

Une erreur dans cette actualité ? Signalez-nous-la !