SEPC-S1 : Différence entre versions
(→Séance 3) |
(→Séance 3) |
||
Ligne 107 : | Ligne 107 : | ||
<!-- ** [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 === |
Version du 28 novembre 2019 à 12:51
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.
Sommaire
- 1 Supports de cours (premier et second semestre)
- 2 Code des démos (second semestre et 2A en apprentissage)
- 3 Travaux dirigés et Travaux pratiques
- 4 Complément
- 5 Annales d'examens
- 6 Exercices de synchronisation avec correction
- 7 QCM (Quiz interactifs)
- 8 QCM (PDF)
- 9 Planning SEPC (Cf. ADE)
- 10 Quelques liens divers
- 11 A propos de GIT
- 12 Les enseignants
Supports de cours (premier et second semestre)
- Cours 1 : Introduction Transparents résumé (qcm fibo)
- Cours 2 : Processus Transparents résumé
- Cours 3 : Mécanismes de synchronisation et réalisation des processus Transparents résumé
- Cours 4 : L'ordonnancement (no slides yet)
- Cours 5 : Gestion mémoire Transparents
- Cours 6 : Pagination Transparents
- Cours 7 : Gestion de fichiers Transparents résumé (qcm bases qcm fondamentaux)
- Cours 8 : Les systèmes distribués Transparents (qcm base qcm fondamentaux)
- Cours 9 : Les multi-processeurs Transparents
- Cours 10 : Programmation parallèle en mémoire partagée 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)
- Operating Systems: Three Easy Pieces: Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
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-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.
- Ils utilisent certains outils qu'il n'est pas nécessaire de comprendre mais qu'il faut utiliser pour effectuer les TPs:
Séance 1
Minimum vital
- Le sujet de TP à faire comme rappel de C
- les pages du stage C (Pour ceux se sentant vraiment faible)
- Quelques notes rapide de rappel de C, Résumé
- Le poly de C de Bernard Cassagne
- Le draft final de la dernière norme C (version C11)
- 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-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
- Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ googletest
- TP allocateur mémoire virtuelle: Sujet
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_SSL_NO_VERIFY=true 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:
- Dekker-Peterson
- Présentation du TP shell
Dekker et Peterson
- Sujet du TD Dekker
- Graphes du TD Dekker, partie 1, Graphes du TD Dekker, partie 2
- Codes implantant l'algorithme de Dekker en vrai, plus complexe que la version vue en TD.
Présentation du TP shell à rendre
- Présentation du TP Shell
- Sujet du TP Shell (2017-2018)
- Exemples de code
- Documentations:
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 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)
- 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.
- 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-test-unit dans une debian 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)
- FAQ TP Shell
Séance 3
- Moniteurs
- Exercices
- Pour aller plus loin : L'implantation des moniteurs sous Linux Futex are Tricky, Ulrich Drepper
Séance 4
- TP thread et moniteurs
- Présentation de la programmation des Threads
- sujet et squelette du lecteur video:
- Sujet du TP Thread: lecteur video (2019-2020)
- Un exemple de film Big Buck Bunny (Blender foundation)
- 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.)
- 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 virtuelle : TD mémoire virtuelle
- 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
- Sémaphore: [ https://greenteapress.com/wp/semaphores/ Little book of semaphore](suggestion Emma Lagier)
Vidéos
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