INFO622 : Systèmes de synchronisation et Processus

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


Ouvrage de référence

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


Documentation remise en classes

- Entêtes de fonctions POSIX (I).

TP

À venir


Déroulement (2016-2017)

- CM1 : Multiprogrammation
   - Introduction à la multiprogrammation
   - Condition de concurrence
   - 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
   - Commandes : fork, waitpid, wait.
   - Threads, définition, principe, fonctionnement, librairie pthread.
   - Méthodes d'exclusion mutuelle.

Archives

Déroulement (2015-2016)

- CM1 : 
   - Introduction à la multiprogrammation
   - Condition de concurrence
   - 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 : 
   - Threads et processus. 
   - Ressources physiques et espace d'adressage. 
   - Commandes fork, wait, pthread_create, pthread_join.
     - programme ``zombies.c``. 
   - Mécanismes d'exclusion mutuelle (première partie).
- TD2 : 
   - Énoncé du TD2.
- CM3 : 
   - Mécanismes d'exclusion mutuelle (deuxième partie)
     - Mutex et sémaphores
     - Programme verrou.c
     - Programme mutex.c
     - Programme ParleurCC.c (avec condition de concurrence)
     - Programme ParleurSem.c (sans condition de concurrence)
   - Communication interprocessus
     - Problème "producteurs/consommateurs"
- TD3 :
   - Énoncé du TD3.
- CM4 :
   - Sémaphores nommés vs non-nommés
     - Implémentation du duo "Parleur/gestionnaire" avec un sémaphore non-nommé.
       - Parleur/gestionnaire avec threads et sémaphore non-nommé.
       - Parleur/gestionnaire avec fork et sémpaphore non-nommé (non-fonctionnel).
     - Implémentation du duo "Parleur/gestionnaire" avec un sémphore nommé.
       - createur.c (crée un sémaphore nommé).
       - gestionnaire.c (fait des POST sur un sémaphore nommé).
       - parleur.c (fait des WAIT sur un sémaphore nommé).
       - destructeur.c (détruit un sémaphore nommé).
   - Mémoire partagée
     - Exemple simplissime d'utilisation de mémoire partagée.
       - mp_1.c (à compiler avec l'option -lrt).
       - mp_2.c (à compiler avec l'option -lrt).
- TD4 :
   - Énoncé du TD4.
- CM5
   - Mémoire partagée (suite et fin)
     - Solution du devoir sur le comportement par défaut de la mémoire partagée lors d'un fork.
       - sol_devoir.c
     - Exemple un peu plus évolué d'utilisation de mémoire partagée.
       - mp_maStruct.h.
       - mp_affichage.c (à compiler avec l'option -lrt).
       - mp_lecture.c (à compiler avec l'option -lrt).
   - Variable de condition
     - Programme ``decrémenteur`` avec une variable de condition.
     - Implémentation de ``Producteur/consommateur`` avec des variables de condition.
   - Barrière de synchronisation
     - Exemple simplissime d'utilisation d'une barrière de synchronisation.
- TD5
   - Énoncé du TD5.
   
- CM6
   - Tubes Unix
     - tubeFork.c
     - fifoEcriture.c
     - fifoLecture.c
     - ficoLectureMultiple.c (utilisation de la fonction select)


- TD6
  - Énoncé du TD5.


- CM7
   - Tubes Unix (suite et fin)
   - Interblocages
     - banqueVirtuelle2.c