Volumes horaires
- CM 16.0
- Projet 0
- TD 0
- Stage 0
- TP 12.0
Crédits ECTS
Crédits ECTS 2.0
Objectif(s)
Comprendre les enjeux de la gestion des différentes ressources (temps, mémoire) ;
Comprendre la nécessité de dispositifs matériels associés (instruction atomique, MMU, niveau de privilège, etc.) ;
Réfléchir avec des notions systèmes de base (processus, tâche, signal, synchronisation)
Faire le lien avec une API standard (POSIX)
Contenu(s)
Cours
- Nécessité (ou pas) d'un système d'exploitation
- Processus et tâches
- Événements : interruptions et signaux
- Gestion du CPU
- Gestion de la mémoire
- Synchronisation (mutex, spinlock, sémaphore, algos sans interblocage)
Les TD visent tous à développer la pratique et la culture générale en programmation système, à l'aide d'exemples les plus aboutis possibles en pratique. On programmera notamment un filtre Unix, un démon, une application de traitement d'image à base de greffons, et un système d'aide au déboguage de la mémoire. On passera également en revue les grands écueils en programmation concurrente (découpage du calcul et synchronisation, granularité, etc.)
Prérequis
- Un niveau correct en C de base.
Quelques notions qui ne doivent idéalement pas poser de problème : - chaîne de compilation ;
- unions et structures ;
- pointeurs, pointeurs de fonction ;
- utilisation de base du préprocesseur.
- Une expérience de l'environnement Unix.
Quelques notions qui ne doivent idéalement pas poser de problème : - gestion des fichiers et répertoires depuis la ligne de commande ;
- commandes usuelles ;
- options et utilisation de base de gcc et de make.
EXAM
1 devoir surveillé de 2h sans documents ni aucun dispositif électronique :
- 10 points sur le cours
- 6 points sur les TD
- 4 points sur des questions de réflexion
- MCC en présentiel **
N1=EXAM1
N2=EXAM2
- MCC en présentiel **
- MCC en distanciel **
N1 = TP à distance
N2 = TP2 à distance
- MCC en distanciel **
"Principes des Systèmes d'Exploitation", Abraham Silberschatz, Peter B. Galvin, Greg Gagne
"Programmation Système en C sous Linux", Christophe Blaess