Acronym | ASE |
BCC | Système d’exploitation (SYS) |
Semestre | 2 |
ECTS | 3 |
UEs prerequises | PdC, PdS en Licence |
Responsable | Gilles Grimaud |
L’objectif de cette UE est de donner aux étudiants la maitrise des systèmes d’exploitations qui supportent l’exécutions de leurs programmes. A l’issue de ces enseignements l’étudiant doit comprendre l’architecture générale des logiciels qui compose d’un système d’exploitation. Il doit être en mesure de réaliser des pilotes de matériel efficaces et de justifier les performances d’un logiciel au regard du système et du matériel sur lequel il repose. Enfin il doit pouvoir concevoir et contribuer à la réalisation et/ou à la maintenance de piles logicielles complètes.
L’immense majorité des logiciels ne peuvent prendre vie sans le support d’un système d’exploitation. Puisque l’utilisation de ces systèmes fait partie intégrante de l’expérience professionnelle d’un développeur, la maitrise de leurs fonctionnement est une nécessité pour concevoir des logiciels efficaces et fiables.
Cette UE est composé de deux volets.
Le premier volet porte sur la mise en œuvre d’un système de fichier. Il s’agit de maitriser toutes les étapes qui jalonnent l’exploitation du disque dur (SSD ou mécanique) jusqu’à l’implémentation d’un service d’entrée-sortie asynchrone : les service de lecture et d’écriture dans un fichier. La pile de logiciel qui en résulte illustre bon nombre de paradigmes fondamentaux pour la conception de systèmes d’exploitation (liaison dynamique, interposition, virtualisation, …).
Le second volet porte sur le partage du temps d’exécution. Le microprocesseur est une ressource « comme une autre » d’un système d’exploitation. La gestion de cette ressource, implique la définition et la mise en œuvre de politiques d’ordonnancement qui en assurent le partage équitable. Elle nécessite aussi l’implémentation d’un moyen de préemption (implicite) et la réalisation d’un mécanisme de transfert de flot d’exécution entre les programmes qui se partagent cette ressource.
Séance | TD | TP | Éléments à rendre | Remarque |
---|---|---|---|---|
1 | Gestion de contextes : retour à un contexte |
Première manipulation pratique
Bibliothèque try()/throw() |
Readme, Makefile, display_stack.c, try.h, try.c, try_mul.c | Le TP est à rendre via GIT avant la prochaine séance de TP |
2 | Gestion de contextes : création d'un contexte d'exécution -- Changement de contexte | Bibliothèque de création et changement de contexte | Readme, Makefile, init_ctx(), switch_to() | Le TP est à rendre via GIT avant la prochaine séance de TP |
3 | Gestion de contextes : ordonnancement, ordonnancement sur interruptions | Bibliothèque d'ordonnancement | Readme, Makefile, create_ctx(), yield(), start_schedule() | |
4 | Gestion de contextes : synchronisation entre tâches | Bibliothèque de synchronisation | Readme, Makefile, sem.h, sem.c, prodcons.c | Les TP ordonnancement et synchronisation sont à rendre via GIT avant la prochaine séance de TP |