Processing math: 100%
Systèmes en temps réel – quelques liens pertinents
Vous trouverez ici quelques liens portant sur les systèmes systèmes
en temps réel (STR). Si vous découvrez
d'autres liens dignes d'intérêt, faites-m'en part. De même,
signalez-moi des liens brisés ou périmés si vous en rencontrez,
ce qui me permettra d'offrir un meilleur service à vous comme à
vos collègues.
Considérations générales
Quelques saines pratiques de programmation pour des systèmes assujettis à
des contraintes de basse latence, répertoriées en 2014
par Benjamin Darfler :
http://codedependents.com/2014/01/27/11-best-practices-for-low-latency-systems/
Il existe des nombres particulièrement importants en programmation,
en particulier ceux ayant trait à la latence de certaines opérations clés.
Le lien
http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html propose une exploration interactive de quelques-uns de ces nombres.
Quelques pistes à propos des STR en général :
Communication assujettie à des contraintes TR :
À propos des entrées/ sorties :
Écrire une fonction périodique (au sens usuel du terme) avec
C++ 11,
selon Tony Da Silva en 2015 :
http://bulldozer00.com/2015/07/15/periodicfunction/
Systèmes d'exploitation de type « temps réel » (SETR)
Pour les systèmes d'exploitation TR :
Sur QNX en
particulier :
Sur Linux :
- Interruptions logicielles et systèmes en temps réel, un texte
de Jonathan Corbet en 2012 : http://lwn.net/Articles/520076/
- En 2015, Christian Audet m'a fait parvenir les
informations suivantes :
- présentation de 2014 qui résume la situation de Linux TR :
http://fr.slideshare.net/mobile/jserv/realtime-linux
- en résumé :
- il existe plusieurs extensions, dont Xenomai et RT Linux (des
micronoyaux sur lesquels repose Linux)
- la CONFIG_PREEMPT_RT est une patch qui permet de
patcher le noyau standard de Linux pour supporter le TR
- plusieurs morceaux de la patch ont été intégrés dans le
noyau standard au fil des ans
- autres liens intéressants :
STR et
virtualisation – sans grandes surprises,
règle générale, ça a ses limites :
Rate Monotonicity
L'approche dite Rate Monotonic à l'ordonnancement des tâches
TR d'un système correspond essentiellement à ordonnancer en priorité
les tâches de plus faible période; évidemment, on parle ici de tâches
périodiques.
L'approche Rate Monotonic facilite le raisonnement sur un ensemble
de tâches périodiques. Elle présume ce qui suit :
- Le changement de contexte entre deux threads est instantané (on peut le simuler en ajoutant ce temps au temps d''exécution de chaque tâche)
- Seules les tâches à ordonnancer comptent dans l'analyse du système (on peut enrichir le portrait, mais de prime abord, l'analyse Rate Monotonic ne s'intéresse qu'aux tâches du système)
- Les tâches n'interfèrent pas entre elles
- Une tâche débute son exécution au début de sa période et conserve la main jusqu'au moment où elle a complété sa tranche de calcul
- L'échéance d'une tâche concorde avec le début de sa prochaine période
- Le critère permettant d'attribuer une priorité est la période d'une tâche : plus la période d'une tâche est courte et plus haute sera sa priorité. Le caractère critique ou non d'une tâche n'entre pas en considération
- L'exécution d'une tâche est conséquente avec sa priorité Rate Monotonic, au sens où une tâche moins importante n'est jamais en cours d'exécution quand une tâche plus importante doit prendre la main
Quand un système ne rencontre pas la totalité de ces « exigences », il est typiquement possible d'appliquer une approche Rate Monotonic mais il faut alors l'adapter aux besoins.
En procédant ainsi, pour un ensemble de N tâches T={C,P} où C est le temps d'exécution de la tâche et P et sa période, un test d'« ordonnançabilité »
suffisant (que l'on doit à Liu
et Layland, 1973, qui ont introduit ce
concept) est ∑Ni=1(CiTi)≤N(21N−1).
Plateformes TR prises en charge
La liste qui suit est indicative, sans plus.
Texte de 2014 par Scot Salmon mettant en valeur que
C++ est plus approprié
qu'auparavant pour le développement TR :
http://www.embedded.com/design/programming-languages-and-tools/4429790/How-to-make-C--more-real-time-friendly
Erlang et le
temps réel strict :
À propos de .NET
en version TR :
Systèmes embarqués
À propos des systèmes embarqués :
Autres sujets
D'autres cours sur le sujet :
Combien de temps faut-il pour réaliser un changement de contexte? http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
Quelques articles disponibles à travers la bibliothèque numérique
du Association for Computing Machinery (ACM) :
- l'article Interprocess Communication in Real-Time Systems, de P.
G. Sorenson (1973), même s'il est assez
vieux selon nos standards, a le mérite de discuter de questions fondamentales
quant à la synchronisation en situation multiprogrammée;
- l'article Real-Time Synchronization of Interprocess Communications,
de John H. Reif et Paul G. Spirakis (1984), discute
d'éléments fondamentaux de communication entre noeuds répartis
d'un même système et, de manière plus fondamentale, des
limites d'un savoir global dans un environnement réparti;
- l'article Software Development of Real-Time Systems, de Hassam
Gomaa (1986), propose une étude de cas
qui déborde sur une réflexion à propos du cycle de vie
d'un STR;
- l'article High-Performance Operating System Primitives for Robotics
and Real-Time Control Systems, de Karsten Schwan, Tom Bihari, Bruce W.
Weide et Gregor Taulbee (1987), propose une design
de STR appliqué au monde de la robotique;
- l'article A Time-Sensitive Object Model for Real-Time Systems,
de H. Rebecca Callison (1995), propose des objets
dont la validité et les états sont sensibles au temps (sporadiques,
périodiques, immutables, etc.) à l'aide d'une taxonomie
appliquée;
- l'article Strategic Directions in Real-Time and Embedded Systems,
de John A. Stankovic (1996), propose un état
de l'art et une vision des avenues de recherche et de commercialisation dans
le monde des STR, du moins tel qu'il était
à l'époque;
- l'article Model-Checking of Real-Time Systems: A Telecommunications
Application Experience Report, de Rajeev Alur, Lalita Jategaonkar Jagadeesan,
Joseph J. Kott et James E. Von Olnhausen (1997),
est une (plutôt rare) étude de cas;
- l'article Middleware Techniques and Optimizations for Real-time, Embedded
Systems, de Douglas C. Schmidt (1999), discute
entre autres d'un CORBA en temps réel;
- l'article Schedulability-Driven Performance Analysis of Multiple Mode
Embedded Real-Time Systems, de Youngsoo Shinz, Daehong Kimx, and Kiyoung
Choi (2000), discute entre autres de l'évaluation
de la vitesse d'exécution de tâches TR complexes;
- l'article A Real-Time Garbage Collection Framework for Embedded Systems,
de Wei Fu et Carl Hauser (2005), examine la question
de la collecte automatique d'ordures dans un STR sous
la lorgnette des systèmes embarqués
- l'article Temporal Logics for Real-Time System Specification, de
P. Bellini, R. Mattolini et P. Nesi (2000), discute
de spécifications formelles ayant trait au comportement des
STR;
- l'article Minimizing Memory Requirement of RealTime Systems with Concurrent
Garbage Collector, de Yuqiang Xian et Guangze Xiong (2005),
discute d'une des nombreuses particularités de la collecte automatique
d'ordures dans un STR;
- l'article Real-Time Intelligent Program Stock Trading, de Kam Fui
Lau (2005), discute entre autres de de bases de
données et d'intelligence artificielle dans le contexte d'un
STR, incluant une brève discussion des caractéristiques
d'un SQL TR;
- l'article Research Trends in Real-Time Computing for Embedded Systems,
de Giorgio Buttazzo (2006), propose un état
de l'art et une vision des avenues de recherche et de commercialisation dans
le monde des STR avec un focus sur les
STR dans les systèmes embarqués;
- l'article Timing Analysis for Preemptive Multitasking Real-Time Systems
with Caches, de Yudong Tan et Vincent Mooney (2007
pour la version la plus récente), discute du problème
très contemporain des mesures de performance d'un
STR sur une architecture physique munie d'une ou de plusieurs antémémoires;
- l'article Exact
schedulability tests for real-time scheduling or periodic tasks on unrelated
multiprocessor platforms, par Liliana Cucu-Grosjean et Joël
Goossens (2011), m'a été proposé
par Richard Lavoie.