Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Laissez votre système d'exploitation à la maison : l'essor des systèmes d'exploitation de bibliothèque

Par Fayçal SIDI ALI MEBAREK Publié le 25/03/2020 à 16:55:42 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

L'efficacité des systèmes d'exploitation (OS) a toujours été au centre de l'attention des chercheurs en systèmes, depuis le système multiprogrammé de Dijkstra au début des années 60. Mais la raison de cette obsession n'est pas tout à fait évidente. Alors que le système d'exploitation est généralement perçu comme une couche entre les applications et le matériel, une telle vision est quelque peu trompeuse, du moins en ce qui concerne l'unité centrale : le code des applications s'exécute sur l'unité centrale sans aucune médiation du système d'exploitation. Le système d'exploitation n'intervient que pour les événements de gestion (c'est-à-dire la préemption de processus) et pour les accès aux ressources partagées (c'est-à-dire les entrées/sorties de fichiers/réseaux). On peut donc se demander quelle quantité de code du système d'exploitation est réellement exécutée ?

Il s'avère que dans les centres de données, environ 15 à 20 % des cycles de CPU sont passés dans le noyau du système d'exploitation. En effet, la plupart de ces charges de travail sont intensives en termes d'entrées/sorties, ce qui fait qu'elles sollicitent de multiples composants du système d'exploitation, des pilotes de périphériques à la pile d'entrées/sorties de fichiers en passant par le réseau, jusqu'au programmateur du système d'exploitation qui gère des milliers de threads.

Pris isolément, chaque morceau de code du système d'exploitation est généralement hautement optimisé. Cependant, le système dans son ensemble souffre de plusieurs problèmes de performance inhérents qui sont l'implication directe des principes de conception qui sous-tendent les systèmes d'exploitation traditionnels :

- Protection : le chemin d'exécution de l'application vers le système d'exploitation passe par deux domaines de protection (ou plus pour les machines virtuelles), ce qui entraîne le changement de monde (mode utilisateur-noyau et retour) avec les frais généraux associés.

- Modularité : de nombreuses couches d'abstractions dans la conception du système d'exploitation sont essentielles pour en apprivoiser la complexité. Le croisement de ces couches peut être coûteux car elles nécessitent souvent des copies de données supplémentaires et imposent d'autres frais généraux liés à l'encapsulation du logiciel.

- Généralité : le système d'exploitation ne tient pas compte de la logique de l'application et de l'état d'exécution, il n'offre donc que des mécanismes et des politiques générales qui ne sont pas bien adaptés à une application spécifique. Par exemple, une application peut bénéficier d'une structure de table de pages personnalisée plutôt que d'une arborescence radix.

Pour surmonter ces limitations, il faut une conception de système d'exploitation radicalement différente qui donne aux développeurs le pouvoir de couper à travers les couches d'abstraction pour mettre en œuvre des abstractions de système d'exploitation de base spécifiques aux applications, tout cela sans compromettre la protection des états et l'isolation des performances.

Exokernel et libOS

Dans leurs travaux très influents, Dawson Engler et al. ont introduit une architecture de système d'exploitation exokéranique qui "extermine toutes les abstractions de système d'exploitation" et permet aux développeurs d'applications de construire les leurs de manière sûre et efficace. Ces services d'OS spécifiques aux applications sont encapsulés dans un OS de bibliothèque (libOS) fonctionnant en mode utilisateur dans le cadre de l'espace d'adressage des applications. Il n'y a pas de partage de libOS entre les applications, de sorte que les services partagés tels qu'un système de fichiers doivent être mis en œuvre en tant que serveurs partagés (comme dans la conception des micro-noyaux).

En dessous, le noyau exokernel privilégié fournit un ensemble minimaliste d'interfaces au niveau du matériel pour le multiplexage du matériel entre les applications. L'exokérnel joue le jeu de la "confiance, mais vérification" : il alloue les ressources en dehors du chemin critique de l'application, mais il impose l'allocation au moment de l'exécution avec une faible surcharge. La gestion dans les limites des ressources allouées est laissée à la libOS spécifique à l'application qui met en œuvre toutes les abstractions et services de base, y compris la mémoire virtuelle, le programmateur, le système de fichiers et la pile réseau. Le résultat final est une architecture de système d'exploitation remarquablement extensible qui minimise ou élimine complètement les inconvénients des performances des systèmes d'exploitation traditionnels.

Nouvelle génération de libOSes à application unique

Malgré les changements considérables survenus dans le paysage du matériel et des logiciels depuis la publication du document en 1995, les concepts introduits dans Exokernel sont encore plus pertinents aujourd'hui. L'émergence de dispositifs d'entrée/sortie à haut débit et faible latence déplace les goulets d'étranglement des performances des couches de gestion du matériel vers les couches de gestion des logiciels du système d'exploitation, et motive l'accès sans intermédiaire des applications au matériel. Par exemple, les bibliothèques de réseau en espace utilisateur, c'est-à-dire les DPDK, permettent aux applications d'accéder directement aux tampons d'entrée/sortie des cartes réseau qui contournent entièrement le système d'exploitation, et sont largement utilisées dans les applications à performances critiques, telles que le traitement des paquets.

L'une des principales technologies habilitantes qui rendent les libOS à application unique pratiques est la virtualisation assistée par le matériel qui simplifie la tâche de fournir une forte isolation entre de multiples applications, tant pour le processeur que pour les périphériques. Cependant, il existe plusieurs autres domaines dans lesquels les libOS s'avèrent être une bonne solution. Les cas d'utilisation les plus courants sont brièvement décrits ci-dessous.

- Serveurs haute performance. IX et Arrakis (tous deux récompensés par le prix du meilleur article lors de la conférence OSDI14) sont les deux exemples les plus récents de systèmes d'exploitation qui mettent en œuvre les principes de conception exokernel sur du matériel moderne avec prise en charge de la virtualisation. La disponibilité de mécanismes sophistiqués de qualité de service et d'isolation dans les dispositifs d'entrée/sortie modernes initialement introduits pour la virtualisation, permet de supprimer complètement la logique du SE du plan de données. Ces articles fournissent un certain nombre d'informations intéressantes sur les caractéristiques matérielles manquantes nécessaires pour réaliser pleinement la vision d'un plan de données sans système d'exploitation.

- Virtualisation légère. Unikernel est une conception dans laquelle une libOS hautement spécialisée est compilée avec une application, permettant au gros binaire résultant d'être invoqué sur une machine physique (ou virtuelle) en métal nu. Les Unikernels sont légers de par leur conception, n'incluent qu'un petit sous-ensemble de la logique du système d'exploitation et conviennent mieux aux applications qui nécessitent une forte isolation des machines virtuelles, mais avec un déploiement radicalement plus rapide et une empreinte mémoire minuscule du système d'exploitation.

- Couche de compatibilité. Les extensions de garde logicielle Intel (SGX) mettent en œuvre un environnement d'exécution blindé, appelé enclave, qui, de par sa conception, ne permet pas à une application d'effectuer des appels système, de sorte que les applications non modifiées ne peuvent pas s'exécuter dans des enclaves. Les libos SGX telles que SCONE et Graphene-SGX introduisent des couches de compatibilité à l'intérieur de l'enclave qui implémentent les interfaces manquantes du système d'exploitation, soit en natif (c'est-à-dire l'ordonnancement des threads au niveau de l'utilisateur), soit en transmettant de manière transparente les appels système de l'enclave au système d'exploitation en dehors de l'enclave. Un autre exemple de service d'enclave natif est notre récente bibliothèque Eleos qui fournit une gestion de la mémoire virtuelle de l'espace utilisateur pour SGX afin de stimuler la vitesse d'exécution de l'enclave des applications à grande empreinte mémoire.

- Systèmes accélérés. Dans nos travaux antérieurs sur les abstractions de systèmes d'exploitation GPU natifs, nous avons démontré les avantages en termes de performances et de programmabilité des appels d'E/S effectués directement à partir des noyaux GPU. Par exemple, les bibliothèques GPUfs et GPUnet mettent en œuvre un système de fichiers et des couches réseau sur le GPU. Ces libOS spécifiques aux appareils sont conçus pour répondre efficacement à de nombreuses demandes d'E/S simultanées provenant de milliers de threads GPU. Les travaux les plus récents étendent cette idée au-delà des GPU, en introduisant une architecture de système d'exploitation centrée sur l'accélérateur. Son but est d'éliminer les surcharges de contrôle du CPU dans les applications multi-accélérateurs en construisant un libOS optimisé pour chaque appareil sur chaque accélérateur, avec tous les libOS travaillant ensemble pour fournir une vue cohérente d'un système à l'application.

Implications en matière de matériel

L'adoption de libOSes est motivée par la nécessité d'atteindre une efficacité maximale, et devient pratique grâce à l'ajout de la prise en charge de la virtualisation matérielle dans les unités centrales et les périphériques d'entrée/sortie. Que manque-t-il donc ? C'est une question ouverte, mais voici quelques réflexions. Premièrement, pour certains appareils, c'est-à-dire les GPU et le stockage, la prise en charge de la virtualisation est assez limitée, de sorte qu'un accès direct non privilégié à ces appareils ne peut être pleinement pris en charge. En outre, la prise en charge matérielle du multiplexage à faible coût entre plusieurs applications pour les appareils à haut débit est un problème non négligeable. En outre, la virtualisation matérielle dans les dispositifs d'entrée/sortie n'est pas très répandue aujourd'hui (de l'ordre d'une centaine de fonctions virtuelles dans les cartes réseau, par exemple), de sorte que le nombre de libOS pouvant fonctionner simultanément est limité. Plus important encore, comme les appareils virtuels sont directement accessibles par un code utilisateur non fiable, ils sont exposés à des attaques qui auraient été bloquées par le système d'exploitation. Enfin, certaines des responsabilités traditionnelles du SE, telles que l'isolation des performances et le partitionnement des ressources, devraient être transférées au matériel, mais la manière de maintenir la flexibilité des mécanismes logiciels d'origine est souvent peu claire.

En résumé, les libOS fournissent une alternative attrayante aux systèmes d'exploitation traditionnels, en particulier pour les serveurs haute performance, mais ils posent de nouvelles exigences et fournissent une occasion de revoir le support architectural existant des systèmes d'exploitation afin de rendre les libOS plus robustes, plus utilisables et plus efficaces.

Bibliographie

https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems/

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels