SMB137 : Systèmes d'exploitation : principes, programmation et virtualisation (6 ECTS)
Pré-requis
élèves avec les connaissances de la programmation et des systèmes informatiques vues en premier cycle du Cnam ou équivalent
Objectifs
Comprendre les principaux concepts et paradigmes des systèmes d'exploitation modernes.
Les concepts présentés couvrent un nombre important de types de systèmes, des systèmes embarqués et mobiles aux systèmes des data-centers et du Cloud en passant par les systèmes des postes de travail.
Etudier les mécanismes de base mis en oeuvre dans le noyau de systèmes tels que Linux ou Unix BSD, dans les systèmes temps réel tels que LynxOS ou QNX, ou dans les systèmes pour réseaux de capteurs comme LiteOS ou Contiki.
Comprendre les nouvelles fonctions intégrées dans les architectures matérielles récentes (processeurs multi-coeurs, support matériel de la virtualisation de systèmes).
Obtenir des bases dans la programmation concurrente et dans la compréhension des mécanismes de gestion du parallélisme utilisés dans les noyaux des systèmes.
Comprendre et maîtriser les objectifs et les principes de la virtualisation de systèmes, les différentes techniques mises en oeuvre dans les hyperviseurs logiciels (VMware, Xen, KVM) et le support de la virtualisation intégré dans les architectures matérielles récentes (processeurs Intel-VT, fonctions PCI virtuelles, etc...).
Contenu
- Principes de base d'un système d'exploitation
Rappel sur l'architecture des ordinateurs : modes d'exécution, interruptions, gestion des périphériques, entrés/sorties en mode DMA, pile d'exécution, etc.
Environnement de développement et conception modulaire de programmes : compilation croisée, éditions de liens statique et dynamique, bibliothèques partagées. Exemple des "shared object" du système Linux.
Présentation de la notion de processus et de contexte d'exécution indépendant, d'espace d'adressage séparé, de chargement dynamique de programme.
Introduction au parallélisme et à la programmation concurrente. Notions de thread et de processus multi-threads. Description des politiques d'ordonnancement pour l'attribution des processeurs.
- Gestion mémoire
Introduction aux techniques d'allocation mémoire : Allocateurs first-fit, best-fit et worst-fit, allocation selon le principe du buddy-system.
Etude du mécanisme matériel de protection de la mémoire physique de type MPU (Memory Protection Unit) introduit dans les processeurs dédiés aux systèmes enfouis (automobile).
Etude de la pagination et de la gestion des espaces d'adressage paginés dans les systèmes Unix et Linux. Fonctionnement d'une MMU (Memory Management Unit) et d'un TLB (Translation Lookaside Buffer). Méthodes de gestion des défauts de page, principes du va-et-vient (swapping) et algorithmes de remplacement de pages.
Principes de fonctionnement des caches mémoire et de leur mise en oeuvre dans les architectures modernes à base de processeurs multi-coeurs. Techniques logicielles d'exploitation des caches mémoire pour l'optimisation des performances des systèmes.
- Gestion du parallélisme et mécanismes de synchronisation
Présentation des différents paradigmes de la concurrence et des mécanismes de synchronisation associés.
Etude du problème de l'exclusion mutuelle pour l'accès cohérent à des ressources partagées entre entités concurrentes.
Exemple des mécanismes de synchronisation de type mutex dans le contexte des applications multi-threads.
Etude de réalisation d'un mécanisme de synchronisation de type mutex dans un noyau de système basée sur les méthodes suivantes :
le masquage des interruptions sur un mono-processeurbr / le masquage de la préemption de thread sur un mono-processeurbr / l'utilisation d'instructions atomiques et d'instructions de type "test-br / and-set" dans les architectures multi-processeurs.br / br / Etude comparée des politiques de synchronisation de type " coarse-grained locking " et de type " fine-grained locking ".br / Probléme de l'inversion de priorité et ses solutions.br / Problème de l'inter-blocage ("deadlock" en anglais) et ses solutions.br / br / emLe cours sur la mise en oeuvre de la concurrence et des mécanismes debr / synchronisation est basé sur un exemple concret (/ememécrit en langage C)/embr / emd'un allocateur mémoire dans un noyau de système./embr / br / strong4. Virtualisation de Systèmes/strongbr / Historique et objectifs de la virtualisation de systèmes : utilisation optimale des ressources, exécution simultanée de plusieurs systèmes hétérogènes sur une seule machine, etc.br / br / Description des notions de machine virtuelle, de virtualisation hébergée ("hosted virtualisation") ou autonome ("standalone virtualisation"), de systèmes invités et de systèmes hébergeur, d'hyperviseur.br / br / Virtualisation par émulation transparente du matériel - exemple de Qemu.br / br / Virtualisation transparente du matériel (VMware) :br / - virtualisation du CPU - problème des instructions critiquesbr / - virtualisation de MMU par la technique des shadow page tablesbr / - virtualisation des entrées/sorties par émulation de périphériques.br / br / Para-virtualisation (Xen) et entrées/sorties à travers des périphériques virtuels (Ethernet, disques).br / br / Support matériel de la virtualisation de système.br / Exemple de l'architecture Intel-VT intégrant le support de machine virtuelles (extension de la virtualisation VMX).br / br / Virtualisation de périphériques PCI et fonctions PCI virtuelles partagées entre systèmes invités.br / Exemple de Ethernet et des communications entre machines virtuelles et/ou des machines virtuelles avec l'extérieur.br / br / Etude de la virtualisation de systèmes dans les systèmes embarqués.br / Exemple des téléphones intelligents ("Smartphones") fonctionnant sous le système Android de Google.br / br / Conclusion sur l'évolution des techniques de la virtualisation de système, des défis posés par sa diffusion (logiciel libre, open source, etc.)br /
Modalités de validation
Examen écritbr /
Compétences visées
Obtenir des bases solides dans les domaines apparentés à la conception de systèmes d'exploitation et dans la mise en oeuvre de la concurrence dans les systèmes temps-réel.br / br / Comprendre l'architecture et le fonctionnement des systèmes d'exploitation tels que Unix et Linux pour maîtriser leur administration et le développement d'applications.br / br / Maîtriser les principes sous-jacents à la virtualisation de systèmes afin de faciliter l'intégration et l'administration de ce type de service dans un système informatique (Cloud Computing, Haute Disponibilité, Tolérance aux pannes, etc.)br / A la fin du cours, un(e) étudiant(e) ayant suivi l'UE doit pouvoir identifier tous les aspects clef des systèmes d'exploitation qui peuvent avoir un impact sur une application, et plus globalement sur l'urbanisation du système d'information.br / br /
Cette unité d'enseignement n'est dispensée dans aucun centre pour le moment.
N'hésitez pas à revenir consulter cette page régulièrement.