« 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 |
||
(130 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
* Responsable pour |
* Responsable pour 2015--2016: [http://www.lama.univ-savoie.fr/~provencal Xavier Provençal] |
||
* Xavier Provençal (CM/TD/TP) |
* Intervenants : Xavier Provençal (CM/TD/TP), Rodolphe Lepigre (TD/TP) |
||
== Ouvrage de référence == |
== Ouvrage de référence == |
||
# Andrew Tanenbaum, Systèmes d'exploitation |
# Andrew Tanenbaum, Systèmes d'exploitation. Principalement les chapitres 2 et 6. |
||
== |
== Examen de 1ere session == |
||
- Entêtes de fonctions POSIX (I) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_1.pdf fonctions_POSIX_1.pdf.] |
|||
- Entêtes de fonctions POSIX (II) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_2.pdf fonctions_POSIX_2.pdf.] |
|||
- Entêtes de fonctions POSIX (III) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_3.pdf fonctions_POSIX_3.pdf.] |
|||
- Entêtes de fonctions POSIX (IV) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/fct_posix/fonctions_POSIX_4.pdf fonctions_POSIX_4.pdf.] |
|||
<!-- |
|||
- 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/corrige.pdf Examen de 1ere session avec solution.] |
|||
== Documentation remise à l'examen == |
|||
== Systèmes de synchronisation et processus == |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_POSIX_resume.pdf Entêtes de fonctions POSIX -- Aide pour l'examen.] |
|||
== Documentation remise en classes == |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-1.pdf Entêtes de fonctions POSIX (I).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-2.pdf Entêtes de fonctions POSIX (II).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-3.pdf Entêtes de fonctions POSIX (III).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-4.pdf Entêtes de fonctions POSIX (IV).] |
|||
<!-- |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-5.pdf Entêtes de fonctions POSIX (V).] |
|||
--> |
|||
== TP == |
== TP == |
||
* '''TP0''' : Écrire un programme qui répond à la question : quel est le comportement par défaut de la mémoire partagée (obtenue par : shm_open + ftruncate + mmap) lors que le processus effectue un '''fork''' ? Est-elle copiée ou est-elle partagée entre les processus père et fils ? Inscrivez votre réponse à la question en commentaire au début du fichier. |
|||
- TP1 : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp1.pdf Énoncé du TP.] |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.tgz code fourni.] |
|||
- TP1 : Parallélisation du tri rapide |
|||
== Déroulement (2013-2014) == |
|||
- Un peu de documentation sur le tri rapide : |
|||
- Wikipedia : https://fr.wikipedia.org/wiki/Tri_rapide |
|||
- OpenClassRooms : https://openclassrooms.com/courses/le-tri-rapide-qsort |
|||
- Un petit vidéo : https://www.youtube.com/watch?v=xcyDSLSkb0k |
|||
- TP1 : |
|||
CM1 : Introduction à la multiprogrammation, condition de concurrence et section critique. |
|||
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-tp1.pdf Énoncé du TP.] |
|||
- Banque virtuelle : exemple de condition de concurrence. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-tp1.tgz code fourni.] |
||
- TP2 : |
|||
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-tp2.tgz Fichiers sources, les exercices sont en commentaire dans le fichier tp2.c] |
|||
- TP3 : |
|||
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tp3.pdf Énoncé du TP.] |
|||
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-tp3.tgz Fichiers sources du simulateur.] |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q2a.c Solution question 2a)] |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1-sol/q2b.c Solution question 2b)] |
|||
- [http://lama.univ-savoie.fr/~provencal/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/INFO622/TD/TD1-sol/q3e.c Solution question 3e)] |
|||
== Déroulement (2016-2017) == |
|||
- CM1 : Multiprogrammation ( [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-pres-intro.pdf Présentation d'introduction (pdf) ] ) |
|||
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. |
|||
- Introduction à la multiprogrammation |
|||
- Condition de concurrence |
|||
- 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/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 |
|||
TD2 : |
|||
- Commandes : fork, waitpid, wait. |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD2.pdf Énoncé du TD2.] |
|||
- Threads, définition, principe, fonctionnement, librairie pthread. |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/td2_q6.c Implémentation du code de la question 6.] (à compiler avec l'option -lm ) |
|||
- Méthodes d'exclusion mutuelle (partie 1). |
|||
- [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 ) |
|||
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 |
|||
- TD2 : |
|||
CM3 : Producteur/Consommateur et Sémaphores |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD2.pdf Énoncé du TD2.] |
|||
- Exemple d'utilisation d'un sémaphore non nommé par des threads (compiler avec l'option -lpthread) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_seq.c Code question 4, version séquentielle] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_para.c Code question 4, version parallèle bogué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/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_b.c Solution de 4b)] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_c.c Solution de 4c)] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_f.c Solution de 4f)] |
|||
- CM3 : |
|||
- Mécanismes d'exclusion mutuelle (deuxième partie) |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD3.pdf Énoncé du TD3.] |
|||
- Mutex et sémaphores (principe) |
|||
- [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 ) |
|||
- Sémaphores POSIX anonymes. |
|||
- [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/CM3/verrou.c Programme verrou.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/mutex.c Programme mutex.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/parleurCC.c Programme ParleurCC.c (avec condition de concurrence)] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/parleurSem.c Programme ParleurSem.c (sans condition de concurrence)] |
|||
- TD3 : |
|||
CM4 : Sémaphores nommés et mémoire partagée |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td3.pdf Énoncé du TD3.] |
|||
- 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``.] |
|||
- 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/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/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/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.] |
|||
- CM4 : |
|||
- Mécanismes d'exclusion mutuelle (deuxième partie) |
|||
- [http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD4.pdf Énoncé du TD4.] |
|||
- Sémaphore POSIX nommés. |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/createur.c Programme createur.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/gestionnaire.c Programme gestionnaire.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/parleur.c Programme parleur.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/destructeur.c Programme destructeur.c] |
|||
- Mémoire partagée |
|||
- Principes de base : shm_open, ftrunctate, mmap. |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/mp_maStruct.h Fichier entête mp_maStruct.h] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/mp_lecture.c Programme mp_lecture.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/mp_affichage.c Programme mp_affichage.c] |
|||
- TD4 : |
|||
CM5 : Variables de condision et implémentation du problème "producteurs/consommateurs". |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td4.pdf Énoncé du TD4.] |
|||
- Solution au devoir : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td4_q3.c Solution de l'exo 3.] |
||
- Exemple d'utilisation d'une variable de condition. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_naif.c Implémentation naïve (non-fonctionnelles) ] |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_sem.c Implémentation avec des sémaphores ] |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_cnd.c Implémentation avec des variables de conditions ] |
|||
- CM5 : |
|||
- Barrières de synchronisation |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/barriere.c Programme barriere.c] |
|||
- Communication inter-processus |
|||
- Retour sur le problème ``producteur/consommateur`` : [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_naif.c prodCons_naif.c ] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_sem.c prodCons_sem.c ] |
|||
- Communication inter-processus |
|||
- Schémas de base |
|||
- Descripteurs de fichier |
|||
- Appels systèmes : '''read''' et '''write''' |
|||
- Tubes UNIX (première partie) |
|||
- Principes de bases |
|||
- TD5 : |
|||
<!-- |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td5.pdf Énoncé du TD5.] |
|||
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/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_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/INFO622/CM4/mp_affichage.c programme ``mp_affichage.c``.] |
|||
- CM6 : |
|||
CM5 : Variables de condition et barrières de synchronisation |
|||
- Tubes UNIX (suite et fin) |
|||
- Exemple producteur/consommateur implémenté avec des sémaphores. |
|||
- Tubes nommés et non-nommés |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/prodCons_sem.c Programme ``prodCons_sem.c``.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tubeFork.c Programme tubeFork.c] |
|||
- Exemple producteur/consommateur implémenté avec des variables de conditions et un mutex. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoLecture.c Programme fifoLecture.c] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoEcriture.c Programme fifoEcriture.c] |
|||
- Exemple d'utilisation d'une barrière de synchronisation. |
|||
- Fonction '''select''' |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM5/barriere.c Programme ``barriere.c``.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoLectureMultiple.c Programme fifoLectureMultiple.c] |
|||
- TD6 : |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td6.pdf Énoncé du TD6.] |
|||
- Exemple d'utilisation d'un tube non-nommé entre processus père et fils. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td6-q1-sol.c Solution de la question 1 (compiler avec option '''-lpthread''')] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td6-q1-sol-bis.c Solution alternative de la question 1 (compiler avec option '''-lrt''')] |
|||
- Exemnple d'utilisation d'un fifo entre deux processus non-apparentés. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/td6-q2.c Solution de la question 2] |
||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/fifoLecture.c Programme ``fifoLecture.c``.] |
|||
- CM7 |
|||
- Interblocages |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/banqueVirtuelle2.c banqueVirtuelle2.c] |
|||
- Trace 2D |
|||
- TD7 |
|||
CM7 : Interblocages et famine |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/info622-td7.pdf Énoncé du TD7.] |
|||
- Exemple de programme créant un interblocage. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM7/banqueVirtuelle2.c Programme ``banqueVirtuelle2.c``.] |
|||
--> |
|||
= Archives = |
|||
== Déroulement (2015-2016) == |
|||
<!-- |
|||
- [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.] |
|||
- CM1 : |
|||
- Introduction à la multiprogrammation |
|||
- TP1 : Tri rapide en parallèle |
|||
- Condition de concurrence |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/tp1.pdf Énoncé du TP1.] |
|||
- Section critique. |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.tgz Archive contenant les sources nécessaires au TP1 ( format tgz ).] |
|||
- Banque virtuelle : exemple de condition de concurrence |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP/info622-tp1.zip Archive contenant les sources nécessaires au TP1 ( format zip ).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM1/banqueVirtuelle.c programme ``banqueVirtuelle.c``.] |
|||
- 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.] |
|||
--> |
|||
- TD1 : |
|||
<!-- |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1.pdf Énoncé du TD1 (en salle machine).] |
|||
CM4 : Sémaphores POSIX et mémoire partagée |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q1a.c Solution question 1a)] |
|||
- Entêtes de fonctions POSIX (III) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [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)] |
|||
- Sémaphores non nommés avec threads (compiler avcec l'i: |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [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)] |
|||
- Sémaphores nommés avec processus distincs (compiler avec l'option -lpthread) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3d.c Solution question 3d)] |
||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD1-sol/q3e.c Solution question 3e)] |
||
[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``.] |
|||
- CM2 : |
|||
CM6 : Variables de condition et barrières de synchronisation |
|||
- Threads et processus. |
|||
- Implémentation du problème producteur/consommateur avec variables de condition (compiler avec l'option -lpthread) : |
|||
- Ressources physiques et espace d'adressage. |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/CM6/prodCons_cnd.c programme ``prodCons_cnd.c``.] |
|||
- Commandes fork, wait, pthread_create, pthread_join. |
|||
- Exemple simple d'utilisation d'une barrière de synchronisation (compiler avec l'option -lpthread) : |
|||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM2/zombies.c programme ``zombies.c``.] |
||
- Mécanismes d'exclusion mutuelle (première partie). |
|||
- TD2 : |
|||
CM 7 : Tubes (pipe et fifo), fonction select |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2.pdf Énoncé du TD2.] |
|||
- 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``.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_seq.c Code question 4, version séquentielle] |
|||
- 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/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_para.c Code question 4, version parallèle boguée] |
||
[http://lama.univ-savoie.fr/~provencal/INFO622/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_b.c Solution de 4b)] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_c.c Solution de 4c)] |
|||
- 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/ |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_f.c Solution de 4f)] |
||
--> |
|||
- CM3 : |
|||
- Mécanismes d'exclusion mutuelle (deuxième partie) |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD1.pdf Première feuille de TD.] |
|||
- Mutex et sémaphores |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD2.pdf Deuxième feuille de TD.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/verrou.c Programme verrou.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/mutex.c Programme mutex.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/parleurCC.c Programme ParleurCC.c (avec condition de concurrence)] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM3/parleurSem.c Programme ParleurSem.c (sans condition de concurrence)] |
|||
- Communication interprocessus |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TD/TD7.pdf Septième feuille de TD.] |
|||
- Problème "producteurs/consommateurs" |
|||
- 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_q1.c Solution de la question q1 (fichier source).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prod_cons.c Implémentation du problème ``producteurs/consommateurs`` (avec attente active et conditions de concurrence).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prod_cons_sol.c Solution au problème ``producteurs/consommateurs`` (avec n producteur et m consommataeurs, sans conditions de concurrence).] |
|||
--> |
|||
- CM4 : |
|||
- Sémaphores nommés vs non-nommés |
|||
- Implémentation du duo "Parleur/gestionnaire" avec un sémaphore non-nommé. |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/semThread.c Parleur/gestionnaire avec threads et sémaphore non-nommé.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/semForkBobo.c Parleur/gestionnaire avec fork et sémpaphore non-nommé (non-fonctionnel).] |
|||
- Implémentation du duo "Parleur/gestionnaire" avec un sémphore nommé. |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/createur.c createur.c (crée un sémaphore nommé).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/gestionnaire.c gestionnaire.c (fait des POST sur un sémaphore nommé).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/parleur.c parleur.c (fait des WAIT sur un sémaphore nommé).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/destructeur.c destructeur.c (détruit un sémaphore nommé).] |
|||
- Mémoire partagée |
|||
- Exemple simplissime d'utilisation de mémoire partagée. |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_1.c mp_1.c (à compiler avec l'option -lrt).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_2.c mp_2.c (à compiler avec l'option -lrt).] |
|||
- TD4 : |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4.pdf Énoncé du TD4.] |
|||
<!-- |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4/q1.c Solution de la question 1 (fichier source).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4/q2.c Solution de la question 2 (fichier source).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4/q3.c Solution de la question 3 (fichier source).] |
|||
--> |
|||
- CM5 |
|||
Exercices personnels |
|||
- Mémoire partagée (suite et fin) |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/devoir1.pdf Exercice personnel #1.] |
|||
- Solution du devoir sur le comportement par défaut de la mémoire partagée lors d'un fork. |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/sol_devoir1.c Une solution de l'exercice personnel #1.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/sol_devoir.c sol_devoir.c] |
|||
- Exemple un peu plus évolué d'utilisation de mémoire partagée. |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/exo/sol_devoir2.c Une solution de l'exercice personnel #2.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_maStruct.h mp_maStruct.h.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_affichage.c mp_affichage.c (à compiler avec l'option -lrt).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/CM4/mp_lecture.c mp_lecture.c (à compiler avec l'option -lrt).] |
|||
- Variable de condition |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/decrementeur_varcond.c Programme ``decrémenteur`` avec une variable de condition.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/prodCons_cnd.c Implémentation de ``Producteur/consommateur`` avec des variables de condition.] |
|||
- Barrière de synchronisation |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/barriere.c Exemple simplissime d'utilisation d'une barrière de synchronisation.] |
|||
- TD5 |
|||
Entêtes de fonctions |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.] |
|||
- [ 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.] |
|||
- CM6 |
|||
TP1 : Tri rapide en parallel |
|||
- Tubes Unix |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP1/tp1.pdf Énoncé du TP.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tubeFork.c tubeFork.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoEcriture.c fifoEcriture.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoLecture.c fifoLecture.c] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fifoLectureMultiple.c ficoLectureMultiple.c (utilisation de la fonction select)] |
|||
- [ 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.] |
|||
- TD6 |
|||
TP3 : Pizzéria |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.] |
|||
<!-- |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/clients.o Fichier objet pour recompiler le programme 'clients'.] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/q1_v1.c Solution question 1 (Version sémaphores).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/q1_v2.c Solution question 1 (Version attente active).] |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/q2.c Solution question 2.] |
|||
- [ http://lama.univ-savoie.fr/~provencal/INFO622/TP3/makefile Makefile (optionnel).] |
|||
--> |
--> |
||
- CM7 |
|||
- Tubes Unix (suite et fin) |
|||
- Interblocages |
|||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/banqueVirtuelle2.c banqueVirtuelle2.c] |
Dernière version du 20 juin 2017 à 09:36
- Responsable pour 2015--2016: Xavier Provençal
- Intervenants : Xavier Provençal (CM/TD/TP), Rodolphe Lepigre (TD/TP)
Ouvrage de référence
- Andrew Tanenbaum, Systèmes d'exploitation. Principalement les chapitres 2 et 6.
Examen de 1ere session
- Examen de 1ere session avec solution.
Documentation remise à l'examen
- Entêtes de fonctions POSIX -- Aide pour l'examen.
Documentation remise en classes
- Entêtes de fonctions POSIX (I). - Entêtes de fonctions POSIX (II). - Entêtes de fonctions POSIX (III). - Entêtes de fonctions POSIX (IV).
TP
- TP0 : Écrire un programme qui répond à la question : quel est le comportement par défaut de la mémoire partagée (obtenue par : shm_open + ftruncate + mmap) lors que le processus effectue un fork ? Est-elle copiée ou est-elle partagée entre les processus père et fils ? Inscrivez votre réponse à la question en commentaire au début du fichier.
- TP1 : Parallélisation du tri rapide - Un peu de documentation sur le tri rapide : - Wikipedia : https://fr.wikipedia.org/wiki/Tri_rapide - OpenClassRooms : https://openclassrooms.com/courses/le-tri-rapide-qsort - Un petit vidéo : https://www.youtube.com/watch?v=xcyDSLSkb0k
- TP1 : Énoncé du TP. code fourni.
- TP2 : Fichiers sources, les exercices sont en commentaire dans le fichier tp2.c
- TP3 : Énoncé du TP. Fichiers sources du simulateur.
Déroulement (2016-2017)
- CM1 : Multiprogrammation ( Présentation d'introduction (pdf) ) - 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 (partie 1).
- TD2 : - Énoncé du TD2. - Code question 4, version séquentielle - Code question 4, version parallèle boguée - Solution de 4b) - Solution de 4c) - Solution de 4f)
- CM3 : - Mécanismes d'exclusion mutuelle (deuxième partie) - Mutex et sémaphores (principe) - Sémaphores POSIX anonymes. - Programme verrou.c - Programme mutex.c - Programme ParleurCC.c (avec condition de concurrence) - Programme ParleurSem.c (sans condition de concurrence)
- TD3 : - Énoncé du TD3.
- CM4 : - Mécanismes d'exclusion mutuelle (deuxième partie) - Sémaphore POSIX nommés. - Programme createur.c - Programme gestionnaire.c - Programme parleur.c - Programme destructeur.c - Mémoire partagée - Principes de base : shm_open, ftrunctate, mmap. - Fichier entête mp_maStruct.h - Programme mp_lecture.c - Programme mp_affichage.c
- TD4 : - Énoncé du TD4. - Solution de l'exo 3.
- CM5 : - Barrières de synchronisation - Programme barriere.c - Communication inter-processus - Retour sur le problème ``producteur/consommateur`` : prodCons_naif.c prodCons_sem.c - Communication inter-processus - Schémas de base - Descripteurs de fichier - Appels systèmes : read et write - Tubes UNIX (première partie) - Principes de bases
- TD5 : - Énoncé du TD5.
- CM6 : - Tubes UNIX (suite et fin) - Tubes nommés et non-nommés - Programme tubeFork.c - Programme fifoLecture.c - Programme fifoEcriture.c - Fonction select - Programme fifoLectureMultiple.c
- TD6 : - Énoncé du TD6. - Solution de la question 1 (compiler avec option -lpthread) - Solution alternative de la question 1 (compiler avec option -lrt) - Solution de la question 2
- CM7 - Interblocages - banqueVirtuelle2.c - Trace 2D
- TD7 - Énoncé du TD7.
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