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)
Cours 1 : Introduction
Vidéos de la séance du 7 septembre 2022 : partie 1, partie 2 sur Youtube, partie 2, partie 3
Cours 2 : Processus
Vidéos de la séance du 14 septembre 2022 : partie 1, partie 2, partie 3
Cours 3 : Mécanismes de synchronisation et réalisation des processus
Vidéos de la séance du 21 septembre 2022 : partie 1, partie 1 sur Chamilo, partie 2
Vidéos de la séance du 28 septembre 2022 : partie 1, partie 2
Vidéos de la séance du 5 octobre 2022 : partie 1, partie 2
Cours 4 : L'ordonnancement
La séance correspondante sera faite après les parties mémoire et disques car elle nécessite des connaissances venant de ces parties.
Cours 5 : Gestion mémoire
Vidéos de la séance du 12 octobre 2022 : partie 1, partie 2
Cours 6 : Pagination
Vidéos de la séance du 19 octobre 2022 : partie 1, partie 2, partie 3, partie 4
Vidéos de la séance du 26 octobre 2022 : partie 1, partie 2, partie 3, Synthèse
Cours 7 : Gestion de fichiers
Vidéos de la séance du 9 novembre : partie 1, partie 2, partie 3, partie 4
Vidéos de la séance du 16 novembre : partie 1, partie 2, partie 3 (Retour sur l'ordonnancement)
Cours 8 : Les systèmes distribués
Vidéos de la séance du 23 novembre : partie 1, partie 2, partie 3, partie 4
Vidéos de la séance du 30 novembre : partie 1, partie 2
Cours 9 : Les multi-processeurs
Cours 10 : Programmation parallèle en mémoire partagée
Cours 11 : Les inter blocages
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
Archive confinement Covid-19 du printemps 2020 et 2021
Vous trouverez quelques supports détaillés utilisés lors du confinement Covid19 aux liens suivants
- Cours de François Broquedis sur la mémoire
- 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)
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 (Ubuntu). Des Debian, CentOS 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 Debian/Ubuntu récente, ou ruby-test-unit dans une Debian/Ubuntu plus ancienne)
Partager un projet avec votre binome dans gitlab.ensimag.fr
Pour rester simple, la source de votre gitlab sera la nouvelle origin et la branche s'appelle courante est master, mais c'est juste une convention.
- Créer un projet VIDE (même pas un README) dans gitlab.ensimag.fr
- Après avoir cloné le squelette, dans le répertoire de travail de git, nous allons changer les remotes:
1 2 3 4 5 |
|
Séance 1 (TP encadré en salle + présentation TP 1 à la maison à rendre) (2 créneaux de TP de 1h30)
TP encadré en salle machine (Minimum vital de C)
- Le sujet de TP à faire comme rappel de C
- Quelques notes rapide de rappel de C, Résumé
- Le poly de C de Bernard Cassagne (très progressif et didactique)
- Le draft final de la dernière norme C (version C11)
Les sources sont dans un entrepôt git sur le site github.com
(branche master, le défaut).
On peut les obtenir en faisant :
1 |
|
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.)
TP allocateur mémoire, à faire à la maison et à 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 tests 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
)
1 |
|
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
1 |
|
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 (2 créneaux de TD de 1h30)
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
- Exemples de code
- Documentations :
1 2 3 4 5 6 |
|
Les sources sont dans un entrepôt git sur le site github.com
(branche master, le défaut). On peut les obtenir en faisant :
1 |
|
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 (2 créneaux de TD de 1h30)
Sujet du TD sur les moniteurs
Pour aller plus loin
- L'implantation des moniteurs sous Linux Futex are Tricky, Ulrich Drepper
Séance 4 (1 créneau de TD de 1h30)
Introduction aux threads
- Présentation de la programmation des Threads
- Exemple somme des éléments d'un tableau et addition concurrente
Présentation du TP thread à rendre
- Sujet du TP Thread: lecteur video
- 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 :
1 |
|
- 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
1 2 3 4 |
|
- Tests: valgrind est votre ami (tools: helgrind et drd)
- Coccinelle (spatch: semantic patch):
- installation sous depuis la page Ubuntu launchpad, avec des mises à jour, cf https://launchpad.net/~npalix/+archive/ubuntu/coccinelle
- sinon télécharger coccinelle à la main sur la page précédente
1 2
wget https://launchpad.net/~npalix/+archive/ubuntu/coccinelle/+files/coccinelle_1.0.8~20.04npalix1_amd64.deb sudo dpkg -i coccinelle_1.0.8~20.04npalix1_amd64.deb
- installation avec nix (sudo apt install nix; et vous ajouter au
group nix-users) pour la Ubunutu LTS 20.4 qui n'a pas spatch,
alors qu'il existe dans les Ubuntu avant et après.
1 2 3 4 5
# une seule fois nix-channel --add https://nixos.org/channels/nixpkgs-unstable # pour lancer un shell qui aura coccinelle en supplément nix-channel --update nix-shell -p coccinelle --command=bash
Séance 5 (2 créneaux de TD de 1h30)
Sémaphore 1
Séance 6 (2 créneaux de 1h30, 1 TD et 1 TP)
Mémoire virtuelle (1h30 TD)
TD mémoire virtuelle, TD mémoire virtuelle (version SV)
Mémoire: couplage mémoire (memory mapping) (1h30 de TP sur machine)
1 2 3 4 5 6 7 |
|
1 |
|
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 :
1 |
|
Annales d'examens
QCM (Quiz interactifs)
Si vous voyez un bug dans les corrections, merci de le faire remonter !
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
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