« INFO622 : Systèmes de synchronisation et Processus » : différence entre les versions
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 |
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
- 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).