| 1 | |
| 2 | == I. Organisation des bibliothèques système == |
| 3 | La figure suivante illustre la modalisation du système : |
| 4 | |
| 5 | |
| 6 | [[Image(modalisation_mutekp.PNG, nolink)]][[BR]] |
| 7 | Les bibliothèques constituant le système sont : |
| 8 | * pthread : contient l’implémentation d’un sous-ensemble des thread POSIX. |
| 9 | * libc : contient l’implémentation des services système tel que malloc, printf, pipe, memcpy …etc. |
| 10 | * mwmr : contient l’implémentation du protocole MWMR. |
| 11 | * cpu : contient le code système en assembleur qui dépend de type des processeurs de la plate-forme. |
| 12 | * arch : contient le code C qui dépend de la plate-forme tel que des configurations système vis-à-vis des composants de la plate-forme, les ISR d’interruption des différant types de cibles …etc. |
| 13 | |
| 14 | Les bibliothèques pthread, libc et mwmr sont indépendantes de la spécification de la plate-forme. |
| 15 | |
| 16 | En cas de modification au niveau de la configuration matériel, il suffit d’adapter le code système des deux bibliothèques cpu et arch pour pouvoir déployer MUTEKP sur la nouvelle plate-forme. |
| 17 | |
| 18 | == II. API du système == |
| 19 | MUTEKP fourni trois bibliothèques pour les threads de l’application : |
| 20 | |
| 21 | * Un sous-ensemble de l'API des threads POSIX : |
| 22 | * [wiki:pthread_attr_init]: initier la structure d’un attribut. |
| 23 | * [wiki:pthread_create]: créer une tâche |
| 24 | * [wiki:pthread_exit]: mettre fin à une tâche avec une valeur de retour |
| 25 | * [wiki:pthread_self]: Donner l’indenté du thread appelant. |
| 26 | * [wiki:pthread_equal]: tester l’égalité entre deux identificateur. |
| 27 | * [wiki:pthread_yield]: céder le processeur pour un autre thread. |
| 28 | * [wiki:pthread_join]: attendre la fin d’un thread. |
| 29 | * [wiki:pthread_spin_init]: initialiser un verrou à une attente active. |
| 30 | * [wiki:pthread_spin_destroy]: détruire un verrou. |
| 31 | * [wiki:pthread_spin_lock]: verrouiller le verrou à une attente active. |
| 32 | * [wiki:pthread_spin_trylock]: version non bloquante de pthread_spin_lock. |
| 33 | * [wiki:pthread_spin_unlock]: déverrouiller le verrou à une attente active. |
| 34 | |
| 35 | * Les fonctions implémentant le protocole MWMR : |
| 36 | * [wiki:mwmr_read]: lecture d’un FIFO MWMR. |
| 37 | * [wiki:mwmr_write]: écriture dans un FIFO MWMR. |
| 38 | * [wiki:mwmr_init]: création et initialisation d’un FIFO MWMR. |
| 39 | |
| 40 | * Quelques fonctions de la bibliothèque libC : |
| 41 | * [wiki:printf]: afficher une chaîne de caractère formatée. |
| 42 | * [wiki:malloc]: allocation de mémoire dynamique. |
| 43 | * [wiki:pipe]: créer un tube de communication (par flux d’octets) enter deux threads. |
| 44 | * [wiki:read]: pour lire d’un buffer ou un tube. |
| 45 | * [wiki:write]: pour écrire dans un buffer ou un tube. |
| 46 | * [wiki:memset]: remplir une zone mémoire par une valeur donnée. |
| 47 | * [wiki:memcpy]: copie une zone moire source vers une autre zone mémoire distination. |
| 48 | |
| 49 | La norme POSIX ne propose pas dans son API pthread aucun appel permettant d’affecter ou de spécifier un thread à un processeur donné.[[BR]] |
| 50 | MUTEKP propose l’appel [wiki:pthread_attr_setprocid_np] qui permet d’affecter un numéro de processeur à un attribut. Cela permettra de préciser sur quel processeur le nouveau thread va-t-il s’exécuter. |
| 51 | |
| 52 | == III. L’Organisation des fichiers systèmes == |
| 53 | == IV. La génération d’une application == |
| 54 | == V. Description de la plateforme == |