15 | | |
16 | | (this Site is under construction) |
17 | | == I. Organisation des bibliothèques système == |
18 | | La figure suivante illustre la modalisation du système : |
19 | | |
20 | | |
21 | | [[Image(modalisation_mutekp.PNG, nolink)]][[BR]] |
22 | | Les bibliothèques constituant le système sont : |
23 | | * pthread : contient l’implémentation d’un sous-ensemble des thread POSIX. |
24 | | * libc : contient l’implémentation des services système tel que malloc, printf, pipe, memcpy …etc. |
25 | | * mwmr : contient l’implémentation du protocole MWMR. |
26 | | * cpu : contient le code système en assembleur qui dépend de type des processeurs de la plate-forme. |
27 | | * 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. |
28 | | |
29 | | Les bibliothèques pthread, libc et mwmr sont indépendantes de la spécification de la plate-forme. |
30 | | |
31 | | 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. |
32 | | |
33 | | == II. API du système == |
34 | | MUTEKP fourni trois bibliothèques pour les threads de l’application : |
35 | | |
36 | | * Un sous-ensemble de l'API des threads POSIX : |
37 | | * [wiki:pthread_attr_init]: initier la structure d’un attribut. |
38 | | * [wiki:pthread_create]: créer une tâche |
39 | | * [wiki:pthread_exit]: mettre fin à une tâche avec une valeur de retour |
40 | | * [wiki:pthread_self]: Donner l’indenté du thread appelant. |
41 | | * [wiki:pthread_equal]: tester l’égalité entre deux identificateur. |
42 | | * [wiki:pthread_yield]: céder le processeur pour un autre thread. |
43 | | * [wiki:pthread_join]: attendre la fin d’un thread. |
44 | | * [wiki:pthread_spin_init]: initialiser un verrou à une attente active. |
45 | | * [wiki:pthread_spin_destroy]: détruire un verrou. |
46 | | * [wiki:pthread_spin_lock]: verrouiller le verrou à une attente active. |
47 | | * [wiki:pthread_spin_trylock]: version non bloquante de pthread_spin_lock. |
48 | | * [wiki:pthread_spin_unlock]: déverrouiller le verrou à une attente active. |
49 | | |
50 | | * Les fonctions implémentant le protocole MWMR : |
51 | | * [wiki:mwmr_read]: lecture d’un FIFO MWMR. |
52 | | * [wiki:mwmr_write]: écriture dans un FIFO MWMR. |
53 | | * [wiki:mwmr_init]: création et initialisation d’un FIFO MWMR. |
54 | | |
55 | | * Quelques fonctions de la bibliothèque libC : |
56 | | * [wiki:printf]: afficher une chaîne de caractère formatée. |
57 | | * [wiki:malloc]: allocation de mémoire dynamique. |
58 | | * [wiki:pipe]: créer un tube de communication (par flux d’octets) enter deux threads. |
59 | | * [wiki:read]: pour lire d’un buffer ou un tube. |
60 | | * [wiki:write]: pour écrire dans un buffer ou un tube. |
61 | | * [wiki:memset]: remplir une zone mémoire par une valeur donnée. |
62 | | * [wiki:memcpy]: copie une zone moire source vers une autre zone mémoire distination. |
63 | | |
64 | | 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]] |
65 | | 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. |
66 | | |
67 | | == III. L’Organisation des fichiers systèmes == |
68 | | == IV. La génération d’une application == |
69 | | == V. Description de la plateforme == |