« INFO622 : Systèmes de synchronisation et Processus » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 15 : Ligne 15 :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_1.pdf fonctions_POSIX_1.pdf.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_1.pdf fonctions_POSIX_1.pdf.]
- Entêtes de fonctions POSIX (II) :
- Entêtes de fonctions POSIX (II) :
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_2.pdf fonctions_POSIX_2.pdf.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_2.pdf fonctions_POSIX_2.pdf.]
- Entêtes de fonctions POSIX (III) :
- Entêtes de fonctions POSIX (III) :
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_3.pdf fonctions_POSIX_3.pdf.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_3.pdf fonctions_POSIX_3.pdf.]
- Entêtes de fonctions POSIX (IV) :
- Entêtes de fonctions POSIX (IV) :
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_4.pdf fonctions_POSIX_4.pdf.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_4.pdf fonctions_POSIX_4.pdf.]
- Entêtes de fonctions POSIX (V) :
- Entêtes de fonctions POSIX (V) :
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_5.pdf fonctions_POSIX_5.pdf.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix/fonctions_POSIX_5.pdf fonctions_POSIX_5.pdf.]
-->
-->


Ligne 28 : Ligne 28 :
<!--
<!--
- TP1 :
- TP1 :
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp1.pdf Énoncé du TP.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TP/tp1.pdf Énoncé du TP.]
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.tgz code fourni.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TP/info622-tp1.tgz code fourni.]


- TP2 :
- TP2 :
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp2.tgz Fichiers sources, les exercices sont en commentaire dans le fichier tp2.c]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TP/info622-tp2.tgz Fichiers sources, les exercices sont en commentaire dans le fichier tp2.c]




- TP3 :
- TP3 :
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp3.pdf Énoncé du TP.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TP/tp3.pdf Énoncé du TP.]
-->
-->
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp3.tgz Fichiers sources du simulateur.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TP/info622-tp3.tgz Fichiers sources du simulateur.]


== Déroulement (2015-2016) ==
== Déroulement (2015-2016) ==
Ligne 54 : Ligne 54 :


TD1 :
TD1 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1.pdf Énoncé du TD1 (en salle machine).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1.pdf Énoncé du TD1 (en salle machine).]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q1a.c Solution question 1a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q1a.c Solution question 1a)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q2a.c Solution question 2a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2a.c Solution question 2a)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q2c.c Solution question 2c)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2c.c Solution question 2c)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q2e.c Solution question 2e)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2e.c Solution question 2e)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q3a.c Solution question 3a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3a.c Solution question 3a)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q3d.c Solution question 3d)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3d.c Solution question 3d)]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q3e.c Solution question 3e)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3e.c 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.
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 :
TD2 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD2.pdf Énoncé du TD2.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2.pdf Énoncé du TD2.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2_q6.c Implémentation du code de la question 6.] (à compiler avec l'option -lm )
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/td2_q6.c Implémentation du code de la question 6.] (à compiler avec l'option -lm )
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2_q6-sol.c Implémentation de la solution de la question 6.] (à compiler avec les options -lm -lpthread )
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/td2_q6-sol.c 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.
<!-- 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
Pour cela il vous faudra de grands nombres premiers. En voici un : 1000000000000039723
Ligne 75 : Ligne 75 :
CM3 : Producteur/Consommateur et Sémaphores
CM3 : Producteur/Consommateur et Sémaphores
- Exemple d'utilisation d'un sémaphore non nommé par des threads (compiler avec l'option -lpthread) :
- Exemple d'utilisation d'un sémaphore non nommé par des threads (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM3/semThread.c programme ``semThread.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/semThread.c programme ``semThread.c``.]




TD3 :
TD3 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD3.pdf Énoncé du TD3.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD3.pdf Énoncé du TD3.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td3_q2.c Implémentation du code de la question 2.] (à compiler avec les options -lpthread -lcurses )
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/td3_q2.c Implémentation du code de la question 2.] (à compiler avec les options -lpthread -lcurses )
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td3_q2-sol.c Implémentation de la solution de la question 2.] (à compiler avec les options -lpthread -lcurses )
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/td3_q2-sol.c 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
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) :
- Exemple erroné d'utilisation d'un sémaphore non nommé par des processus apparenté ( fork() ) (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM3/semFork-bug.c programme ``semFork-bug.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/semFork-bug.c programme ``semFork-bug.c``.]
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/gestionnaire.c programme ``gestionnaire.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c programme ``gestionnaire.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/parleur.c programme ``parleur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/parleur.c programme ``parleur.c``.]
- Exemple simplissime de manipulation d'un entier situé en mémoire partagée (compiler avec l'option -lrt) :
- Exemple simplissime de manipulation d'un entier situé en mémoire partagée (compiler avec l'option -lrt) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_1.c programme ``mp_1.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_1.c programme ``mp_1.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_2.c programme ``mp_2.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_2.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) :
- Exemple d'utilisation d'un sémaphore non-nommé situé en mémoire partagée (compiler avec l'option -lrt) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]




TD4 :
TD4 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD4.pdf Énoncé du TD4.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4.pdf Énoncé du TD4.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/collatz.c Programme ``collatz.c`` à compléter (compilez avec les options : -lpthread -lrt.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/collatz.c Programme ``collatz.c`` à compléter (compilez avec les options : -lpthread -lrt.]


CM5 : Variables de condision et implémentation du problème "producteurs/consommateurs".
CM5 : Variables de condition et implémentation du problème "producteurs/consommateurs".
- Solution au devoir :
- Solution au devoir :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/sol_devoir.c Programme qui teste le comportement par défaut le la mémoire partagée lors d'un fork. ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/sol_devoir.c 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.
- Exemple d'utilisation d'une variable de condition.
[http://lama.univ-savoie.fr/~provencal/INFO622/prodCons_naif.c Implémentation naïve (non-fonctionnelles) ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_naif.c Implémentation naïve (non-fonctionnelles) ]
[http://lama.univ-savoie.fr/~provencal/INFO622/prodCons_sem.c Implémentation avec des sémaphores ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_sem.c Implémentation avec des sémaphores ]
[http://lama.univ-savoie.fr/~provencal/INFO622/prodCons_cnd.c Implémentation avec des variables de conditions ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_cnd.c Implémentation avec des variables de conditions ]
- Barrières de synchronisation (début)
- Barrières de synchronisation (début)


Ligne 117 : Ligne 117 :
CM6 :
CM6 :
- Barrières de synchronisation (suite et fin)
- Barrières de synchronisation (suite et fin)
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/barriere.c Programme ``barriere.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/barriere.c Programme ``barriere.c``.]
- Tubes (début)
- Tubes (début)




TD5 :
TD5 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD5.pdf Énoncé du TD5.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.]




Ligne 128 : Ligne 128 :
- Tubes (suite et fin)
- Tubes (suite et fin)
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/tubeFork.c Programme ``tubeFork.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/tubeFork.c Programme ``tubeFork.c``.]
- Exemnple d'utilisation d'un fifo entre deux processus non-apparentés.
- Exemnple d'utilisation d'un fifo entre deux processus non-apparentés.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]
Interblocages et famine
Interblocages et famine
- Exemple de programme créant un interblocage.
- Exemple de programme créant un interblocage.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]


