SEPC-S1 : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Séance 4)
(Minimum vital)
 
(89 révisions intermédiaires par 6 utilisateurs non affichées)
Ligne 2 : Ligne 2 :
  
 
Page ensiwiki du cours de '''Système d'Exploitation et Programmation Concurrente, semestre 1'''.
 
Page ensiwiki du cours de '''Système d'Exploitation et Programmation Concurrente, semestre 1'''.
 +
  
 
Vous trouverez sur cette page:
 
Vous trouverez sur cette page:
Ligne 11 : Ligne 12 :
 
==Supports de cours (premier et second semestre)==
 
==Supports de cours (premier et second semestre)==
 
* Cours 1 : Introduction  [[Media:C1-Introduction.pdf|Transparents]] [[Média:C1.pdf|résumé]] ([http://framaforms.org/temps-dexecution-1484087635 qcm fibo])
 
* Cours 1 : Introduction  [[Media:C1-Introduction.pdf|Transparents]] [[Média:C1.pdf|résumé]] ([http://framaforms.org/temps-dexecution-1484087635 qcm fibo])
 +
Vidéos de la séance du 9 septembre 2020 : [https://videos.univ-grenoble-alpes.fr/video/11424-sepc-cours-1-partie-1/ partie 1], [https://youtu.be/Pq9Ii6xpR6M partie 2], [https://videos.univ-grenoble-alpes.fr/video/11433-sepc-cours-1-partie-3/ partie 3]
 
* Cours 2 : Processus [[Média:C2-Processus.pdf|Transparents]] [[Média:C2.pdf|résumé]]
 
* Cours 2 : Processus [[Média:C2-Processus.pdf|Transparents]] [[Média:C2.pdf|résumé]]
 +
Vidéos de la séance du 16 septembre 2020 : [https://videos.univ-grenoble-alpes.fr/video/11583-sepc-cours-2-partie-1/ partie 1],[https://videos.univ-grenoble-alpes.fr/video/11584-sepc-cours-2-partie-2/ partie 2] [https://videos.univ-grenoble-alpes.fr/video/11586-sepc-cours-2-partie-3/ partie 3]
 
* Cours 3 : Mécanismes de synchronisation et réalisation des processus [[Média:C3-Realisationprocessus.pdf|Transparents]] [[Média:C3_0809R.pdf|résumé]]
 
* Cours 3 : Mécanismes de synchronisation et réalisation des processus [[Média:C3-Realisationprocessus.pdf|Transparents]] [[Média:C3_0809R.pdf|résumé]]
* Cours 4 : L'ordonnancement (no slides yet)
+
Vidéos de la séance du 23 septembre 2020 : [http://videos.univ-grenoble-alpes.fr/video/11853-sepc-cours-3-partie-1/ partie 1],[https://chamilo.grenoble-inp.fr/main/document/showinframes.php?cidReq=ENSIMAG4MMSEPC&id_session=0&gidReq=0&gradebook=0&origin=&id=967091 Partie 1 sur Chamilo], [https://videos.univ-grenoble-alpes.fr/video/11755-sepc-cours-3-partie-2/ partie 2]
 +
 
 +
Vidéos de la séance du 30 septembre 2020 : [https://videos.univ-grenoble-alpes.fr/video/11874-sepc-cours-4-partie-1/ Partie 1], [https://videos.univ-grenoble-alpes.fr/video/11875-sepc-cours-4-partie-2/ Partie 2], [https://videos.univ-grenoble-alpes.fr/video/11929-sepc-cours-4-partie-3/ Partie 3]
 +
 
 +
Vidéos de la séance du 6 octobre 2020 : [https://videos.univ-grenoble-alpes.fr/video/12051-sepc-cours-5-partie-1/ Partie 1]
 +
 
 +
* Cours 4 : L'ordonnancement ([transparents][https://ensiwiki.ensimag.fr/images/b/b2/Ordonnancement.pdf])
 
<!-- * Cours 4 : Les interblocages [[Média:C9-Interblocage.pdf|Transparents]] [[Média:C8.pdf|résumé]] -->
 
<!-- * Cours 4 : Les interblocages [[Média:C9-Interblocage.pdf|Transparents]] [[Média:C8.pdf|résumé]] -->
 
* Cours 5 : Gestion mémoire [[Média:coursmemoire.pdf|Transparents]]
 
* Cours 5 : Gestion mémoire [[Média:coursmemoire.pdf|Transparents]]
 +
 +
Vidéos de la séance du 6 octobre 2020 : [https://videos.univ-grenoble-alpes.fr/video/12052-sepc-cours-5-partie-2/ Partie 2], [https://videos.univ-grenoble-alpes.fr/video/12065-sepc-cours-5-partie-3/ Partie 3]
 +
 
* Cours 6 : Pagination [[Média:pagination.pdf|Transparents]]
 
* Cours 6 : Pagination [[Média:pagination.pdf|Transparents]]
 +
 +
Vidéos de la séance du 13 octobre 2020 : [https://videos.univ-grenoble-alpes.fr/video/12188-sepc-cours-6-partie-1/ Partie 1] [https://videos.univ-grenoble-alpes.fr/video/12189-sepc-cours-6-partie-2/ Partie 2] [https://videos.univ-grenoble-alpes.fr/video/12241-sepc-cours-6-partie-3/ Partie 3] [https://videos.univ-grenoble-alpes.fr/video/12242-sepc-cours-6-partie-4/ Partie 4]
 +
 +
Vidéos de la séance du 20 octobre 2020 : [https://videos.univ-grenoble-alpes.fr/video/12527-sepc-cours-7-partie-1/ Partie 1],[https://videos.univ-grenoble-alpes.fr/video/12531-sepc-cours-7-partie-2/ Partie 2],[https://videos.univ-grenoble-alpes.fr/video/12540-sepc-cours-7-partie-3/ Partie 3], [https://videos.univ-grenoble-alpes.fr/video/13046-sepc-cours-7-partie-4/ Synthèse]
 +
 
* Cours 7 : Gestion de fichiers [[Média:C5-Fichiers.pdf|Transparents]] [[Média:C5.pdf|résumé]] ([http://framaforms.org/gestion-de-fichiers-les-bases-1478022260 qcm bases] [http://framaforms.org/gestion-de-fichiers-fondamentaux-1478104203 qcm fondamentaux])
 
* Cours 7 : Gestion de fichiers [[Média:C5-Fichiers.pdf|Transparents]] [[Média:C5.pdf|résumé]] ([http://framaforms.org/gestion-de-fichiers-les-bases-1478022260 qcm bases] [http://framaforms.org/gestion-de-fichiers-fondamentaux-1478104203 qcm fondamentaux])
 +
Vidéos de la séance du 4 novembre : [http://videos.univ-grenoble-alpes.fr/video/12976-sepc-cours-8-partie-1/ Partie 1], [http://videos.univ-grenoble-alpes.fr/video/12977-sepc-cours-8-partie-2/ Partie 2], [https://videos.univ-grenoble-alpes.fr/video/12985-sepc-cours-8-partie-3/ Partie 3], [https://videos.univ-grenoble-alpes.fr/video/13039-sepc-cours-8-partie-4/ Partie 4]
 +
 +
Vidéos de la séance du 18 novembre : [http://videos.univ-grenoble-alpes.fr/video/13770-sepc-cours-9-partie-1/ Partie 1] [http://videos.univ-grenoble-alpes.fr/video/13771-sepc-cours-9-partie-2/ Partie 2] [http://videos.univ-grenoble-alpes.fr/video/13812-sepc-cours-9-partie-3/ Partie 3]
 +
 
* Cours 8 : Les systèmes distribués [[Média:C9-Repartition0809.pdf|Transparents]] ([http://framaforms.org/les-systemes-distribues-1479069675 qcm base] [http://framaforms.org/systemes-distribuee-estampille-horloge-logique-1479064566 qcm fondamentaux])
 
* Cours 8 : Les systèmes distribués [[Média:C9-Repartition0809.pdf|Transparents]] ([http://framaforms.org/les-systemes-distribues-1479069675 qcm base] [http://framaforms.org/systemes-distribuee-estampille-horloge-logique-1479064566 qcm fondamentaux])
 +
 +
Vidéos de la séance du 25 novembre : [http://videos.univ-grenoble-alpes.fr/video/14099-sepc-cours-10-partie-1/ Partie 1], [http://videos.univ-grenoble-alpes.fr/video/14109-sepc-cours-10-partie-2/ Partie 2], [http://videos.univ-grenoble-alpes.fr/video/14112-sepc-cours-10-partie-3/ Partie 3], [http://videos.univ-grenoble-alpes.fr/video/14113-sepc-cours-10-partie-4/ Partie 4]
 +
 +
Vidéos de la séance du 2 décembre : [http://videos.univ-grenoble-alpes.fr/video/14372-sepc-cours-11-partie-1/ Partie 1] [http://videos.univ-grenoble-alpes.fr/video/14424-sepc-cours-11-partie-2/ Partie 2] [https://videos.univ-grenoble-alpes.fr/video/14877-sepc-cours-11-partie-2bis/ Partie 2 sans problème de son]
 +
 
* Cours 9 : Les multi-processeurs [https://ensiwiki.ensimag.fr/images/1/15/CoursMultiprocesseurs.pdf Transparents]
 
* Cours 9 : Les multi-processeurs [https://ensiwiki.ensimag.fr/images/1/15/CoursMultiprocesseurs.pdf Transparents]
 
* Cours 10 : Programmation parallèle en mémoire partagée [http://ensiwiki.ensimag.fr/images/b/b5/SEPC-parall%C3%A9lisme.pdf Transparents]
 
* Cours 10 : Programmation parallèle en mémoire partagée [http://ensiwiki.ensimag.fr/images/b/b5/SEPC-parall%C3%A9lisme.pdf Transparents]
 +
* Cours 11 : Les inter blocages ([[Fichier:C9-Interblocage.pdf|transparents]])
 +
 +
=== Bibliographie ===
 +
Des livres contenants des explications détaillés, organisé par chapitre thématique (Processus, Mémoire, Fichiers, Synchronisation, etc. Vous pouvez lire chaque chapitre indépendamment des autres).
 +
* Operating Systems Concepts: Siberschatz, Galvin et Gagne, 2014. (Nov 2019: 4 exemplaires à la BU Science)
 +
* Modern Operating Systems: Tanenbaum et Bos, 2015. (Nov 2019: 6 exemplaires à la BU Science)
 +
* [http://pages.cs.wisc.edu/~remzi/OSTEP/ Operating Systems: Three Easy Pieces: Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau]
 +
 +
=== Archive confinement Covid-19 du printemps 2020 ===
 +
 +
Vous trouverez quelques supports détaillés utilisés lors du confinement Covid19 aux liens suivants
 +
* [https://broquedf.pages.ensimag.fr/sepcovid/ Cours de François Broquedis sur la mémoire]
 +
* [https://systemes.pages.ensimag.fr/www-sepc TD de synchronisation; Cours sur les fichiers; Cours sur les systèmes distribués (Vidéos et exercices)]
 +
 +
Les enseignants étaient souvent sur le serveur http://riot.ensimag.fr dans les salles "SEPC" et "SEPC Permanence Numérique"
  
 
==Code des démos (second semestre et 2A en apprentissage)==
 
==Code des démos (second semestre et 2A en apprentissage)==
Ligne 27 : Ligne 68 :
 
==Travaux dirigés et Travaux pratiques==
 
==Travaux dirigés et Travaux pratiques==
 
* Environnement de travail
 
* Environnement de travail
** Les squelettes sont prévus pour fonctionner avec l'environnement de référence de l'Ensimag (2015-2016: à base de centOS 7, celui des PC et des VM). Des Debian et Ubuntu récentes devraient fonctionner sans problème non plus. Tous les outils sont tous disponibles en standard dans votre distribution Linux.
+
** Les squelettes sont prévus pour fonctionner avec l'environnement de référence de l'Ensimag (2015-2020: à base de centOS 7, celui des PC et des VM). Des Debian, Ubuntu et Manjaro récentes devraient fonctionner sans problème non plus. Tous les outils sont tous disponibles en standard dans votre distribution Linux.
 
** Ils utilisent certains outils qu'il n'est pas nécessaire de comprendre mais qu'il faut utiliser pour effectuer les TPs:
 
** Ils utilisent certains outils qu'il n'est pas nécessaire de comprendre mais qu'il faut utiliser pour effectuer les TPs:
 
*** Les Makefile pour la compilation  et la construction du rendu, sont générés à l'aide de [http://cmake.org cmake]
 
*** Les Makefile pour la compilation  et la construction du rendu, sont générés à l'aide de [http://cmake.org cmake]
 
<!-- *** Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ [http://code.google.com/p/googletest googletest] -->
 
<!-- *** Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ [http://code.google.com/p/googletest googletest] -->
*** Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage [http://ruby-doc.org ruby] (le paquetage de test est nommé '''ruby-test-unit''' dans une debian récente)  
+
*** Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage [http://ruby-doc.org ruby] (le paquetage de test est nommé '''ruby-minitest''' dans une débian récente, ou '''ruby-test-unit''' dans une debian plus ancienne)  
 
<!-- *** Le TP3 utilise un solveur de programme linéaire si il en trouve un.
 
<!-- *** Le TP3 utilise un solveur de programme linéaire si il en trouve un.
 
*** Le TP3 utilise le module graph de la bibliothèque C++ [http://www.boost.org Boost]. -->
 
*** Le TP3 utilise le module graph de la bibliothèque C++ [http://www.boost.org Boost]. -->
=== Séance 1 : Minimum vital ===
+
=== Séance 1 ===
 +
 
 +
==== Minimum vital ====
 
* [[Média:RevisionC_3h.pdf|Le sujet de TP à faire comme rappel de C]]
 
* [[Média:RevisionC_3h.pdf|Le sujet de TP à faire comme rappel de C]]
* [http://chamilo.grenoble-inp.fr/courses/ENSIMAG3MMPLC/document/3MMPLC/demarrage/outils-01.html les pages du stage C (Pour ceux se sentant vraiment faible)]
+
<!-- * [https://gitlab.ensimag.fr/formationc/prepa/prof/wikis/home les pages du stage C (Pour ceux se sentant vraiment faible)] -->
 
* [[Média:Rappel_de_C.pdf|Quelques notes rapide de rappel de C]], [[Média:resume_C.pdf|Résumé]]
 
* [[Média:Rappel_de_C.pdf|Quelques notes rapide de rappel de C]], [[Média:resume_C.pdf|Résumé]]
* [http://matthieu-moy.fr/cours/poly-c Le poly de C de Bernard Cassagne]
+
* [http://matthieu-moy.fr/cours/poly-c Le poly de C de Bernard Cassagne (très progressif et didactique)]
 
* [http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf Le draft final de la dernière norme C (version C11)]
 
* [http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf Le draft final de la dernière norme C (version C11)]
 
<!-- ** TP allocateur mémoire [[Média:TD_allocateur_print.pdf|Présentation]], [[Média:Sujet_SEPC_allocateur_multivar.pdf|Sujet du TP allocateur (édition 2015-2016)]] -->
 
<!-- ** TP allocateur mémoire [[Média:TD_allocateur_print.pdf|Présentation]], [[Média:Sujet_SEPC_allocateur_multivar.pdf|Sujet du TP allocateur (édition 2015-2016)]] -->
Ligne 51 : Ligne 94 :
 
** Les solutions sont dans la branche solution (NDLR: Ne pas savoir faire un exercice est l'information utile ! La lecture de la solution ne vous apprendra pas ce que vous n'avez pas compris.)
 
** Les solutions sont dans la branche solution (NDLR: Ne pas savoir faire un exercice est l'information utile ! La lecture de la solution ne vous apprendra pas ce que vous n'avez pas compris.)
  
=== Séance 1, 1er TP à rendre ===
+
==== Présentation du TP allocateur mémoire à rendre ====
* Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ [http://code.google.com/p/googletest googletest]
+
<!-- TPL_Allocateur_Memoire.pdf -->
 
* TP allocateur mémoire virtuelle: [[Média:Sujet_allocateur_virtuel.pdf|Sujet]]
 
* TP allocateur mémoire virtuelle: [[Média:Sujet_allocateur_virtuel.pdf|Sujet]]
 +
* Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ [http://code.google.com/p/googletest googletest]
 +
* Le module python, qui permet de faire des test de votre allocateur en python utilise '''python3-dev'''. Vous devrez peut-être adapter le numéro de version (3.5, 3.9, etc) en fonction du python installé sur votre machine
 +
* Présentation TP allocateur [[Média:TPL_Allocateur_Memoire.pdf|Présentation]]
 
<!-- * TP allocateur mémoire physique [[Média:TD_allocateur_print.pdf|Présentation]], [[Média:Sujet_SEPC_allocateur_multivar.pdf|Sujet du TP allocateur (édition 2017 APP)]] -->
 
<!-- * TP allocateur mémoire physique [[Média:TD_allocateur_print.pdf|Présentation]], [[Média:Sujet_SEPC_allocateur_multivar.pdf|Sujet du TP allocateur (édition 2017 APP)]] -->
  
Ligne 60 : Ligne 106 :
  
 
Si vous ne vous êtes pas déjà connecté à gitlab.ensimag.fr et que vous n'avez pas mis en place une clef ssh, vous pouvez obtenir le squelette avec  
 
Si vous ne vous êtes pas déjà connecté à gitlab.ensimag.fr et que vous n'avez pas mis en place une clef ssh, vous pouvez obtenir le squelette avec  
   '''GIT_SSL_NO_VERIFY=true git clone https://gitlab.ensimag.fr/os/ensimag-malloc.git'''
+
   '''git clone https://gitlab.ensimag.fr/os/ensimag-malloc.git'''
  
 
Si vous forkez le squelette, pensez à le mettre en private. Ces TP étant une partie de vos examens, ils sont soumis à la charte des projets (cf. https://teide.ensimag.fr/Charte_contre_la_fraude.php)
 
Si vous forkez le squelette, pensez à le mettre en private. Ces TP étant une partie de vos examens, ils sont soumis à la charte des projets (cf. https://teide.ensimag.fr/Charte_contre_la_fraude.php)
  
 
=== Séance 2 ===
 
=== Séance 2 ===
* Dekker-Peterson et présentation du TP shell
+
Deux parties:
 +
# Dekker-Peterson
 +
# Présentation du TP shell
 +
==== Dekker et Peterson ====
 
* [[Média:td_dekker_eleve.pdf|Sujet du TD Dekker]]
 
* [[Média:td_dekker_eleve.pdf|Sujet du TD Dekker]]
 
* [[Média:td_dekker_graphes_p1.tgz|Graphes du TD Dekker, partie 1]], [[Média:td_dekker_graphes_p2.tgz|Graphes du TD Dekker, partie 2]]
 
* [[Média:td_dekker_graphes_p1.tgz|Graphes du TD Dekker, partie 1]], [[Média:td_dekker_graphes_p2.tgz|Graphes du TD Dekker, partie 2]]
 +
* [https://gitlab.ensimag.fr/systemes/exemples/dekker Codes implantant l'algorithme de Dekker en vrai], plus complexe que la version vue en TD.
 +
==== Présentation du TP shell à rendre ====
 
* [[Média:Shell_print.pdf|Présentation du TP Shell]]
 
* [[Média:Shell_print.pdf|Présentation du TP Shell]]
 
* [[Média:Sujet_shell.pdf‎|Sujet du TP Shell (2017-2018)]]
 
* [[Média:Sujet_shell.pdf‎|Sujet du TP Shell (2017-2018)]]
Ligne 74 : Ligne 125 :
 
       man fork
 
       man fork
 
       man 2 open (il y a beaucoup de open: les appels systèmes sont en section 2)
 
       man 2 open (il y a beaucoup de open: les appels systèmes sont en section 2)
       info libc (doc de référence avec des explications détaillées et des exemples complets de code))
+
       info libc (doc de référence de la GNU Libc de votre Linux, avec des explications détaillées et des exemples complets de code))
 
       info libc "process creation example" (l'exemple de code de la section Process)
 
       info libc "process creation example" (l'exemple de code de la section Process)
       info info (tutorial de info)'''
+
       info info (tutorial de info)
 +
      emacs --eval '(info "libc")' (ou dans emacs, '''C-h i''' pour accéder à toutes les pages info, avec une interface colorée et des liens clicables)'''
 
<!-- ** [http://sebastien-viardot.imag.fr/Enseignements/SEPC/doc_tp2.html Documentation] -->
 
<!-- ** [http://sebastien-viardot.imag.fr/Enseignements/SEPC/doc_tp2.html Documentation] -->
  
Ligne 85 : Ligne 137 :
 
L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme '''git push''' ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
 
L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme '''git push''' ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
  
** Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage [http://ruby-doc.org ruby] (le paquetage de test est nommé '''ruby-test-unit''' dans une debian récente)  
+
** Pour avoir un shell vraiment agréable, il peut utiliser la bibliothèque READLINE (édition de ligne, historique) ('''libreadline-dev''' dans une debian)
 +
** Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage [http://ruby-doc.org ruby] (le paquetage de test est nommé '''ruby-minitest''' dans une débian récente, ou '''ruby-test-unit''' dans une debian plus ancienne)  
 
** Le shell utilise l'interpréteur scheme '''guile''' (version 1.8 ou 2.0)('''guile-2.0-dev''' dans une débian récente)
 
** Le shell utilise l'interpréteur scheme '''guile''' (version 1.8 ou 2.0)('''guile-2.0-dev''' dans une débian récente)
 
** [[SEPC_FAQ_Tp_Shell|FAQ TP Shell]]
 
** [[SEPC_FAQ_Tp_Shell|FAQ TP Shell]]
  
 
=== Séance 3 ===
 
=== Séance 3 ===
* Moniteurs
+
==== Sujet du TD sur les moniteurs ====
** [[Média:Td_mutexmoniteurs_eleve.pdf|Exercices]]
+
* [[Média:Td_mutexmoniteurs_eleve.pdf|Sujet]]
 
<!-- ** [http://sebastien-viardot.imag.fr/Enseignements/SEPC/Documents/td3_Moniteurs.pdf TD Moniteur] -->
 
<!-- ** [http://sebastien-viardot.imag.fr/Enseignements/SEPC/Documents/td3_Moniteurs.pdf TD Moniteur] -->
 
 
<!-- sources précédentes [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/Makefile Makefile] [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/readcmd.h readcmd.h] [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/readcmd.c readcmd.c]  [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/tst.c tst.c] -->
 
<!-- sources précédentes [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/Makefile Makefile] [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/readcmd.h readcmd.h] [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/readcmd.c readcmd.c]  [http://sebastien-viardot.imag.fr/Enseignements/SEPC/srcs/TPSHELL/tst.c tst.c] -->
 +
==== Pour aller plus loin ====
 +
* L'implantation des moniteurs sous Linux [https://www.akkadia.org/drepper/futex.pdf Futex are Tricky, Ulrich Drepper]
  
 
=== Séance 4 ===
 
=== Séance 4 ===
* TP thread et moniteurs
+
==== Introduction aux threads ====
 
* [[Média:Progr_Pthread_print.pdf‎|Présentation de la programmation des Threads]]
 
* [[Média:Progr_Pthread_print.pdf‎|Présentation de la programmation des Threads]]
* sujet et squelette du lecteur video:
+
* [[Média:pres_thread_exo1.c|Exemple somme des éléments d'un tableau et addition concurrente]]
** [[Média:Sujet_lecteur_video.pdf‎|Sujet du TP Thread: lecteur video (2016-2017)]]
+
 
** Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
+
==== Présentation du TP thread à rendre ====
  '''git clone https://github.com/gmounie/ensimag-video.git'''
+
* [[Média:Sujet_lecteur_video.pdf‎|Sujet du TP Thread: lecteur video (2019-2020)]]
** L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme '''git push''' ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
+
* Un exemple de film [https://upload.wikimedia.org/wikipedia/commons/4/41/Big_Buck_Bunny_medium.ogv Big Buck Bunny (Blender foundation)]
** Ce TP utilise les bibliothèques ogg, theora, vorbis et SDL2 (>= 2.0.4), ainsi que les entêtes de développement de ces bibliothèques (les include pour la compilation)  
+
* Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
 +
    '''git clone https://github.com/gmounie/ensimag-video.git'''
 +
* L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme '''git push''' ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
 +
* Ce TP utilise les bibliothèques ogg, theora, vorbis et SDL2 (>= 2.0.4), ainsi que les entêtes de développement de ces bibliothèques (les include pour la compilation)  
 
(noms Debian/Ubuntu: libsdl2-dev libogg-dev libvorbis-dev libtheora-dev.)
 
(noms Debian/Ubuntu: libsdl2-dev libogg-dev libvorbis-dev libtheora-dev.)
** Sur certaines machines de l'ensimag, l'accélération de l'affichage par la SDL2 ne fonctionne pas bien. Vous pouvez la désactiver
+
* Sur certaines machines de l'ensimag, l'accélération de l'affichage par la SDL2 ne fonctionne pas bien. Vous pouvez la désactiver
 
   Dans src/ensitheora.c, la ligne 34
 
   Dans src/ensitheora.c, la ligne 34
 
   renderer = SDL_CreateRenderer(screen, -1, 0);
 
   renderer = SDL_CreateRenderer(screen, -1, 0);
Ligne 121 : Ligne 178 :
 
=== Séance 5 ===
 
=== Séance 5 ===
 
Sémaphore 1
 
Sémaphore 1
* [http://sebastien-viardot.imag.fr/Enseignements/SEPC/Documents/td4_Semaphores.pdf TD sémaphores]
+
* [[Média:Td mutexsemaphores eleve.pdf|TD Sémaphores]]
* [http://sebastien-viardot.imag.fr/Enseignements/SEPC/Documents/sem6X6.pdf Slides sémaphores]
+
* [[Média:Td mutexsemaphores eleve.pdf|TD Modélisation formelle des synchronisation et vérification]]
+
  
 
=== Séance 6 ===
 
=== Séance 6 ===
 +
* Mémoire virtuelle : [[Média:Td_memvirtuelle.pdf| TD mémoire virtuelle]], [[Média:td_mem_virt.pdf|TD mémoire virtuelle (version SV)]]
 +
 
* Mémoire: couplage mémoire (memory mapping)
 
* Mémoire: couplage mémoire (memory mapping)
 
** [[Média:shmem.pdf|Sujet du TP couplage mémoire]]
 
** [[Média:shmem.pdf|Sujet du TP couplage mémoire]]
 
** Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
 
** Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
 
   '''git clone https://github.com/gmounie/ensimag-shmem.git'''
 
   '''git clone https://github.com/gmounie/ensimag-shmem.git'''
* Sémaphore 2
 
* Annales d'examens
 
<!-- ** [[Média:Sujet-philo-prodcons.pdf‎|TP thread]] le sujet (semestre 2);------------;[[Média:Sujet-lectredact-prodcons.pdf‎|Sujet de TP thread]] (Apprentissage) -->
 
** [http://sebastien-viardot.imag.fr/Enseignements/SEPC/Documents/exam_dec_08.pdf Examen décembre 2008]
 
** [[Média:SEPCMai10Complet.doc|Examen mai 2010]]
 
  
* Séance TP OpenMP
+
== Complément ==
 +
 
 +
TP OpenMP
 
* [[Média:openmp.pdf‎|Sujet du TP OpenMP]]
 
* [[Média:openmp.pdf‎|Sujet du TP OpenMP]]
 
* Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
 
* Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
Ligne 142 : Ligne 196 :
  
 
== Annales d'examens ==
 
== Annales d'examens ==
 +
 +
<!-- ** [[Média:Sujet-philo-prodcons.pdf‎|TP thread]] le sujet (semestre 2);------------;[[Média:Sujet-lectredact-prodcons.pdf‎|Sujet de TP thread]] (Apprentissage) -->
 
* [[Média:SEPCMai10Complet.doc|Examen mai 2010]]
 
* [[Média:SEPCMai10Complet.doc|Examen mai 2010]]
 
* [[Média:SEPCMai11_V2.doc|Examen mai 2011]]
 
* [[Média:SEPCMai11_V2.doc|Examen mai 2011]]
 
* [[Média:SEPCDec13.pdf|Examen dec. 2013]]
 
* [[Média:SEPCDec13.pdf|Examen dec. 2013]]
 +
* [[Média:SEPCDec19.pdf|Examen dec. 2019]]
  
 
== Exercices de synchronisation avec correction ==
 
== Exercices de synchronisation avec correction ==
DANGER: nouveauté 2014-2015 ! Si vous voyez un bug dans les corrections, merci de le faire remonter !
+
Si vous voyez un bug dans les corrections, merci de le faire remonter !
  
 
* [[Média:SEPCexocorr_gochannel.pdf|Les channels de Go]]
 
* [[Média:SEPCexocorr_gochannel.pdf|Les channels de Go]]
Ligne 155 : Ligne 212 :
  
 
== QCM (Quiz interactifs) ==
 
== QCM (Quiz interactifs) ==
DANGER: nouveauté 2014-2015 ! Si vous voyez un bug dans les corrections, merci de le faire remonter !  
+
Si vous voyez un bug dans les corrections, merci de le faire remonter !  
  
 
* [[quiz_sepc_processus|Processus]]
 
* [[quiz_sepc_processus|Processus]]
Ligne 165 : Ligne 222 :
 
* [[Média:Qcm_memoire.pdf|qcm sur la mémoire]]
 
* [[Média:Qcm_memoire.pdf|qcm sur la mémoire]]
  
==Planning SEPC(Cf. ADE) :==
+
== Planning SEPC (Cf. ADE) ==
 
Emploi du temps des cours et travaux dirigés de "SEPC" sont sur ADE.
 
Emploi du temps des cours et travaux dirigés de "SEPC" sont sur ADE.
  
 
*Cours  
 
*Cours  
** 4MMSEPS1_CM_G1 : ISI, Telecom et SLE
+
** 4MMSEPS1_CM_G1 : ISI, IF, SEOC
 
*TD
 
*TD
  
Ligne 178 : Ligne 235 :
  
 
=== Suggestion des élèves ===
 
=== Suggestion des élèves ===
 +
==== Livre ====
 +
* Sémaphore: [ https://greenteapress.com/wp/semaphores/ Little book of semaphore](suggestion Emma Lagier)
 
==== Vidéos ====
 
==== Vidéos ====
 
* OS: [https://www.youtube.com/watch?v=wVNvEGe2UOA&list=PLPXsMt57rLtjNzxZBDg9xJB7KT83WStBO] (suggestion de: Vincent Lefoulon)
 
* OS: [https://www.youtube.com/watch?v=wVNvEGe2UOA&list=PLPXsMt57rLtjNzxZBDg9xJB7KT83WStBO] (suggestion de: Vincent Lefoulon)
Ligne 188 : Ligne 247 :
  
 
== Les enseignants ==
 
== Les enseignants ==
* [mailto:Francois.Broquedis@imag.fr François Broquedis]
+
* [mailto:Brice.Colombier@grenoble-inp.fr Brice Colombier]
* [mailto:Julie.Dumas@univ-grenoble-alpes.fr Julie Dumas]
+
* [mailto:Yves.Denneulin@grenoble-inp.fr Yves Denneulin]
* [mailto:Renaud.Lachaize@imag.fr Renaud Lachaize]
+
* [mailto:Alexandre@ghiti.fr Alexandre Ghiti]
* [mailto:Giorgio.Lucarelli@imag.fr Giorgio Lucarelli]
+
 
* [mailto:Florence.Maraninchi@imag.fr Florence Maraninchi]
 
* [mailto:Florence.Maraninchi@imag.fr Florence Maraninchi]
 
* [mailto:Gregory.Mounie@imag.fr Grégory Mounié]
 
* [mailto:Gregory.Mounie@imag.fr Grégory Mounié]
 
* [mailto:Thomas.Ropars@imag.fr Thomas Ropars]
 
* [mailto:Thomas.Ropars@imag.fr Thomas Ropars]
 +
* [mailto:Sebastien.Viardot@grenoble-inp.fr Sébastien Viardot]
  
 
[[Catégorie:Informatique]]
 
[[Catégorie:Informatique]]
 
[[Catégorie:Deuxième Année]]
 
[[Catégorie:Deuxième Année]]

Version actuelle en date du 4 février 2021 à 09:30


Page ensiwiki du cours de Système d'Exploitation et Programmation Concurrente, semestre 1.


Vous trouverez sur cette page:

  • Les supports de cours
  • Les supports de TD et TP

Les annales et d'autres trucs chouettes se trouvent sur la page générale du cours de SEPC.

Supports de cours (premier et second semestre)

Vidéos de la séance du 9 septembre 2020 : partie 1, partie 2, partie 3

Vidéos de la séance du 16 septembre 2020 : partie 1,partie 2 partie 3

Vidéos de la séance du 23 septembre 2020 : partie 1,Partie 1 sur Chamilo, partie 2

Vidéos de la séance du 30 septembre 2020 : Partie 1, Partie 2, Partie 3

Vidéos de la séance du 6 octobre 2020 : Partie 1

  • Cours 4 : L'ordonnancement ([transparents][1])
  • Cours 5 : Gestion mémoire Transparents

Vidéos de la séance du 6 octobre 2020 : Partie 2, Partie 3

Vidéos de la séance du 13 octobre 2020 : Partie 1 Partie 2 Partie 3 Partie 4

Vidéos de la séance du 20 octobre 2020 : Partie 1,Partie 2,Partie 3, Synthèse

Vidéos de la séance du 4 novembre : Partie 1, Partie 2, Partie 3, Partie 4

Vidéos de la séance du 18 novembre : Partie 1 Partie 2 Partie 3

Vidéos de la séance du 25 novembre : Partie 1, Partie 2, Partie 3, Partie 4

Vidéos de la séance du 2 décembre : Partie 1 Partie 2 Partie 2 sans problème de son

Bibliographie

Des livres contenants des explications détaillés, organisé par chapitre thématique (Processus, Mémoire, Fichiers, Synchronisation, etc. Vous pouvez lire chaque chapitre indépendamment des autres).

Archive confinement Covid-19 du printemps 2020

Vous trouverez quelques supports détaillés utilisés lors du confinement Covid19 aux liens suivants

Les enseignants étaient souvent sur le serveur http://riot.ensimag.fr dans les salles "SEPC" et "SEPC Permanence Numérique"

Code des démos (second semestre et 2A en apprentissage)

Travaux dirigés et Travaux pratiques

  • Environnement de travail
    • Les squelettes sont prévus pour fonctionner avec l'environnement de référence de l'Ensimag (2015-2020: à base de centOS 7, celui des PC et des VM). Des Debian, Ubuntu et Manjaro récentes devraient fonctionner sans problème non plus. Tous les outils sont tous disponibles en standard dans votre distribution Linux.
    • Ils utilisent certains outils qu'il n'est pas nécessaire de comprendre mais qu'il faut utiliser pour effectuer les TPs:
      • Les Makefile pour la compilation et la construction du rendu, sont générés à l'aide de cmake
      • Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage ruby (le paquetage de test est nommé ruby-minitest dans une débian récente, ou ruby-test-unit dans une debian plus ancienne)

Séance 1

Minimum vital

  git clone https://github.com/gmounie/ensimag-rappeldec.git

L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux. Corrections des bugs dans l'entrepôt: Faire git pull, pour les fusionner avec votre code.

    • Si vous voulez utiliser git plus avant, la page git du wiki avec des liens vers les tutoriaux.
    • Les solutions sont dans la branche solution (NDLR: Ne pas savoir faire un exercice est l'information utile ! La lecture de la solution ne vous apprendra pas ce que vous n'avez pas compris.)

Présentation du TP allocateur mémoire à rendre

  • TP allocateur mémoire virtuelle: Sujet
  • Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ googletest
  • Le module python, qui permet de faire des test de votre allocateur en python utilise python3-dev. Vous devrez peut-être adapter le numéro de version (3.5, 3.9, etc) en fonction du python installé sur votre machine
  • Présentation TP allocateur Présentation

Nous vous conseillons de vous connecter à https://gitlab.ensimag.fr et de mettre en place une clef ssh sur votre compte (menu "user" en haut à droite, choisir "profile", puis le bouton en haut à droite "edit profile", puis dans le menu à gauche "clefs ssh")

  git clone git@gitlab.ensimag.fr:os/ensimag-malloc.git

Si vous ne vous êtes pas déjà connecté à gitlab.ensimag.fr et que vous n'avez pas mis en place une clef ssh, vous pouvez obtenir le squelette avec

  git clone https://gitlab.ensimag.fr/os/ensimag-malloc.git

Si vous forkez le squelette, pensez à le mettre en private. Ces TP étant une partie de vos examens, ils sont soumis à la charte des projets (cf. https://teide.ensimag.fr/Charte_contre_la_fraude.php)

Séance 2

Deux parties:

  1. Dekker-Peterson
  2. Présentation du TP shell

Dekker et Peterson

Présentation du TP shell à rendre

     man fork
     man 2 open (il y a beaucoup de open: les appels systèmes sont en section 2)
     info libc (doc de référence de la GNU Libc de votre Linux, avec des explications détaillées et des exemples complets de code))
     info libc "process creation example" (l'exemple de code de la section Process)
     info info (tutorial de info)
     emacs --eval '(info "libc")' (ou dans emacs, C-h i pour accéder à toutes les pages info, avec une interface colorée et des liens clicables)
  • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
  git clone https://github.com/gmounie/ensimag-shell.git

L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.

    • Pour avoir un shell vraiment agréable, il peut utiliser la bibliothèque READLINE (édition de ligne, historique) (libreadline-dev dans une debian)
    • Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage ruby (le paquetage de test est nommé ruby-minitest dans une débian récente, ou ruby-test-unit dans une debian plus ancienne)
    • Le shell utilise l'interpréteur scheme guile (version 1.8 ou 2.0)(guile-2.0-dev dans une débian récente)
    • FAQ TP Shell

Séance 3

Sujet du TD sur les moniteurs

Pour aller plus loin

Séance 4

Introduction aux threads

Présentation du TP thread à rendre

   git clone https://github.com/gmounie/ensimag-video.git
  • L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
  • Ce TP utilise les bibliothèques ogg, theora, vorbis et SDL2 (>= 2.0.4), ainsi que les entêtes de développement de ces bibliothèques (les include pour la compilation)

(noms Debian/Ubuntu: libsdl2-dev libogg-dev libvorbis-dev libtheora-dev.)

  • Sur certaines machines de l'ensimag, l'accélération de l'affichage par la SDL2 ne fonctionne pas bien. Vous pouvez la désactiver
 Dans src/ensitheora.c, la ligne 34
  renderer = SDL_CreateRenderer(screen, -1, 0);
 peut être remplacée par
  renderer = SDL_CreateRenderer(screen, -1, SDL_RENDERER_SOFTWARE);  
  • Tests: valgrind est votre ami (tools: helgrind et drd)

Séance 5

Sémaphore 1

Séance 6

  • Mémoire: couplage mémoire (memory mapping)
    • Sujet du TP couplage mémoire
    • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
  git clone https://github.com/gmounie/ensimag-shmem.git

Complément

TP OpenMP

  • Sujet du TP OpenMP
  • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
  git clone https://github.com/gmounie/ensimag-openmp.git

Annales d'examens

Exercices de synchronisation avec correction

Si vous voyez un bug dans les corrections, merci de le faire remonter !

QCM (Quiz interactifs)

Si vous voyez un bug dans les corrections, merci de le faire remonter !

QCM (PDF)

Planning SEPC (Cf. ADE)

Emploi du temps des cours et travaux dirigés de "SEPC" sont sur ADE.

  • Cours
    • 4MMSEPS1_CM_G1 : ISI, IF, SEOC
  • TD

Quelques liens divers

Suggestion des élèves

Livre

Vidéos

  • OS: [2] (suggestion de: Vincent Lefoulon)
  • Mémoire virtuelle: [3] (suggestion de: Vincent Lefoulon)

A propos de GIT

Pour plus d'information sur l'utilisation de Git dans un cadre semblable à celui des TPs de ce cours, vous pouvez consulté la page: page sur les entrepots git partagées

Les enseignants