Vous êtes sur la page 1sur 5

Correction des examens

1- Définition d’un 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.

2- Les causes :
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.

3- Les solutions :
• Prévention : On élimine complètement le risque d’interblocage en faisant en sorte que l’une de 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.

4- La différence entre le DeadLock et le LiveLock :

La différence clé entre les deux est que dans un deadlock, les processus sont complètement bloqués
et ne font aucun travail, tandis que dans un livelock, ils sont constamment actifs mais sans réaliser de
progrès utile.

5- Exemple plus simple pour le mutex :


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
6- La définition d’une ressource partagée à accès exclusif :
Une ressource partagée à accès exclusif est une ressource dans un système informatique qui ne peut
être utilisée que par un seul processus ou thread à la fois. Cela signifie que lorsque l'un des processus
ou threads accède à cette ressource, les autres doivent attendre leur tour pour éviter les conflits et
garantir l'intégrité de la ressource. Cette situation est souvent rencontrée lorsque plusieurs processus
ont besoin d'accéder à une même zone de mémoire, une base de données ou tout autre élément
partagé.

Deux méthodes : Mutex et Sémaphore

7- Les points communs et les différences entre mutex et sémaphore :


Points communs :

1. Objectif de base :

 Mutex : Le principal objectif d'un mutex (mutual exclusion) est de garantir l'accès
exclusif à une ressource partagée.

 Sémaphore : Un sémaphore peut également être utilisé pour garantir l'accès exclusif
à une ressource en utilisant un sémaphore binaire.

2. Protection des sections critiques :

 Mutex : Il est souvent utilisé pour protéger des sections critiques du code,
permettant à un seul thread ou processus d'exécuter ces sections à la fois.

 Sémaphore : Un sémaphore peut être utilisé pour protéger des sections critiques de
manière similaire à un mutex, en utilisant un sémaphore binaire.

Différences :

1. Utilisation générale :

 Mutex : Principalement utilisé pour assurer l'accès exclusif à une seule ressource
partagée.

 Sémaphore : Peut être utilisé pour gérer l'accès à un ensemble de ressources, et pas
seulement à une ressource unique.

2. Valeurs et opérations :

 Mutex : Il a deux états : verrouillé et déverrouillé. Un thread peut acquérir le mutex


pour accéder à la ressource, et le libérer une fois qu'il a terminé.

 Sémaphore : Peut avoir n'importe quelle valeur entière positive. Les opérations de
base sont P (attente) pour décrémenter et V (signal) pour incrémenter. Un
sémaphore binaire peut être utilisé de manière similaire à un mutex.

3. Nombre d'accès simultanés :

 Mutex : Permet l'accès exclusif à une seule ressource à la fois.


 Sémaphore : Peut permettre à plusieurs threads ou processus d'accéder
simultanément à la ressource, en fonction de la valeur du sémaphore (dans le cas de
sémaphores généraux).

4. Utilisation pour la synchronisation :

 Mutex : Principalement utilisé pour la synchronisation entre deux ou plusieurs


threads/processus.

 Sémaphore : Peut être utilisé pour la synchronisation, mais également pour le


contrôle de l'accès à un ensemble de ressources.

8- Définition d’un tube de communication :


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.

Dans le contexte PRODUCTEUR / CONSOMMATEUR, le processus PRODUCTEUR écrit des données


dans le tube avec l’opération écrire (), et le processus CONSOMMATEUR lit ces données du tube avec
l’opération lire (). Les opérations lire () et écrire () 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.

9- Définition du sémaphore :
Sémaphore : 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. *

10- Définition d’une ressource à accès partagé limité :


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.

11- Exemple du principe du fonctionnement :


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.

12- Oui, il est possible de créer des situations potentielles d'interblocage (deadlock) lors de la
mise en place de la synchronisation entre processus. L'interblocage se produit généralement
en présence de plusieurs processus qui attendent indéfiniment des ressources détenues par
d'autres processus, créant ainsi un cercle d'attente circulaire.

Voici un exemple simple avec deux processus et deux ressources :

Processus 1 :

Attente de la ressource A

Possède la ressource B

Processus 2 :

Attente de la ressource B

Possède la ressource A

Si les deux processus commencent à exécuter leurs actions en même temps et chacun acquiert une
ressource avant d'en demander une autre, ils peuvent entrer dans une situation d'interblocage où
aucun des processus ne peut progresser, car chaque processus détient une ressource que l'autre
attend.

Pour éviter l'interblocage, des mécanismes de synchronisation appropriés tels que des mutex, des
sémaphores, ou des ordonnanceurs de tâches peuvent être utilisés de manière stratégique. Les
bonnes pratiques pour la gestion de la synchronisation incluent l'ordonnancement cohérent des
acquisitions de ressources, l'utilisation de hiérarchies de verrouillage, et la libération appropriée des
ressources une fois qu'elles ne sont plus nécessaires.
Il est important de concevoir les interactions entre les processus avec soin pour éviter les conditions
d'interblocage potentielles. Des outils de débogage, tels que les analyseurs de deadlock, peuvent
également être utiles pour détecter et prévenir les interblocages dans des applications plus
complexes.

Vous aimerez peut-être aussi