« 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 49 : Ligne 49 :
=== Déroulement (2014-2015) ===
=== Déroulement (2014-2015) ===


CM1 : Introduction à la multiprogrammation, condition de concurrence et section critique.
- Banque virtuelle : exemple de condition de concurrence.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM1/banqueVirtuelle.c programme ``banqueVirtuelle.c``.]


- CM1 : Introduction à la multiprogrammation, condition de concurrence et section critique.
- Banque virtuelle : exemple de condition de concurrence.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM1/banqueVirtuelle.c programme ``banqueVirtuelle.c``.]
- TD1 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1.pdf Énoncé du TD1 (en salle machine).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q1a.c Solution question 1a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2a.c Solution question 2a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2c.c Solution question 2c)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2e.c Solution question 2e)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3a.c Solution question 3a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3d.c Solution question 3d)]
- [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.
- TD2 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2.pdf Énoncé du TD2.]
- [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/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.
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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/semThread.c programme ``semThread.c``.]
- TD3 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD3.pdf Énoncé du TD3.]
- [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/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
- 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/enseignement/INFO622/CM3/semFork-bug.c programme ``semFork-bug.c``.]
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c programme ``gestionnaire.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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_1.c programme ``mp_1.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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]
- TD4 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4.pdf Énoncé du TD4.]
- [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 condition et implémentation du problème "producteurs/consommateurs".
- Solution au devoir :
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_naif.c Implémentation naïve (non-fonctionnelles) ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_sem.c Implémentation avec des sémaphores ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_cnd.c Implémentation avec des variables de conditions ]
- Barrières de synchronisation (début)
- CM6 :
- Barrières de synchronisation (suite et fin)
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/barriere.c Programme ``barriere.c``.]
- Tubes (début)
- TD5 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.]
- CM7 :
- Tubes (suite et fin)
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]
Interblocages et famine
- Exemple de programme créant un interblocage.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]
- TD6 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD6.pdf TD6.]
- TD7 :

- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD7.pdf TD7.]

[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/arrayFun.c Solution des question 1), 2a) et 2b).]
TD1 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1.pdf Énoncé du TD1 (en salle machine).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q1a.c Solution question 1a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2a.c Solution question 2a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2c.c Solution question 2c)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q2e.c Solution question 2e)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3a.c Solution question 3a)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3d.c Solution question 3d)]
- [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.

TD2 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2.pdf Énoncé du TD2.]
- [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/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.
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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/semThread.c programme ``semThread.c``.]


TD3 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD3.pdf Énoncé du TD3.]
- [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/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
- 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/enseignement/INFO622/CM3/semFork-bug.c programme ``semFork-bug.c``.]
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c programme ``gestionnaire.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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_1.c programme ``mp_1.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) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]


TD4 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4.pdf Énoncé du TD4.]
- [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 condition et implémentation du problème "producteurs/consommateurs".
- Solution au devoir :
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_naif.c Implémentation naïve (non-fonctionnelles) ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_sem.c Implémentation avec des sémaphores ]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_cnd.c Implémentation avec des variables de conditions ]
- Barrières de synchronisation (début)


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


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


CM7 :
- Tubes (suite et fin)
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]
Interblocages et famine
- Exemple de programme créant un interblocage.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.]

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


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

-->

<!--
CM4 : Sémaphores POSIX et mémoire partagée
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c programme ``createur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c programme ``destructeur.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c programme ``gestionnaire.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/parleur.c programme ``parleur.c``.]
- Mémoire partagée (compiler avec l'option -lrt) :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h fichier entête ``mp_maStruct.h``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c programme ``mp_lecture.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
- Exemple producteur/consommateur implémenté avec des sémaphores.
[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.
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM5/barriere.c Programme ``barriere.c``.]

CM6 : Tubes
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils.
[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.
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoEcriture.c Programme ``fifoEcriture.c``.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.]



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


-->


<!--
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD2.pdf TD2.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/rsa.c programme ``rsa.c``.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/exCleRSA.txt exemples de clés RSA valides au format ( n, d, e ) ``exCleRSA.txt``.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2-q1-solution.c Solution question 1.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2-q2-solution.c Solution question 2.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2-q3-solution.c Solution question 3.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD3/poste.c TD3 - Programme ``poste.c``]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD3/makefile Fichier ``makefile`` pour compiler ``poste.c``]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD4.pdf TD4.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD5.pdf TD5.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD6.pdf TD6.]
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD7.pdf TD7.]


