Flashcards : Synchronisation et interblocages (55 cartes)

Toutes les cartes

1Question

Dans le problème lecteurs-écrivains, combien de lecteurs peuvent accéder simultanément à la donnée ?

Réponse

Plusieurs lecteurs.

2Question

Dans le problème lecteurs-écrivains, quand un écrivain peut-il accéder à la donnée ?

Réponse

Seul, sans lecteur ni autre écrivain.

3Question

Avec la priorité aux lecteurs, à quelle condition un écrivain accède-t-il à la donnée ?

Réponse

Lorsqu’aucun lecteur n’est en train de lire.

4Question

Sans protection, quel effet peuvent avoir nbrl++ et le test if (nbrl == 1) ?

Réponse

Ils peuvent fausser le compte des lecteurs, car ils ne sont pas atomiques.

5Question

Quelle variable Smut protège-t-il dans la solution du problème lecteurs-écrivains ?

Réponse

La variable nbrl.

6Question

Quel accès Se, initialisé à 1, empêche-t-il pendant la lecture collective ?

Réponse

L’accès des écrivains à la donnée.

7Question

Dans la solution lecteurs-écrivains, que fait le premier lecteur lorsque nbrl passe à 1 ?

Réponse

Il prend Se au nom du groupe.

8Question

Comment aborde-t-on un problème de synchronisation par sémaphores ?

Réponse

On le ramène aux cas typiques connus.

9Question

Que repère-t-on pour résoudre un problème de synchronisation par sémaphores ?

Réponse

L’endroit où attendre.

10Question

Comment associe-t-on les sémaphores aux attentes et aux variables critiques annexes ?

Réponse

Un sémaphore par attente unique, avec protection des variables critiques annexes.

11Question

À quoi sert principalement une condition POSIX ?

Réponse

À attendre un événement.

12Question

À quels usages un sémaphore peut-il servir en plus de l’attente d’événement ?

Réponse

À l’exclusion mutuelle ou au comptage de ressources.

13Question

Que fait pthread_cond_wait ?

Réponse

Il attend sur une condition.

14Question

Que fait pthread_cond_signal ?

Réponse

Il réveille un thread en attente.

15Question

Que fait pthread_cond_broadcast ?

Réponse

Il réveille tous les threads en attente.

16Question

Quand survient un réveil perdu sur une condition ?

Réponse

Lorsqu’un signal est émis sans thread en attente et n’est pas mémorisé.

17Question

Quand survient un réveil trompeur sur une condition ?

Réponse

Lorsque la condition justifiant le réveil a cessé d’être vraie à la reprise du thread.

18Question

Que fait `pthread_cond_wait` au mutex associé pendant l’attente et avant de rendre la main ?

Réponse

Il le libère atomiquement, puis le reverrouille automatiquement avant de rendre la main.

19Question

Dans quelle structure faut-il tester la condition autour de `pthread_cond_wait` ?

Réponse

Dans une boucle `while`.

20Question

Pourquoi faut-il retester la condition après le réveil de `pthread_cond_wait` ?

Réponse

Parce que la condition doit être vérifiée de nouveau après le réveil.

21Question

Comment exprimer l’événement à attendre dans une attente POSIX correcte ?

Réponse

Par une assertion.

22Question

Où faut-il tester l’assertion de l’événement attendu ?

Réponse

Dans une section critique, au sein d’une boucle.

23Question

Que faut-il vérifier en sortant de la boucle d’attente de l’événement ?

Réponse

Que l’assertion est satisfaite.

24Question

Quel mécanisme assure l’exclusion mutuelle entre threads ?

Réponse

Le mutex.

25Question

Quel mécanisme permet l’attente d’événement entre threads ?

Réponse

La condition.

26Question

Quel mécanisme peut assurer les deux fonctions entre processus ?

Réponse

Un sémaphore.

27Question

Que fait le système pendant une attente passive ?

Réponse

Il met l’activité en pause.

28Question

Comment l’attente active vérifie-t-elle une condition ?

Réponse

En boucle sur le processeur.

29Question

Pourquoi l’attente active est-elle généralement à éviter ?

Réponse

Elle mobilise le processeur pour vérifier une condition en boucle.

30Question

Dans quelles situations l’attente active peut-elle être légitime ?

Réponse

Sans support d’attente passive, avec beaucoup de processeurs ou pour des sections critiques très courtes et fréquentes.

31Question

Qu’est-ce qu’un interblocage ?

Réponse

Une situation où une ou plusieurs entités d’exécution sont bloquées et ne peuvent pas se débloquer elles-mêmes.

32Question

