INFO622 : Systèmes de synchronisation et Processus

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche

Ouvrage de référence

  1. Andrew Tanenbaum, Systèmes d'exploitation

Documentation remise en classes

- Entêtes de fonctions POSIX (I) :
   fonctions_POSIX_1.pdf.
- Entêtes de fonctions POSIX (II) :
   fonctions_POSIX_2.pdf.
- Entêtes de fonctions POSIX (III) :
   fonctions_POSIX_3.pdf.
- Entêtes de fonctions POSIX (IV) :
   fonctions_POSIX_4.pdf.
- Entêtes de fonctions POSIX (V) :
   fonctions_POSIX_5.pdf.


Systèmes de synchronisation et processus

TP

- TP1 : 
   Énoncé du TP.
   code fourni.

Déroulement (2013-2014)

CM1 : Introduction à la multiprogrammation, condition de concurrence et section critique.

- Banque virtuelle : exemple de condition de concurrence.
   programme ``banqueVirtuelle.c``.


TD1 :

- Énoncé du TD1 (effectuée en salle machine).
   - Solution question 1a)
   - Solution question 2a)
   - Solution question 2b)
   - 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 )
   Utilisez la commande "time" pour observer un gain de vitesse sur une machine à plusieurs coeurs. 
   Pour cela il vous faudra de grands nombres premiers. En voici un : 1000000000000039723

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``.
- Exemple erroné d'utilisation d'un sémaphore non nommé par des processus apparenté ( fork() ) (compiler avec l'option -lpthread) :
   programme ``semFork-bug.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

- 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.

CM5 : Variables de condision 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 

CM6 : Tubes

- 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``.


TD5 :

- Énoncé du TD5.


CM7 : Interblocages et famine

- Exemple de programme créant un interblocage.
   Programme ``banqueVirtuelle2.c``.


TD6 :

- Énoncé du TD6.