Vous êtes sur la page 1sur 3

Exam 2020 multithread :

Question 1 :
-Définition de l’interblocage :
Un ensemble de processus est dans une situation d’interblocage si chaque processus de l’ensemble
Attend un événement qui ne peut être produit que par un autre processus de l’ensemble.
-indiquez des cases possibles d’interblocage et des solution potentielles pour eliminer la situation
d’interblocage ;
-Causes :
Une situation d’interblocage peut survenir si les quatre conditions suivantes se produisent
simultanément (Habermann) :
1. Accès exclusif : Les ressources ne peuvent être exploitées que par un seul processus à la fois.
2. Attente et occupation : Les processus qui demandent de nouvelles ressources gardent celles qu'ils
ont déjà acquises et attendent la satisfaction de leur demande
3. Pas de réquisition : Les ressources déjà allouées ne peuvent pas être réquisitionnées.
4. Attente circulaire : Les processus en attente des ressources déjà allouées forment une chaîne
circulaire d'attente.
-Solutions :
Il existe essentiellement trois méthodes pour traiter le problème de l’interblocage : Prévention,
Evitement, Détection-Guérison.
• Prévention : On élimine complètement le risque d’interblocage en faisant en sorte que l’une des
ses quatre conditions d’apparition ne soit pas vérifiée.
• Evitement : On évite le risque d’interblocage en veillant à que le système évolue uniquement entre
états sains.
• Détection-Guérison : On attend que l’interblocage arrive, on le détecte puis on applique une
méthode de guérison.

Question 2 :
La différence entre interblocage deadlock et livelock :
un DEADLOCK est un état d’attente passive où les threads sont bloqués, tandis qu’un LIVELOCK est
un état d’attente active où les threads sont occupés mais ne font pas de progrès.
Question 3 :
Un mutex peut être utilisé pour réaliser une synchronisation entre un processus PRODUCTEUR et un
processus CONSOMMATEUR. Dans l’hypothèse d’un PRODUCTEUR plus lent que le
CONSOMMATEUR, comment pouvez-vous réaliser cette synchronisation à l’aide d’un mutex.
Expliquez à l’aide d’un exemple simple. Un mutex (mutual exclusion) est un mécanisme de
synchronisation qui permet d’éviter que deux threads accèdent simultanément à une ressource
partagée4. Dans le cas d’un producteur plus lent que le consommateur, un mutex peut être utilisé pour
bloquer le consommateur jusqu’à ce que le producteur ait produit quelque chose. Par exemple, le
consommateur tente d’acquérir le mutex avant de consommer. Si le producteur n’a rien produit, le
mutex reste verrouillé et le consommateur est bloqué. Lorsque le producteur produit quelque chose, il
déverrouille le mutex. Cela libère le consommateur pour consommer l’élément
Exam 2021 multithread :
Question 1 : expliquer ce qu’une ressource
Question 3 : (exemple de tp)
Exam 2022 multithread :
Question 1 : SEMPAHORE utilise plusieurs thread par contre mutex utilise un seul. (une seul
tache ).
Un sémaphore est un outil de synchronisation plus généralisé qui contrôle l’accès à une ressource
partagée par plusieurs threads. Un sémaphore maintient un compteur qui représente le nombre de
threads qui peuvent accéder à une ressource. Si la valeur du compteur est supérieure à zéro, le thread
peut accéder à la ressource et le compteur est décrémenté. Si la valeur est zéro, le thread doit
attendre2.*
Un tube de communication (ou pipe) est un outil qui permet à deux processus de partager des données.
Le processus PRODUCTEUR écrit des données dans le tube, et le processus CONSOMMATEUR lit
ces données. Si le PRODUCTEUR écrit et que le tube est vide, il attend que le CONSOMMATEUR
lise les données. C’est un moyen efficace pour les processus de communiquer et de partager des
données.
Un tube de communication (ou pipe en anglais) est un mécanisme qui permet la communication entre
deux processus. Dans le contexte PRODUCTEUR / CONSOMMATEUR, le processus
PRODUCTEUR écrit des données dans le tube avec l’opération ecrire(), et le processus
CONSOMMATEUR lit ces données du tube avec l’opération lire(). Les opérations lire() et ecrire()
sont synchrones, ce qui signifie que si le PRODUCTEUR écrit dans un tube vide, il sera bloqué
jusqu’à ce que le CONSOMMATEUR lise les données, et vice versa6.

Le tube de communication est généralement utilisé pour la communication inter-processus où les


données produites par le processus PRODUCTEUR sont consommées par le processus
CONSOMMATEUR. C’est un moyen efficace de partager des données entre des processus qui
s’exécutent simultanément6
Exam 2022 rattrapage multithread :
Question 1 :

Accès exclusif : Les ressources ne peuvent être exploitées que par un seul processus à la fois.
Une ressource à accès partagé limité est une ressource qui ne peut être utilisée que par un nombre
limité de processus ou de threads à la fois. On parle d’accès exclusif lorsqu’un seul processus ou
thread peut accéder à la ressource à un moment donné1.
Un sémaphore est un mécanisme de synchronisation qui peut être utilisé pour contrôler l’accès à une
ressource partagée. Un sémaphore maintient un compteur qui représente le nombre de threads qui
peuvent accéder à une ressource. Si la valeur du compteur est supérieure à zéro, le thread peut accéder
à la ressource et le compteur est décrémenté. Si la valeur est zéro, le thread doit attendre
Question 2:
Imaginons une usine de jouets. L’usine a une machine (le PRODUCTEUR) qui fabrique des jouets et
les place sur un tapis roulant pour être emballés. À l’autre bout du tapis roulant, il y a un employé (le
CONSOMMATEUR) qui emballe les jouets dans des boîtes.

Dans ce scénario, le tapis roulant est la ressource partagée. Il a une capacité limitée - il ne peut
contenir qu’un certain nombre de jouets à la fois.

Le premier mutex est utilisé pour contrôler l’accès au tapis roulant. Quand la machine produit un
jouet, elle “verrouille” le tapis roulant, place le jouet dessus, puis “déverrouille” le tapis roulant. De
même, quand l’employé prend un jouet pour l’emballer, il “verrouille” le tapis roulant, retire le jouet,
puis “déverrouille” le tapis roulant.

Le second mutex est utilisé pour contrôler le nombre de jouets sur le tapis roulant. Si la machine
produit des jouets plus rapidement que l’employé ne peut les emballer, le tapis roulant peut se remplir.
Quand cela se produit, la machine doit attendre jusqu’à ce qu’il y ait de l’espace disponible sur le tapis
roulant avant de pouvoir produire plus de jouets.
Question 3 :

Vous aimerez peut-être aussi