TP :
- TP1 : Tri rapide en parallèle
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp1.pdf Énoncé du TP1.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.tgz Archive contenant les sources nécessaires au TP1 ( format tgz ).]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.zip Archive contenant les sources nécessaires au TP1 ( format zip ).]
- TP2 : Tubes
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp2.tar Archive contenant les sources nécessaires au TP2.]
- TP3 : Simulation de physique
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp3.pdf Énonpcé du TP3.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp3_code.tar Sources nécessaires à la réalisation du TP3.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp3_donnees.tar Données pour exécuter le programme du TP3.]
-->

<!--
CM4 : Sémaphores POSIX et mémoire partagée
- Entêtes de fonctions POSIX (III) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/fonctions_POSIX_III.pdf fonctions_POSIX_3.pdf.]
- Sémaphores non nommés avec threads (compiler avcec l'i:
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/semThread.c programme ``semThread.c``.]
- 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/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/INFO622/CM4/parleur.c programme ``parleur.c``.]
- Mémoire partagée (compiler avec l'option -lrt) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_lecture.c programme ``mp_lecture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.]

CM5 : Interblocages
- Banque virtuelle 2 : exemple d'interblocage (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/banqueVirtuelle2.c programme ``banqueVirtuelle.c``.]

CM6 : Variables de condition et barrières de synchronisation
- Implémentation du problème producteur/consommateur avec variables de condition (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/prodCons_cnd.c programme ``prodCons_cnd.c``.]
- Exemple simple d'utilisation d'une barrière de synchronisation (compiler avec l'option -lpthread) :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/barriere.c programme ``barriere.c``.]

CM 7 : Tubes (pipe et fifo), fonction select
- Utilisation typique d'un tube non-nommé (pipe) par un père et son fils :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/tubeFork.c programme ``tubeFork.c``.]
- Exemple de programmes communicant à l'aide d'une tube nommé (fifo), créez d'abord la fifo avec la commande ``mkfifo`` :
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/fifoLecture.c programme ``fifoLecture.c``.]
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/fifoEcriture.c programme ``fifoEcriture.c``.]
- Exemple d'utilisation de la fonction select pour surveiller en même temps les tubres "fifo1" et "fifo2" ::w
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/fifo2Lecture.c programme ``fifo2Lecture.c``.]

TD :
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1.pdf Première feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD2.pdf Deuxième feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD3.pdf Troisième feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD4.pdf Quatrième feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD5.pdf Cinquième feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD6.pdf Sixième feuille de TD.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD7.pdf Septième feuille de TD.]




Exercices personnels
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/devoir1.pdf Exercice personnel #1.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/sol_devoir1.c Une solution de l'exercice personnel #1.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/devoir2.pdf Exercice personnel #2.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/sol_devoir2.c Une solution de l'exercice personnel #2.]

Entêtes de fonctions
- [ http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_1.pdf Fork et création de threads.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_2.pdf Sémaphores et mutex.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_3.pdf Mémoire partagée.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_4.pdf Variables de condition et barrières de synchronisation.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_5.pdf Tube.]

TP1 : Tri rapide en parallel
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/tp1.pdf Énoncé du TP.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/genAleat.c Programme pour la génération de suite de nombres.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/testTri.sh script permettant de comparer votre tri à la commande sort.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/triRapide.h Entêtes de fonctions relatives au tri rapide.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/triRapide.c Version séquentielle du tri rapide, à modifier.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/tri.c Lis des nombres sur l'entrée standard, appele triRapide et affiche le résultat. ]

TP2 : Implémentation de tubes simplifiés
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP2/info622-tp2.c Fichier source principal et énoncé du TP.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP2/monTube.h Entêtes de fonctions relatives aux tube monTube.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP2/monTube.c Implémentation des fonctions relatives aux tubes monTube.]

TP3 : Pizzéria
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/tp3.pdf Énoncé du TP.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/clients.o Fichier objet pour recompiler le programme 'clients'.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/synchroPizza.h Entêtes des fonctions utilisées pour préparer les pizzas.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/synchroPizza.c Implémentation des fonctions utilisées pour préparer les pizzas.]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/pizzeria.c Source du programme implémentant une pizzéria virtuelle (à compléter).]
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/makefile Makefile (optionnel).]
-->


<!--

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

-->

Version du 30 novembre 2015 à 09:20

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