Executive → processus → thread
★ À maîtriser
La bibliothèque pthread fournit les constructions concurrentes POSIX en C, car le langage C ne possédait pas de support natif des threads avant C11.
La création d’un thread avec pthread_create reçoit un identifiant de thread, des attributs, une fonction de démarrage prenant un void* et un argument transmis à cette fonction.
📌 pthread_join bloque le thread appelant jusqu’à la terminaison du thread ciblé.
Compléments
📌 Les déclarations pthread sont définies dans pthread.h et une compilation avec GCC doit notamment utiliser l’option -lpthread, par exemple gcc -o app app.c -lpthread.
Un processus comme une maison contenant plusieurs fils d’exécution partageant la mémoire
Mutex = un seul entrant ; sémaphore = plusieurs accès possibles
★ À maîtriser
📌 Un mutex doit généralement être libéré par le thread qui l’a saisi, tandis qu’un sémaphore peut permettre à un thread différent de contrôler la libération.
Compléments
📌 Dans sem_init, une valeur de partage égale à 1 indique que le sémaphore peut être partagé entre processus.
Compteur épuisé → thread bloqué ; post → thread réveillé
★ À maîtriser
📌 pthread_cond_wait bloque le thread courant, libère le mutex pendant l’attente, puis reprend le mutex lorsque le thread est réveillé.
Compléments
Verrouiller → attendre → être réveillé → reprendre le mutex
★ À maîtriser
Les horloges POSIX principales sont:
Pour une tâche périodique, il faut calculer les échéances absolues successives et utiliser clock_nanosleep afin d’éviter la dérive d’horloge due aux retards de calcul et de préemption.
Compléments
Sommeil relatif dérive ; échéance absolue reste calée
★ À maîtriser
📌 Avec SCHED_FIFO, un thread de priorité supérieure préempte un thread de priorité inférieure et les threads de même priorité sont exécutés dans l’ordre FIFO.
📌 Avec SCHED_RR, un thread cesse d’être exécuté lorsqu’il est bloqué, terminé ou qu’il dépasse son quantum de temps.
Compléments
FIFO privilégie la priorité ; Round-robin partage le quantum
★ À maîtriser
Les politiques de verrouillage POSIX sont:
Sur un système multicœur, l’exécutif peut mapper et migrer les threads entre cœurs, ce qui affecte les caches, la MMU et les changements de contexte.
Compléments
📌 pthread_setaffinity_np lie un thread à un ou plusieurs cœurs au moyen d’un champ de bits indiquant les processeurs utilisables.
Inversion de priorité → héritage ou plafond ; migration → effets sur caches et analyse
Mécanismes de synchronisation
| Mécanisme | Fonction principale | Accès ou réveil |
|---|---|---|
| Mutex | Exclusion mutuelle d’une section critique | Un seul thread à la fois |
| Sémaphore | Comptage de ressources et signalisation | Nombre maximal fixé par le compteur |
| Variable conditionnelle | Suspension sur une condition | Réveil par signal ou broadcast avec reprise du mutex |
Teste tes connaissances sur API POSIX et systèmes concurrents avec 11 questions à choix multiples et corrections détaillées.
1. Que définit principalement POSIX dans le contexte des systèmes d’exploitation ?
2. Quelle association entre les normes POSIX et leurs domaines est correcte ?
Mémorisez les concepts clés de API POSIX et systèmes concurrents avec 10 flashcards interactives.
Qu'est-ce que POSIX définit en C99 ?
Un ensemble d’API standard pour interfacer les services des systèmes d’exploitation.
Quelles normes comprend la famille POSIX ?
POSIX.1, POSIX.1b et POSIX.1c.
Quelle bibliothèque fournit les constructions POSIX en C pour les threads ?
La bibliothèque pthread.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches