Les OS embarqués
Transcription
Les OS embarqués
Les OS embarqués B. Miramond UCP Les OS embarqués • • • • • • • • VxWorks : noyau RT le plus utilisé dans l'industrie. Supporte TCP/IP et une API socket. Coût des licences important. QNX : noyau RT de type UNIX. Intègre une interface graphique proche de X Window (Photon). QNX peut être utilisé gratuitement pour des applications non commerciales. Très faible empreinte mémoire. uC/OS : destiné à des micro-contrôleurs type Motorola 68HC11. Support de TCP/IP. Gratuit pour l'enseignement. RTEMS : Real-Time Operating System for Multiprocessor Systems. Gratuit porté pour de nombreuses architectures Windows CE : Victime d'une réputation de fiabilité approximative... Lynx OS : Système RT conforme à la norme POSIX. Nucleus : Noyau RT avec support de TCP/IP, une interface graphique, un navigateur web et serveur HTTP. Livré avec les sources, pas de royalties à payer pour la redistribution. eCos : Noyau RT (Embeddable Configurable OS), faible empreinte mémoire, basé sur Linux et la chaîne de cross-compilation GNU (POSIX). Support de TCP/IP. Licence proche GPL. Largement utilisé (automobile, imprimante, lecteur MP3). Support des processeurs x86, PowerPC, SH3 Hitachi ou StrongARM. Les OS embarqués Quelle différence entre OS et RTOS ? • Le système d’exploitation temps-réel (RTOS) est : – Déterministe : la durée de chaque service est déterminée et ne change pas avec les données. – Prévisible : la durée de chaque service est connue. – Léger : le code de l’OS prend peu de mémoire (empreinte mémoire) – Dédiée, modulable : il fournit des services dédiées selon les besoins de l’application Miramond Benoît - UCP 4 Le succès de Linux en embarqué • • • • • • Libre (gratuit) Open-source Différentes distributions Stable Communauté importante (aide web) Compilateur C associé gratuit (gcc) Miramond Benoît - UCP 5 Structure d’un système linux A p p e ls d ir e c ts M a t é r ie l Noyau B ib lio th è q u e C (G lib C ) A p p lic a tio n s N o y a u (k e r n e l) : r é a lis e le s f o n c tio n s e s s e n t ie lle s ( g e s t io n d e s tâ c h e s e t m é m o ir e ) , in te r fa c e e n tr e le m a té r ie l e t le s a p p lic a tio n s (p ilo t e s ). lib c : b ib lio t h è q u e p r in c ip a le c o n te n a n t le s f o n c tio n s d e b a s e u tilis é e s p a r le s a p p lic a t if s . A p p lic a t io n s ( o u c o m m a n d e s ) : liv r é e s a v e c le s y s tè m e o u d é v e lo p p é e s p o u r d e s b e s o in s s p é c if iq u e s . Les Distribution Linux embarquées • • • • • • • • Montavista Linux BlueCat Linux uCLinux RTLinux RTAI ( ELDK PeeWee Linux ... Comment rendre linux temps réel ? • Distributions TR – Montavista – LynuxWorks – Redhat – Ubuntu • Patch RT (CONFIG_PREEMPT_RT) de Linux : – Scheduler – Interruption préemptibles (thread-IRQ) – Horloge système plus précise (nanosec)... – sur une certaine plate-forme, le temps de latence de réponse à une interruption ne sera jamais supérieur à 20µs, par exemple – http://rt.wiki.kernel.org/index.php/Main_Page • Micro-noyau – Xenomai – Windriver RT Linux (RTAI)Miramond Benoît - UCP 8 Fonctionnalités TR du patch config_preempt_rt Miramond Benoît - UCP 9 Exemple du micro-noyau Xenomai Miramond Benoît - UCP 10 Ordonnanceur 2.6 Grande nouveauté : Ordonnanceur en O(1) 2 types de process Process non-Temps Réel : chaque process se voit attribuer une valeur, appelée nice value, qui détermine la priorité et le temps d’exécution – ce temps d’exécution est appelé timeslice et correspond au temps maximum qu’un process peut rester en exécution avant de « laisser la place » à un autre. La valeur de nice est comprise entre –20 et 19 inclus, 0 étant la valeur par défaut et –20 correspond à la priorité la plus haute et au timeslice le plus élevé Process Temps Réel : chaque process se voit attribuer une priorité comprise entre 1 et 99 inclus – les process nonTemps Réel se voient attribuer également cette priorité mais avec la valeur 0. 99 étant la priorité la plus élevée, on comprend alors pourquoi un process Temps Réel sera toujours prioritaire devant un autre non-Temps Réel. Pour les process Temps Réel, il existe deux politiques d’ordonnancement : SCHED_FIFO : le process Temps Réel restera en exécution tant qu’aucun autre process Temps Réel de priorité supérieure strictement ne sera prêt ou tant qu’il ne passera pas à l’état bloqué. S’il est préempté, il reste tout de même en tête de la liste d’exécution des process de même priorité que lui. C’est donc lui qui sera de nouveau exécuté quand le process de priorité supérieure aura terminé son exécution. Idem s’il change de priorité, il sera placé en tête de la liste des process exécutables ayant cette priorité. Il ne passe en fin de cette liste que par appel explicite de sa part à une certaine fonction. SCHED_RR : la politique est identique en tout point à la précédente, exception faite à la présence d’un timeslice pour les process de même priorité. Ainsi, s’il n’y a pas de process de plus forte priorité pour préempter celui en cours d’exécution, au bout d’un certain temps ce dernier sera placé en queue de la liste des process de même priorité. Miramond Benoît - UCP 11 Trois tests pour les linux RT • Latence d'une tâche de forte priorité – Cyclic_test • Inversion de priorité (cf. cours suivant) – classic_pi • Préemption et latence de l'ordonnanceur – preempt_test • Temps d'accès noyau • ... http://www.kernel.org/pub/linux/kernel/people/tglx/rt-tests/rt-tests-0.49.ta Miramond Benoît - UCP 12 Le bench cyclic_test • sur un système non Temps Réel : • $> ./cyclictest –a –t –n –p99 • • T:0( 3431) 39242 T: 1 ( 3432) P:98 P:99 I:1000 C: 100000 Min: 5 Act: 10 Avg: I:1500 C: 66934 Min: 4 Act: 10 Avg: 17 14 Max: Max: 39661 • Ici, le résultat du même test sur un système Temps Réel : • $> ./cyclictest –a –t –n –p99 • • T: 0 ( 3407) P:99 I:1000 C: 100000 Min: 7 Act:10 Avg: 10 Max: 18 T: 1 ( 3408) P:98 I:1500 C: 67043 Min: 7 Act: 8 Avg: 10 Max: 22 Miramond Benoît - UCP 13 Latence d'ordonnancement Histogrammme de répartition des apparitions en fonction de leur latence Miramond Benoît - UCP 14 Structuration d’un OS embarqué HW/SW Multitasking MailBoxes Allocation statique, HW/SW scheduling Fifos Application Allocation dynamique, Changement dynamique de Mutex Pas de MMU API politique d’ordo? Semaphore Migration de tâche Message passing Intergiciel Hw->Hw, Sw->Hw, Hw->Sw (Flexibilité, Distribution, virtualisation) Gestion de tâches Changement de contexte Synchronisation Communication Event Gestion des IR Gestion mémoire Monitoring Instrumenter l’application mesures en temps API HAL réel à destination des scheduler Hw/Sw Timer (Utilisation … temporel … et spatial…) Autre exemple : uC/OS-II • uC/OS-II (Micro Controller Operating System) – 1992 (J. Labrosse) – 40 processeurs différents (8-64 bits) – Portable – ROMable – Scalable (modulaire) – Préemptif – Déterministe – Pas de MMU Miramond Benoît - UCP 16 Etude de cas : fonctionnement de uC/OS-II Cas d’un noyau temps réel Etude de cas : fonctionnement de RTEMS Cas d’un RTOS multiprocesseur