4EXP3A - Exploitation des systèmes III
Appartient à l'UE Exploitation des systèmes III
Personnes enseignantes
- Abdeselam El Haman Abdeselam (AEL)
- Monica Bastreghi (MBA)
- Morel Bodin (MBO)
- Nicolas Vansteenkiste (NVS)
Description technique du cours
- Acronyme de l’activité : 4EXP3A
- Bloc : 2
- Quadrimestre : 4
- Nombre de crédits : 2
- Langue d’instruction : français
- Implantation : HE2B – ESI
- Pré-requis : néant
- Co-requis : 3EXP2A
Détails des parties
L’unité d’enseignement est composée des parties suivantes :
| Partie | Acronyme | Format | Heures de cours | Heures hors cours (estimation) |
|---|---|---|---|---|
| Exploitation des systèmes 3 - Théorie | 4EXP3A-T | Auditoire | 12 | 20 |
| Exploitation des systèmes 3 - Laboratoires | 4EXP3A-L | Laboratoire | 12 | 15 |
Description générale du cours
L’unité présente les principaux composants d’un système d’exploitation de type linux au travers de l’étude de ses structures de données et appels système. Les mécanismes fondamentaux sont décrits. Les travaux pratiques aident à la compréhension du cours théorique.
Ce cours est la suite du cours 2EXP3A
Objectifs généraux
Au terme de l’activité d’apprentissage, l’étudiante ou l’étudiant sera en mesure de :
- Savoir explorer/montrer le fonctionnement du noyau Linux et de ses Appels Système
- Adopter une position critique vis à vis de la documentation liée au Système d’Exploitation
- Savoir se servir de la documentation fournie dans les pages de manuel man
Acquis d’apprentissage spécifiques sanctionnés par l’évaluation
Au terme des séances, l’étudiante ou l’étudiant sera évalué sur sa capacité à :
- expérimenter, démontrer et expliquer les mécanismes fondamentaux de la gestion des processus d’un système d’exploitation de type Linux, y compris le rôle du processus init (systemd, 1, …), la filiation, les états zombie et le mécanisme d’adoption.
- expliquer le mécanisme du copy on write lié à l’appel système
fork - identifier et schématiser les structures de données fondamentales utilisées pour la gestion de processus dans un système d’exploitation Linux, telles que les tables de processus, les tables de fichiers ouverts, les tables des signaux et de leurs traitements.
- retenir, expliquer et expérimenter les appels système les plus couramment utilisés pour la gestion des processus dans le développement sous Linux comme
fork, exec, wait, waitpid, wait4 ...et leur lien avec les structures de données du noyau. - expliquer, schématiser et expérimenter l’interaction des appels système liés à la gestion des processus avec les appels système (
dup2, open, ...) - expliquer, schématiser et expérimenter le mécanisme des signaux standards d’un système linux, leur lien avec les structures de données du noyau ainsi que les faiblesses liées.
- retenir et expliquer le comportement et l’utilité des différents signaux standard comme
SIGINT, SIGSTP, SIGALRM, SIGCHLD, SIGINT, SIGUSR1,. - retenir, expliquer et utiliser différentes techniques pour la gestion des zombies.
- expliquer et écrire l’algorithme d’un shell simple
- retenir, expliquer et différencier la notion de commande interne et externe ainsi que leur programmation au sein d’un shell.
- expliquer et expérimenter l’ajout de fonctionnalités au shell simple (redirection, commandes internes, pipes,
*, $$, (), &&, ||, ...) - expliquer et expérimenter la notion de
RUID, EUIDainsi que leur lien avec le bitSUID - expliquer et expérimenter la faille de sécurité liée à la combinaison du bit
SUIDet des fonctionssystem et exec...utilisant la variable d’environnementPATH. - expliquer et expérimenter la faille de sécurité liée à la combinaison du bit
SUIDet des fonctionssystem et exec...utilisant la variable d’environnementPATH. - expérimenter, démontrer et expliquer les mécanismes fondamentaux de la gestion des threads POSIX, dans une approche comparative avec les processus du noyau.
- expérimenter, démontrer et expliquer les mécanismes fondamentaux des signaux dans le cadres de l’utilisation des threads POSIX.
Acquis terminaux visés
Au sein de la formation de bachelier en informatique, cette activité d’apprentissage aura participé à l’acquisition des compétences suivantes.
- Choisir et mettre en œuvre un standard défini ou une technologie spécifique (méthodologie, environnement, langage, framework, librairies…).
Modalités d’évaluations
| Évaluation continue | Examen en première session | Examen de seconde session |
|---|---|---|
| – | E 100% | E 100% |
E = écrit
L’examen écrit porte sur la théorie et le laboratoire (Matière vue au cours et structures de code).
Contenus
- Notions de processus et parenté aspects approfondis - structures et Appels Système liés (avec exercices en Laboratoire)
- Signaux aspects approfondis - structures et Appels Système liés (avec exercices en Laboratoire)
- Structure d’un shell simple et améliorations (avec exercices en Laboratoire)
- Ébauche d’une faille de sécurité (SUID - exec et PATH)
- Threads et processus, approche comparative
Bibliographie
###
- Programmation Système en C sous Linux 2ième édition - Christophe Blaess - Eyrolles (2005)
- Pages de manuel man de niveaux 2, (3), 5, 7, 8
- Andrew Tanenbaum, Herbert Bos - Modern Operating Systems - Pearson (4th édition)
- Mikael Kerrisk - The linux programming interface - (no starch press 2010)
- Intel 64 and IA-32 Architectures Software Developer’s Manual - December (2011)
- Richard Stevens - Advanced Programming in the UNIX Environment (2nd edition)
- Peter Prinz, Tony Crawford - “C in a nutshell, A desktop Quck Reference” O’REILLY 2006
- Introduction aux systèmes d’exploitation (cours et exercices en GNU/Linux - Ellipses (2019). (Attention cet ouvrage présente quelques erreurs)