TD6 :
TD6 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD6.pdf TD6.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD6.pdf TD6.]
TD7 :
TD7 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD7.pdf TD7.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD7.pdf TD7.]
[http://lama.univ-savoie.fr/~provencal/INFO622/TD/arrayFun.c Solution des question 1), 2a) et 2b).]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/arrayFun.c Solution des question 1), 2a) et 2b).]


Ligne 147 : Ligne 147 :
<!--
<!--
TD6 :
TD6 :
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD6.pdf Énoncé du TD6.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD6.pdf Énoncé du TD6.]


-->
-->
Ligne 154 : Ligne 154 :
CM4 : Sémaphores POSIX et mémoire partagée
CM4 : Sémaphores POSIX et mémoire partagée
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/gestionnaire.c programme ``gestionnaire.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c programme ``gestionnaire.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/parleur.c programme ``parleur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/parleur.c programme ``parleur.c``.]
- Mémoire partagée (compiler avec l'option -lrt) :
- Mémoire partagée (compiler avec l'option -lrt) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]


CM5 : Variables de condition et barrières de synchronisation
CM5 : Variables de condition et barrières de synchronisation
- Exemple producteur/consommateur implémenté avec des sémaphores.
- Exemple producteur/consommateur implémenté avec des sémaphores.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_sem.c Programme ``prodCons_sem.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/prodCons_sem.c Programme ``prodCons_sem.c``.]
- Exemple producteur/consommateur implémenté avec des variables de conditions et un mutex.
- Exemple producteur/consommateur implémenté avec des variables de conditions et un mutex.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_cnd.c Programme ``prodCons_cnd.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/prodCons_cnd.c Programme ``prodCons_cnd.c``.]
- Exemple d'utilisation d'une barrière de synchronisation.
- Exemple d'utilisation d'une barrière de synchronisation.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/barriere.c Programme ``barriere.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/barriere.c Programme ``barriere.c``.]


CM6 : Tubes
CM6 : Tubes
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/tubeFork.c Programme ``tubeFork.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/tubeFork.c Programme ``tubeFork.c``.]
- Exemnple d'utilisation d'un fifo entre deux processus non-apparentés.
- Exemnple d'utilisation d'un fifo entre deux processus non-apparentés.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]




Ligne 182 : Ligne 182 :
CM7 : Interblocages et famine
CM7 : Interblocages et famine
- Exemple de programme créant un interblocage.
- Exemple de programme créant un interblocage.
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]




Ligne 299 : Ligne 299 :




<!--


== Matériel supplémentaire ==
== Matériel supplémentaire ==
Notes de cours prises pas des étudiants :
Notes de cours prises pas des étudiants :
[http://lama.univ-savoie.fr/~provencal/INFO622/info622_notes_etudiants.pdf Notes de cours d'étudiants ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622_notes_etudiants.pdf Notes de cours d'étudiants ]

-->

Version du 30 novembre 2015 à 09:15

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

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