« 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
Ligne 10 : Ligne 10 :


== Documentation remise en classes ==
== 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-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-2.pdf Entêtes de fonctions POSIX (II).]
Ligne 15 : Ligne 16 :
- [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-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).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/fct_posix-5.pdf Entêtes de fonctions POSIX (V).]
-->



== TP ==
== TP ==
À venir
<!--
- TP1 :
- TP1 :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tp1.pdf Énoncé du TP.]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tp1.pdf Énoncé du TP.]
Ligne 28 : Ligne 31 :
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/tp3.pdf Énoncé du TP.]
[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/enseignement/INFO622/info622-tp3.tgz Fichiers sources du simulateur.]
-->


== Déroulement (2016-2017) ==

- CM1 :
- 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``.]

= Archives =


== Déroulement (2015-2016) ==
== Déroulement (2015-2016) ==
Ligne 42 : Ligne 58 :
- TD1 :
- 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.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/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/q2a.c Solution question 2a)]
Ligne 49 : Ligne 66 :
- [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/q3d.c Solution question 3d)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/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 :
- CM2 :
Ligne 59 : Ligne 77 :
- TD2 :
- 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.pdf Énoncé du TD2.]
<!--
- [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_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]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_para.c Code question 4, version parallèle boguée]
Ligne 64 : Ligne 83 :
- [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_c.c Solution de 4c)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_f.c Solution de 4f)]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD2/q4_f.c Solution de 4f)]
-->


- CM3 :
- CM3 :
Ligne 77 : Ligne 97 :
- TD3 :
- 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.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/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.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).]
- [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 :
- CM4 :
Ligne 98 : Ligne 120 :
- TD4 :
- 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.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/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/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).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD4/q3.c Solution de la question 3 (fichier source).]
-->


- CM5
- CM5
Ligne 130 : Ligne 154 :
- TD6
- TD6
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD5.pdf Énoncé du TD5.]
<!--
- [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_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/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/enseignement/INFO622/TD/q2.c Solution question 2.]
-->




Ligne 140 : Ligne 166 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/banqueVirtuelle2.c banqueVirtuelle2.c]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/banqueVirtuelle2.c banqueVirtuelle2.c]


<!--
= Archives =

=== Déroulement (2014-2015) ===
=== Déroulement (2014-2015) ===


Ligne 246 : Ligne 271 :
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/TD7.pdf 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).]
[http://lama.univ-savoie.fr/~provencal/enseignement/INFO622/TD/arrayFun.c Solution des question 1), 2a) et 2b).]
-->

Version du 8 janvier 2017 à 14:39

  • Responsable pour 2015--2016: Xavier Provençal
  • Intervenants : Xavier Provençal (CM/TD/TP), Rodolphe Lepigre (TD/TP)


Ouvrage de référence

  1. Andrew Tanenbaum, Systèmes d'exploitation. Principalement les chapitres 2 et 6.


Documentation remise en classes

TP

À venir


Déroulement (2016-2017)

- CM1 : 
   - Introduction à la multiprogrammation
   - Condition de concurrence
   - Section critique.
   - Banque virtuelle : exemple de condition de concurrence 
     - programme ``banqueVirtuelle.c``.

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


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

-->