Systèmes d'exploitation par l'exemple
| TP 1 : | |
|---|---|
| TP 2 : |
Présentation []
Les systèmes d'exploitation contemporains, en particulier GNU/Linux, proposent des abstractions qui ont évoluées bien au-delà du binôme Processus-Fichier. De même, la gestion du matériel utilise un assemblage complexe d'heuristiques et d'algorithmes d'optimisation qui rendent leurs comportements parfois surprenants.
Le but de cette leçon est de faire quelques expériences sur quelques-uns de ces comportements afin de se questionner sur ce qui se passe en profondeur.
Objectifs []
Prédire (mentalement ici) le résultat attendu est le pré-requis d'une bonne expérimentation. Faire l’expérimentation permet de vérifier la prédiction et de trouver les points intéressants à creuser pour mieux cerner le sujet.
L'objectif de la leçon est d'apporter une compréhension plus fine des systèmes d'exploitation en réalisant quelques expériences autour des synchronisation entre threads, de la mémoire, des synchronisations entre processus.
C'est de faire l'expérience qui est le but de la leçon. Pas le résultat de l'expérience.
Niveau et prérequis conseillés []
Leçon de niveau 17. Le niveau 17 de cette leçon vient surtout du panel large de pré-requis en Informatique. Les fondamentaux de chaque point peuvent suffire.
Globalement
- Introduction au langage C
- Compilation
- Systèmes d'exploitation
- Architecture des ordinateurs
Spécifiquement pour pouvoir faire les travaux pratiques
- une distribution GNU/Linux récente grand public fournit tous les outils de la suite de cette liste. Les commandes ont été testées dans une Debian et devrait fonctionner directement dans ces descendantes (Ubuntu et ses filles)
- un émulateur de terminal et savoir manipuler les commandes de base d'Unix dans ce terminal
- time, (paquetage time dans Debian/Ubuntu), pour afficher des statistiques sur les processus. D'autres outils peuvent creuser plus profond, comme perf, mais il faut un peu de configuration (/proc/sys/kernel/perf_event_paranoid à ajuster dynamiquement, ou bien avec /etc/sysctl.conf)
- un compilateur C/C++ (GCC/G++ dans les exemples et corrections, Clang devrait fonctionner aussi). Privilégier la version du compilateur la plus récente possible car ils améliorent les retours pour le programmeur au fil des versions.
- Certains TP utilisent ponctuellement des logiciels qui sont facilement disponible dans une distribution GNU/Linux: Python, Fortran, ...
- un éditeur de texte ou un environnement de développement pour pouvoir taper le code C
Référents []
Ces personnes sont prêtes à vous aider concernant cette leçon :