Systèmes d'explotation

Ref: 2EL6030

Description

Cet électif fait partie du parcours InfoSec. L'objectif de cet électif est de donner les connaissances et les compétences afin de réaliser un système d’exploitation multitâche gérant la mémoire des différents processus, gérant des interruptions et capable de réaliser des entrées-sorties.

Période(s) du cours

SG8

Prérequis

Les prérequis pour ce cours sont les suivants:
- Bonne maîtrise du langage C (par exemple en ayant suivi le cours de compilation du parcours Infosec)
- Un plus serait utile de connaître l'assembleur RISC-V (par exemple en ayant suivi le cours d'architecture des ordinateurs du parcours Infosec)


Syllabus

Les différents cours sont organisés de la manière suivante:
I Cours 1 :
- Histoire des systèmes d’exploitation
II Cours 2 :
- Démarrage du système d'exploitation
- Programmation des registres de contrôle
- Niveaux de privilège
- Gestion des interruptions
- Appels système
III Cours 3 :
- Ordonnancement des processus
- Algorithmes d'ordonnancement
- Changement de contexte
IV Cours 4 :
- Primitives de synchronisation en espace noyau et utilisateur
- Problème de concurrence
- Concurrence réelle et pseudo-concurrence
V Cours 5 :
- Gestion de la mémoire virtuelle
- Segmentation
- Pagination
- Protection mémoire
- Chargement de binaire
- Algorithme d'allocation mémoire

Composition du cours

CM 15h
TP 18h

Ressources

  • Enseignants : Frédéric Tronel et Pierre Wilke
  • Matériel nécessaire : un ordinateur équipé d'un système d'exploitation Linux.
  • Logiciels nécessaires : chaîne de cross-compilation gcc pour RISC-V, qemu-riscv64, docker (Un guide d'installation de ces différents outils sera fourni en introduction du cours)
  • Résultats de l'apprentissage couverts par le cours

    Comprendre les concepts mis en oeuvre lors de la conception d'un système d'exploitation.
    Comprendre l'impact des services offerts par un système d'exploitation sur les performances et la sécurité des applications.

    Support de cours, bibliographie

    - Andrew Tanenbaum, " Systèmes d'exploitation ", 3eme Edition, Pearson.
    - Russinovich, Mark, Solomon, David, Ionescu, Alex, "Windows Internals", 6eme edition, Microsoft Press.
    - Daniel Bovet, Marco Cesati, "Understanding the Linux Kernel", 2nd Edition, O'Reilly.
    - Love, Robert , "Linux Kernel Development: A thorough guide to the design and implementation of the Linux kernel (Developer's Library) ", Addison-Wesley.