Le système d'exploitation est l'interface entre le matériel et les applications informatiques. Il est donc crucial que les futurs informaticiens connaissent les différentes fonctions que doit remplir un système d'exploitation, et sachent les exploiter au mieux, que ce soit en tant qu'utilisateur, administrateur, ou programmeur.
Nous aborderons les notions de base des systèmes d'exploitation : système de fichiers, processus, communication entre processus et gestion de la mémoire. Ces notions seront à chaque fois appliquées, soit au travers des primitives de programmation POSIX en C, soit via l'utilisation d'outils en ligne de commande. Les étudiants travailleront sous GNU/Linux, comme modèle de système Unix ; nous prendrons aussi quelques exemples issus du système Windows.
Pour entrer dans plus de détails, nous aborderons dans l'UE les points suivants :
- Présentation des ressources, notion de protection et de mode noyau ou utilisateur.
- Les différents types de fichiers, les primitives pour les manipuler, et des exemples de systèmes de fichiers.
- La notion de processus, la création, la terminaison et le recouvrement de processus.
- Des méthodes de communication entre processus : variables d'environnement, signaux, tubes.
- Les sockets et le modèle client-serveur, comme méthode de communication entre processus distants.
- Des notions sur la gestion virtuelle de la mémoire par pagination.