Correction td5 communication et synchronisation - télécharg

TD n°5 : Communication et Synchronisation

Exercice 1 – Notions de cours

Solution :

  1. Un autre processus peut accéder aux ressources partagées avant qu'un processus n'ait terminé leur utilisation (modification).
  2. Oui, par exemple les sémaphores, les tubes et les files d'attente de messages.
  3. Une séquence d'instructions qui accède à des objets partagés entre plusieurs processus.
  4. Réponse : B.

Exercice 2 – Sémaphores de synchronisation

Solution :

Voici les sémaphores nécessaires pour synchroniser les processus :

  • Semaphore 1vers2 = 0;
  • Semaphore 1vers3 = 0;
  • Semaphore 1vers4 = 0;
  • Semaphore 2vers5 = 0;
  • Semaphore 3vers5 = 0;
  • Semaphore 4vers6 = 0;
  • Semaphore 5vers6 = 0;
Process P1 {S1;1vers2.P();1vers3.P();}Process P2 {1vers2.V();S2;2vers5.V();}Process P3 {S3;1vers3.V();3vers5.V();}Process P4 {1vers4.V();}Process P5 {2vers5.P();4vers6.P();S4;3vers5.P();5vers6.P();}Process P6 {4vers6.V();S5;S6;5vers6.V();}

Remarque : Il aurait suffi de trois sémaphores pour une synchronisation optimale.

Exercice 3 – Sémaphores d'exclusion mutuelle

Solution :

  1. Non, car si P2 est en section critique et P1 a exécuté P(mutex1), alors P1 est bloqué et empêche P3 d'entrer en section critique.
  2. Code du processus P1 :

    mutex1.P();n = n - 1;mutex1.V();mutex2.P();Out = Out + 1;mutex2.V();

Exercice 4 – Lecteurs/Rédacteurs (Problème de la voie ferrée)

Solution :

Voici un modèle de synchronisation pour les trains circulant sur une voie ferrée bidirectionnelle :

Semaphore Mutex = 1; // Protection de l'accès à la voieSemaphore mutexAB = 1; // Protection du nombre de trains utilisant la voie de A vers BSemaphore mutexBA = 1; // Protection du nombre de trains utilisant la voie de B vers Aint NbAB = 0; // Compteur de trains A vers Bint NbBA = 0; // Compteur de trains B vers A// Processus Train AversBmutexAB.P(); // Entrée du train A vers Bif (NbAB == 0) autorisation.P();NbAB = NbAB + 1;mutexAB.V(); // Circulation sur la voie de A vers B// Processus Train BversAmutexBA.P(); // Entrée du train B vers Aif (NbBA == 0) autorisation.P();NbBA = NbBA + 1;mutexBA.V(); // Circulation sur la voie de B vers A// Sortie par B (Train AversB)mutexAB.P();if (NbAB == 1) autorisation.V();NbAB = NbAB - 1;mutexAB.V();// Sortie par A (Train BversA)mutexBA.P();if (NbBA == 1) autorisation.V();NbBA = NbBA - 1;mutexBA.V();

Exercice 5 – Producteurs/Consommateurs

Solution :

  1. Version avec un seul producteur et consommateur :

    Semaphore Mutex = 1;Semaphore Plein = 0;Message tampon[];Producteur() {Message m;Tant que vrai faire {m = creermessage();Mutex.P();EcritureTampon(m);Mutex.V();Plein.V();}}Consommateur() {Message m;Tant que vrai faire {Plein.P();Mutex.P();m = LectureTampon();Mutex.V();}}
  2. Version avec un tampon de taille maximale Max :

    Semaphore Mutex = 1;Semaphore Plein = 0;Semaphore Vide = Max;Message tampon[Max];Producteur() {Message m;Tant que vrai faire {Vide.P();m = creermessage();Mutex.P();EcritureTampon(m);Mutex.V();Plein.V();}}Consommateur() {Message m;Tant que vrai faire {Plein.P();Mutex.P();m = LectureTampon();Mutex.V();Vide.V();}}

Foire aux Questions (FAQ)

Qu'est-ce qu'un sémaphore en informatique ?

Un sémaphore est un mécanisme de synchronisation utilisé pour contrôler l'accès à une ressource partagée entre plusieurs processus ou threads. Il permet d'éviter des conflits en limitant le nombre de processus pouvant accéder simultanément à cette ressource.

Comment fonctionne le problème des lecteurs/écrivains ?

Ce problème illustre la synchronisation entre plusieurs processus qui lisent ou écrivent dans une ressource partagée. L'objectif est de permettre plusieurs lectures simultanées mais d'interdire toute écriture ou lecture pendant une écriture pour éviter les incohérences.

Quelle est la différence entre exclusion mutuelle et synchronisation ?

L'exclusion mutuelle garantit qu'un seul processus peut accéder à une ressource critique à la fois, tandis que la synchronisation permet de coordonner l'exécution de plusieurs processus pour qu'ils atteignent un état souhaité, souvent en utilisant des sémaphores ou d'autres mécanismes.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne