Le systme RTEMS
Plan
Prsentation
Le systme RTEMS
Matriel supports Gestion des tches Gestion de la mmoire Communications entre threads Timers
Bertrand Dupouy
ENST
- 2005
158
ENST
- 2005
159
Le systme RTEMS
Le systme RTEMS
Prsentation
http://www.oarcorp.com
Prsentation
- Conception modulaire par sparation des : o API (RTEMS ou POSIX),
Caractristiques : - open-source : on a accs tous les sources, on peut les modifier, les distribuer - cest un excutif, pas un systme : lexcutif est link avec lapplication et donne un excutable qui doit tre charg sur la cible, - avantage dun excutif : plus petit quun sysme (on ne charge que les primitives dont on a besoin), RTEMS peut tourner sur une dizaine de K octets - RTEMS est arriv maturit - Il utilise lenvironnement de dveloppement GNU/gcc : o Nombreux compilateurs croiss, pratiquement pour toutes les architectures 32 bits o Nombreux formats de fichiers excutables, o remote gdb o Dveloppements sur RTEMS en C, C++, Ada
o Bibliothques (managers), o CPU (Types de processeurs), o boards (notion de board support package ou BSP) Application RTEMS avec les seuls managers ncessaires Fonctions dpendantes du processeur Fonctions dpendantes du BSP Matriel
Matriels supports : - Famille Motorola MC68xxx et PowerPC, Intel i386 et i960, MIPS, HP PA-RISC, sur toutes sortes de boards - Ces cibles peuvent tre utilises en multiprocesseur, sans migration
ENST
- 2005
160
ENST
- 2005
161
Le systme RTEMS
Le systme RTEMS
Prsentation
Caractristiques : - RTEMS propose plusieurs API, dont POSIX 1003.1b - Les primitives systmes sont regroupes par type dans des managers - On cr un excutable en linkant le code de lapplication avec le noyau, on indique, pour chaque application, quels managers sont utiliss - La mise au point peut se faire distance via une ligne srie ou un cble Ethernet - Le noyau fonctionne sur des architectures multiprocesseurs, mais les tche ne peuvent pas migrer - Il existe une version Unix qui permet de simuler Espace disque pour lenvironnement de dveloppement : - gcc et bibliothques : 250 M octets - source de RTEMS = environ 95 M octets
Pas despaces dadressage spars, les tches sont donc des threads
Politique dordonnancement : - event driven, base sur les priorits (255 niveaux, 1 est maximum, linverse avec POSIX), premptive - RMS, - tches sporadiques avec lAPI POSIX
Attention : il faut dfinir le nombre maximal de threads pour chaque application, ce nombre dpend de la mmoire disponible
ENST
- 2005
162
ENST
- 2005
163
Le systme RTEMS
Le systme RTEMS
Synchronisation : Smaphores
Pas de protection des espaces dadressage, Gestion mmoire dynamique par blocs allocation de blocs de taille variable (memory chunks), (malloc et free), Gestion par le Region Manager, Communications entre tches : lAPI POSIX 1003.1b IPC est implante
Verrous, smaphores, avec ou sans timeout, nomms ou non, gr par le Semaphore Manager
- locaux, globaux - oprations P et V (Dijkstra) : rtems_semaphore_obtain et rtems_semaphore_release, option NOWAIT - oprations Init (Dijkstra) : rtems_semaphore_create options : LOCAL/GLOBAL, PRIO : PCP/PIP/STANDARD, FA : FIFO/PRIORITY - API POSIX implante pour les verrous (pthread_mutex_lock, ),
Gestion des priorits : - pour les verrous locaux seulement - PIP (Priority Inheritance Protocol), hritage de priorit : - PCP (Priority Ceiling Protocol), priorit plafonne,
ENST
- 2005
164
ENST
- 2005
165
Le systme RTEMS
Le systme RTEMS
Les Messages
servent mettre un thread en attente de vrification d'une condition, implantation de lAPI POSIX : association d'un mutex et d'une variable dite conditionnelle fonctions de gestion :
pthread_cond_init(&VarCond,NULL), pthread_cond_destroy(&VarCond), pthread_cond_wait(&VarCond, &Verrou), pthread_cond_timedwait(&VarCond, &Verrou, &Tempo), pthread_cond_signal(&VarCond), pthread_cond_broadcast(&VarCond)
Grs par le Message Manager : Primitives bloquantes on non bloquantes API POSIX disponible : Fonction
mq_close mq_getattr mq_open mq_receive mq_send mq_setattr mq_unlink
Description Fermer une file de messages Renvoie les caractristiques dune file de messages Ouvrir une file de message Extraire un message dune file Dposer un message dans une file Changer les attributs dune file Dtruire une file de messages
le wait est toujours bloquant, la diffrence d'une opration P sur un smaphore .Il fait passer le thread l'tat bloqu ET rend le verrou de faon atomique. Quand le thread sort de l'tat bloqu sur un signal ou broadcast, il essaie de reprendre le verrou
l'vnement de rveil (signal, broadcast) n'est pas mmoris : si aucun thread ne l'attend, il est perdu (diffrent de V sur un smaphore)
ENST
- 2005
166
ENST
- 2005
167
Le systme RTEMS
Le systme RTEMS
0rdonnancement RMS
On va crer une priode lintrieur dune tche :
Signal Manager . - gestion par ASR dfinie par le thread courant qui est excute quand le signal est dlivr au thread API POSIX : Fonction Sigqueue Sigwaitinfo Sigtimedwait Description Queue a signal to a process Attendre un signal et une info. Attendre un signal avec une chance
- appel rate_monotonoc_create, - elle est implant sous forme dun Period Control Block, - chaque PCB est associ un identificateur unique, - le PCB contient ltat de la priode, initialis inactive
Changements
dtats
pour
une
priode par
appel
rate_monotonoc_create :
- ni active, ni expire, alors initialise : period ticks et retour tche courante, - si active, alors la tche est bloque pendant le reste de la priode courante, lexpiration de celle-ci, la priode est rinitialise et la tche redmarre, - si la priode a expir avant lappel
rate_monotonoc_period,alors la tche sort en time-out,
La rsolution du timer (dure du tic) peut tre dfinie au niveau du BSP Les interruptions ne sont pas converties en signaux ou autres vnements, elles sont gres par des fonctions C associes au vecteur dinterruption: Les fonctions qui grent les IT sappellent des ISR et sont attaches aux vecteurs dinterruption par la primitive rtems_interrupt_catch()
active
(appel
rate_monotonoc_period
ENST
ENST
- 2005
168
- 2005
169
Le systme RTEMS
Le systme RTEMS
Implantation
Une interruption est gnre chaque clock_tick : - elle est gre par un ISR qui appelle une fonction RMS lorsque le nombre de clock_ticks atteint la priode - cette fonction rinitialise le compteur de lISR et change ltat de la priode pour dbloquer la tche associe Mise en uvre dune gestion RMS :
#define T 10 rtems_rate_monotonic_create (nom, &Periode) ; while () {
Etat = rtems_rate_monotonic_period(Periode, T) ; if (Etat == RTEMS_TIMEOUT) break ; /***** } /***** Echance dpasse *****/ Code excuter (C1, C2, C3) *****/
ENST
- 2005
170
ENST
- 2005
171
Le systme RTEMS
Le systme RTEMS
rtems_rate_monotonic_period
priode Les appels rtems_rate_monotonic_period : - Appel 1 (comportement spcifique dinitialisation) : priode initialise T (ici 10), la tche ressort immdiatement de la fonction, - Appel 2 : la tche est bloque pendant T- C1 - Appel 3 : la tche est bloque pendant T- C2 - Appel 4 : C3 > T, lchance est dpasse, la tche ressort immdiatement avec un message derreur,
/* configuration information */ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_MAXIMUM_POSIX_THREADS #define CONFIGURE_MAXIMUM_POSIX_KEYS #define CONFIGURE_MAXIMUM_POSIX_MUTEXES #define CONFIGURE_POSIX_INIT_THREAD_TABLE #include <confdefs.h> 1 10 10
Tche critique et gestion RMS : - si certaines tches sont critiques (strict respect des chances) et dautres, non : o affecter des priorits telles que celle de la tche critique la moins prioritaire soit plus prioritaire que la tche noncritique la plus prioritaire o en cas de surcharge, seules les tches critiques respecteront leurs chances,
ENST
- 2005
172
ENST
- 2005
173