3EXP2A - Exploitation des systèmes II

Appartient à l'UE Exploitation des systèmes II

Personnes enseignantes

Description technique du cours

  • Acronyme de l’activité : 3EXP2A
  • Bloc : 2
  • Quadrimestre : 3
  • Nombre de crédits : 3
  • Langue d’instruction : français
  • Implantation : HE2B – ESI
  • Pré-requis : néant
  • Co-requis : néant

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 2 - Théorie 3EXP2A-T Auditoire 18 25
Exploitation des systèmes 2 - Laboratoires 3EXP2A-L Laboratoire 18 30

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.

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é à :

  • différencier, décrire, schématiser et utiliser les principaux composants d’un système d’exploitation de type Linux, tels que le noyau, les librairies de synchronisation de processus, la mémoire virtuelle et les systèmes de fichiers ;
  • expliquer, analyser, lier et différencier les structures de données fondamentales utilisées dans un système d’exploitation Linux, ainsi que leur rôle et utilisation. Structures, telles que les tables de processus, la table des pages, les sémaphores, les tables et descripteurs de fichiers, les inodes et la table d’inodes, les entrées de répertoire ;
  • retenir, employer, expliquer et expérimenter les appels système les plus couramment utilisés dans le développement sous Linux ;
  • expliquer et expérimenter les mécanismes fondamentaux d’un système d’exploitation de type Linux, y compris la gestion et le partage de la mémoire, la gestion de la synchronisation des processus et la gestion des entrées/sorties et des disques ;
  • expliquer la notion de commande filtre ;
  • différencier le passage d’arguments et la redirection ;
  • utiliser la gestion des erreurs lors de l’utilisation des appels système sous Linux.
  • expérimenter, démontrer et expliquer les mécanismes de base de la gestion des processus d’un système d’exploitation de type Linux.
  • 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.
  • expliquer et expérimenter la gestion de fichiers creux dans différents systèmes de fichiers
  • 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 getpid, getppid, fork, wait, getresuid, getrusage, ... et leur lien avec les structures de données du noyau.
  • expliquer et expérimenter la communication entre processus d’un même utilisateur via des signaux.
  • retenir, expliquer, expérimenter et schématiser le fonctionnement des appels système linux qui permettent la communication entre processus apartenant au même utilisateur comme kill, sigaction, , signal, pause, ... et leur lien avec les structures de données du noyau.

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

  • Espace disque et Systèmes de fichiers - structures et Appels système liés (avec exercices en Laboratoire)
  • Mémoire - Notion d’espace d’adressage, projections (avec exercices en Laboratoire), pagination intel 32 bits
  • IPC - problématiques de partage, synchronisation et outils (IPC System V), structures et Appels système liés (avec exercices en Laboratoire)
  • Introduction aux notions de processus et parenté - structures et Appels Système liés (avec exercices en Laboratoire)
  • Introduction aux signaux POSIX - structures et Appels Système liés (avec exercices en Laboratoire)

Bibliographie

  1. Programmation Système en C sous Linux 2ième édition - Christophe Blaess - Eyrolles (2005)
  2. Pages de manuel man de niveaux 2, (3), 5, 7, 8
  3. Andrew Tanenbaum, Herbert Bos - Modern Operating Systems - Pearson (4th édition)
  4. Mikael Kerrisk - The linux programming interface - (no starch press 2010)
  5. Intel 64 and IA-32 Architectures Software Developer’s Manual - December (2011)
  6. Richard Stevens - Advanced Programming in the UNIX Environment (2nd edition)
  7. Peter Prinz, Tony Crawford - “C in a nutshell, A desktop Quck Reference” O’REILLY 2006
  8. Introduction aux systèmes d’exploitation (cours et exercices en GNU/Linux - Ellipses (2019). (Attention cet ouvrage présente quelques erreurs)