Connaissances préalables recommandées :
L’étudiant doit connaître et savoir utiliser les notions suivantes :
- un langage de programmation système tel que le langage C.
- un modèle abstrait du fonctionnement d'un processeur.
- structures de données linéaires (listes, piles et files).
- notions élémentaires de programmation concurrente (verrous, sémaphores et moniteurs).
L'unité d'enseignement INF2 (informatique), ASD1 (algorithmes et structures de données) et PCO1 (programmation concurrente) permettent d'acquérir ces connaissances.
Objectifs :
A l'issue de cette unité d'enseignement, l'étudiant-e sera capable de :
- expliquer les différentes architectures d'un système d'exploitation.
- expliquer le rôle des différents sous-systèmes d'un système d'exploitation.
- expliquer les différents algorithmes d'allocation du processeur dans les systèmes d'exploitation existants.
- expliquer le fonctionnement d'un système à mémoire segmentée et/ou paginée.
- expliquer les différents algorithmes d'allocation mémoire et de remplacement de pages.
- expliquer comment fonctionne un système de fichiers.
- expliquer le fonctionnement des appels systèmes standards POSIX.
- expliquer les différents mécanismes de communication et de synchronisation inter-processus.
A l'issue des travaux pratiques en laboratoire, principalement destinés à l’assimilation des connaissances et à
l’acquisition d’expérience dans la programmation système, l’étudiant-e sera en outre capable de :
- manipuler les principaux appels systèmes d'un système d'exploitation.
- réaliser une application multi-processus et multi-threadée en utilisant les primitives d'un système d'exploitation.
- développer des extensions et des utilitaires reposant sur un système d'exploitation.