INFO622 : Systèmes de synchronisation et Processus

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
  • Responsable pour 2014--2015: Xavier Provençal
  • Intervenants : Xavier Provençal (CM/TD/TP), Afef Denguir-Draoui (TD/TP)


Ouvrage de référence

  1. Andrew Tanenbaum, Systèmes d'exploitation. Principalement les chapitres 2 et 6.


Documentation remise en classes

À venir.


TP

   Fichiers sources du simulateur.

Déroulement (2015-2016)

À venir.


Archives

Déroulement (2014-2015)

- CM1 : Introduction à la multiprogrammation, condition de concurrence et section critique.
   - Banque virtuelle : exemple de condition de concurrence.
      programme ``banqueVirtuelle.c``.
  
      
  
  
- TD1 : 
   - Énoncé du TD1 (en salle machine).
      - Solution question 1a)
      - Solution question 2a)
      - Solution question 2c)
      - Solution question 2e)
      - Solution question 3a)
      - Solution question 3d)
      - Solution question 3e)
  
- CM2 : Processus et threads, utilisation des fonctions : fork, wait, waitpid, pthread_create, pthread_exit, pthread_join. Méthodes d'exclusion mutuelle : désactivation des interruptions et attente active.
  
- TD2 : 
   - Énoncé du TD2.
      - Implémentation du code de la question 6. (à compiler avec l'option -lm )
      - Implémentation de la solution de la question 6. (à compiler avec les options -lm -lpthread )
  
- CM3 : Producteur/Consommateur et Sémaphores
   - Exemple d'utilisation d'un sémaphore non nommé par des threads (compiler avec l'option -lpthread) :
      programme ``semThread.c``.
  
  
- TD3 : 
   - Énoncé du TD3.
      - Implémentation du code de la question 2. (à compiler avec les options -lpthread -lcurses )
      - Implémentation de la solution de la question 2. (à compiler avec les options -lpthread -lcurses )
  
  
- CM4 : Sémaphores nommés et mémoire partagée
   - Exemple erroné d'utilisation d'un sémaphore non nommé par des processus apparenté ( fork() ) (compiler avec l'option -lpthread) :
      programme ``semFork-bug.c``.
   - Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
      programme ``createur.c``.
      programme ``destructeur.c``.
      programme ``gestionnaire.c``.
      programme ``parleur.c``.
   - Exemple simplissime de manipulation d'un entier situé en mémoire partagée (compiler avec l'option -lrt) :
      programme ``mp_1.c``.
      programme ``mp_2.c``.
   - Exemple d'utilisation d'un sémaphore non-nommé situé en mémoire partagée (compiler avec l'option -lrt) :
      fichier entête ``mp_maStruct.h``.
      programme ``mp_lecture.c``.
      programme ``mp_affichage.c``.
  
  
- TD4 : 
   - Énoncé du TD4.
   - Programme ``collatz.c`` à compléter (compilez avec les options : -lpthread -lrt.
  
- CM5 : Variables de condition et implémentation du problème "producteurs/consommateurs".
   - Solution au devoir :
      Programme qui teste le comportement par défaut le la mémoire partagée lors d'un fork. 
   - Exemple d'utilisation d'une variable de condition.
      Implémentation naïve (non-fonctionnelles) 
      Implémentation avec des sémaphores 
      Implémentation avec des variables de conditions 
   - Barrières de synchronisation (début)
  
  
- CM6 : 
   - Barrières de synchronisation (suite et fin)
      Programme ``barriere.c``.
   - Tubes (début)
  
  
- TD5 : 
   - Énoncé du TD5.
  
  
- CM7 : 
   - Tubes (suite et fin)
   - Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
      Programme ``tubeFork.c``.
   - Exemnple d'utilisation d'un fifo entre deux processus non-apparentés.
      Programme ``fifoEcriture.c``.
      Programme ``fifoLecture.c``.
  Interblocages et famine
   - Exemple de programme créant un interblocage.
      Programme ``banqueVirtuelle2.c``.
  
- TD6 : 
   - TD6.
   
- TD7 :
   - TD7.
     Solution des question 1), 2a) et 2b).