Chapitre 2 - Threads Flashcards
PCB
(Process Control Block)
Informations requises pour permettre au SE de gérer un processus
États de processus
- nouveau: le processus vient d’être créé
- Executant (ou élu) - running : le processus est en train d’être exécuté par une UCT
- Attente (ou bloqué) - waiting : le processus est en train d’attendre un evenement
- Pret - ready : le processus est en attente d’être execute par une UCT
- Termine - terminated : fin d’execution
Overhead
Le temps pour le changement de contexte
Un Thread
C’est un flux d’instructions
Modèle de codage des threads
Délégation
Un Thread principal crée les autres threads et leur assigne une tâche. Il peut aussi attendre jusqu’à ce que la tâche soit complétée.
Modèles de codage des threads
Peer to Peer
Tous les threads ont un status de travail egal.
Un thread pair (peer) cree tous les theads necessaires a une tache mais il me delegue pas des responsabilites.
Modèles de codage des threads
Producteur-Consommateur
Un Thread producteur génère du data pour être consommé par le thread consommateur. Le data est emmagasiné dans un block mémoire partagé par les threads producteur et consommateur
Modèles de codages des threads
Pipeline
Approche semblable à une ligne de production pour traiter des données par étapes (stages). Chaque stage est un thread qui fait du travail sur une unité d’entrée. Lorsque l’unité d’entrée passe par tous les stages, le traitement est complété
Thread Posix
Programmation Multithread pthread #include "pthread.h"
EAGAIN
Erreur survenu lors de l’execution d’un thread :
La limite du système est dépassée (nombre de LWP- light weight process - permit)
Comment retourner l’ID du thread? (identificateur)
Pthread_t pthread_self(void);
Comment peut ont comparer deux threads?
int pthread_equal(pthread_t t1, pthread_t t2); si la valeur retournée est NON NULLE alors les threads t1 et t2 sont egaux (c'est le meme thread), sinon elle retourne 0.
Difference entre pthread_exit et exit()?
Lorsque le Thread principal (main) appelle la fonction pthread_exit, il ne termine que lui même, les autres Threads dans le processus continuent d’exister . Alors que lors de l’execution de la fonction exit(), le processus se termine avec tous les threads.
int pthread_cancel(pthread_t t);
terminaison d’un Thread à partir d’un autre thread.
=> les valeurs retournés: 0 ou ESRCH (thread specifié non trouvé)
sched_yield( )
pthread_yield( )
un thread demande de rendre la main au cours de son execution