ECTS : 4
Volume horaire : 30
Description du contenu de l'enseignement :
Ce cours étudie le système d'exploitation UNIX en général et la programmation système en particulier. Le système d'exploitation est le premier programma exécuté lors de la mise en marche d'un ordinateur. Il contrôle l'exécution de tous les programmes d'applications et soustrait le matériel au regard de l'utilisateur. Il est donc important de l'analyser pour comprendre comment fonctionne un ordinateur.
Nous choisissons de baser notre études sur UNIX parce qu'il est le plus utilisé sur Internet par les équipements réseaux (routeurs, serveurs web ou serveurs DNS). De plus, il est gratuit et son code est libre et accessible (open source).
Les grandes parties de ce cours sont les suivantes:
(1) Introduction au langage de programmation C ;
(2) Vue générale d'un système d'exploitation;
(3) Système de gestion de fichiers UNIX ;
(4) Généralités sur les processus et ordonnancement ;
(5) Gestion des processus sous UNIX ;
(6) Communication inter-processus par tubes et notion de mémoire partagée ;
(7) Communication inter-processus par signaux.
Le chapitre (1) donne les éléments du langage C nécessaires pour aborder la programmation système.
Le chapitre (2) rappelle l'historique des systèmes d'exploitation et décrit leur structure générale.
Le chapitre (3) décrit le système de gestion de fichiers qui est l'un des éléments de base du système d'exploitation, et insiste sur celui d'UNIX.
Le chapitre (4) aborde de manière plus détaillée les processus et leur ordonnancement.
Le chapitre (5) insiste sur la gestion des processus dans le système UNIX.
Les chapitres (6) et (7) abordent la communication entre processus, en particulier la communication à travers des tubes et par signaux.
Le cours est organisé en cours magistraux et séances de travaux dirigées et/ou travaux pratiques. A chaque chapitre est associé une série d'exercices et de problèmes pour amener les étudiants à mieux assimiler les différentes notions abordées en cours.
Compétence à acquérir :
Comprendre les différentes tâches d’un système d’exploitation : faire l’interface entre l’utilisateur et la machine, gestion des processus (ordonnancement, communication), gestion des ressources (exclusion mutuelle), gestion des fichiers (organisation du disque) et de la mémoire (mémoire virtuelle).
Comprendre le lien entre systèmes d’exploitation et développement : appels système, compilation, librairies…