Quand A détient r1 et B détient r2, quelle attente mutuelle crée un interblocage ?

Réponse

A attend r2 et B attend r1.

33Question

Quelles conditions réunies caractérisent un interblocage selon Coffman, Elphick et Shoshani (1971) ?

Réponse

L’exclusion mutuelle, la conservation et attente, l’absence de réquisition et l’attente circulaire.

34Question

Qu’est-ce qu’un graphe d’allocation de ressources ?

Réponse

Un graphe orienté représentant les processus, les ressources, leurs allocations et leurs attentes.

35Question

Que signifie un arc R→PR \to P dans un graphe d’allocation ?

Réponse

Un exemplaire de RR est alloué à PP.

36Question

Que signifie un arc P→RP \to R dans un graphe d’allocation ?

Réponse

PP attend un exemplaire de RR.

37Question

Que garantit un interblocage dans un graphe d’allocation ?

Réponse

La présence d’un cycle.

38Question

Pourquoi un cycle ne garantit-il pas toujours un interblocage ?

Réponse

Les ressources peuvent avoir plusieurs exemplaires.

39Question

Que provoque un cycle si chaque ressource concernée n’a qu’un exemplaire ?

Réponse

Un interblocage.

40Question

Dans l’exemple de struct timespec, quel problème peut survenir en lisant tv_sec avant une modification et tv_nsec après ?

Réponse

Un mélange incohérent des anciennes et nouvelles valeurs.

41Question

Que fait l’opération V sur un sémaphore ?

Réponse

Elle incrémente un compteur persistant.

42Question

Quel type représente une condition POSIX et quelle constante permet de l’initialiser statiquement ?

Réponse

`pthread_cond_t`, initialisable avec `PTHREAD_COND_INITIALIZER`.

43Question

Pourquoi l’API POSIX ne fournit-elle pas de fonction `pthread_cond_trywait` ?

Réponse

Une condition POSIX sert à attendre un événement, pas à tenter d’obtenir une ressource sans bloquer.

44Question

Quel mécanisme assure l’exclusion mutuelle lors de la synchronisation des signaux ?

Réponse

Le masquage.

45Question

Quel mécanisme permet l’attente d’événement lors de la synchronisation des signaux ?

Réponse

sigsuspend.

46Question

Que peut provoquer l’ajout de sleep à une boucle de vérification ?

Réponse

Un retard de réaction à l’événement pouvant atteindre une seconde dans l’exemple du cours.

47Question

Que devient une boucle active lorsqu’on lui ajoute sleep ?

Réponse

Elle reste une attente active.

48Question

Quelle fonction parmi pthread_cond_broadcast, pthread_spin_lock, sem_trywait et sleep reste légitime dans certains usages ?

Réponse

pthread_cond_broadcast.

49Question

Quelles fonctions sont à éviter par défaut : pthread_cond_broadcast, pthread_spin_lock, sem_trywait et sleep ?

Réponse

pthread_spin_lock, sem_trywait et sleep.

50Question

Comment un processus peut-il s’interbloquer avec deux appels à P(r1) ?

Réponse

En appelant deux fois P(r1) sur le même sémaphore binaire sans appeler V(r1) entre les deux.

51Question

Quand un mutex et une barrière peuvent-ils provoquer un interblocage ?

Réponse

Quand A détient le mutex en attendant la barrière et que B attend ce mutex pour atteindre la barrière.

52Question

Avec quels mécanismes l’interblocage peut-il survenir ?

Réponse

Avec tout mécanisme provoquant une attente conditionnelle.

53Question

Quels exemples de mécanismes à attente conditionnelle peuvent provoquer un interblocage ?

Réponse

Les sémaphores, les mutex, les barrières et les conditions.

54Question

Quelles primitives du cours empêchent la réquisition forcée d’une ressource acquise ?

Réponse

P/V, pthread_mutex_lock et pthread_cond_wait.

55Question

Comment P3 peut-il débloquer P1 dans l’exemple avec plusieurs exemplaires de R2 ?

Réponse

P3 libère un autre exemplaire de R2.

Teste-toi avec le QCM

Teste tes connaissances avec un QCM de 23 questions sur Synchronisation et interblocages.

1. Dans les primitives P/V ou les mutex étudiés, que signifie l’absence de réquisition ?

2. Dans un graphe d’allocation de ressources, que signifie un arc R → P ?

Faire le QCM →

Consultez la fiche

Révisez le cours complet dans la fiche de révision de Synchronisation et interblocages.

Voir la fiche →

Cours similaires

Crée tes propres flashcards

Importe ton cours et l'IA génère des flashcards en 30 secondes.

Générateur de flashcards