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 l s d i r e c t s N o y a u ( k e r n e l ) : r é a l i s e l e s f o n c t i o n s e s s e n t i e l l e s ( g e s t i o n d e s t â c h e s e t m é m o i r e ), i n t e r f a c e e n t r e l e m a t é r i e l e t l e s a p p l i c a t i o n s ( p i l o t e s ). M a t é r i e l l i b c : b i b l i o t h è q u e p r i n c i p a l e c o n t e n a n t l e s f o n c t i o n s d e b a s e u t i l i s é e s p a r l e s a p p l i c a t i f s. N o y a u B i b l i o t h è q u e C ( G l i b C ) A p p l i c a t i o n s ( o u c o m m a n d e s ) : l i v r é e s a v e c l e s y s t è m e o u d é v e l o p p é e s p o u r d e s b e s o i n s s p é c i f i q u e s. A p p l i c a t i o n s
Les Distribution Linux embarquées Montavista Linux BlueCat Linux uclinux RTLinux RTAI ( ELDK PeeWee Linux...
Distributions TR Montavista LynuxWorks Redhat Ubuntu Comment rendre linux temps réel? 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 non- Temps 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) P:99 I:1000 C: 100000 Min: 5 Act: 10 Avg: 14 Max: 39242 T: 1 ( 3432) P:98 I:1500 C: 66934 Min: 4 Act: 10 Avg: 17 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 politique d ordo? API Semaphore Pas de MMU Migration de tâche Message Hw->Hw, Sw->Hw, Hw->Sw Intergiciel passing (Flexibilité, Distribution, virtualisation) Synchronisation Gestion de tâches Communication Gestion mémoire Monitoring Event Instrumenter l application mesures en temps API HAL réel à destination des scheduler Hw/Sw Changement Gestion des Timer (Utilisation temporel et de contexte IR 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