IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

L'unikernel C++ IncludeOS devient gratuit et passe en open source


Sujet :

C++

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    25 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 25 946
    Points : 207 557
    Points
    207 557
    Billets dans le blog
    85
    Par défaut L'unikernel C++ IncludeOS devient gratuit et passe en open source
    L'unikernel C++ IncludeOS devient gratuit et passe en open source


    IncludeOS est un prototype d'unikernel en C++. Un unikernel est une image machine fonctionnant avec un espace d’adressage simple construite à partir de bibliothèques pour reproduire un système d'exploitation. L'avantage est ainsi de construire un système spécialisé capable de démarrer dans une machine réelle ou virtuelle aussi léger et rapide que possible. De plus, le système est construit pour une tâche spécifique (pour une application spécifique) et n'embarquera donc pas de bibliothèques supplémentaires pouvant être inutiles.

    IncludeOS est un unikernel en C++ orienté service. Il est maintenant gratuit et open source. Vous pouvez retrouver son code sur GitHub. La licence utilisée est Apache v2.
    Grâce à IncludeOS vous allez pouvoir exécuter votre code C++ directement sur une machine virtuelle (KVM ou VirtualBox). Pour cela, la bibliothèque apporte un bootloader, les bibliothèques standards, de nombreux modules et le système. Il ne vous reste plus qu'à écrire le service.

    Toutefois, IncludeOS n'est toujours qu'un prototype. Plus précisément, c'est un projet de recherche (Akershus University College of Applied Science, Oslo) ayant déjà résulté en une publication à la IEEE CloudCom 2015.

    Fonctionnalités :
    • empreinte mémoire très réduite ;
    • support de KVM et VirtualBox avec virtualisation complète ;
    • support du C++11/14 (libc++ pour la bibliothèque standard et libgcc pour les exceptions) ;
    • bibliothèque standard C (newlib de RedHat) ;
    • pilote réseau virtio ;
    • pile réseau TCP/IP hautement modulaire.


    Voici un exemple de service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <os>
    #include <stdio.h>
     
    void Service::start()
    {
     
      printf("Hello world - OS included!\n");
     
    }

    Votre opinion

    Avez-vous déjà utilisé un unikernel ? Lequel ?
    Pensez-vous que cela a une utilité ? Laquelle ?
    Comment pensez-vous pouvoir utiliser cette bibliothèque ?


    Source

    Site officiel
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2012
    Messages : 1 711
    Points : 4 412
    Points
    4 412
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Pensez-vous que cela a une utilité ? Laquelle ?
    L'embarqué probablement, mais je sais pas trop vu que c'est compatible x86 seulement.

    Sinon des projets très spécifiques (ils donnent l'exemple d'un serveur DNS).

    Intéressant en tout cas et le nom est bien trouvé.

  3. #3
    tlt
    tlt est déconnecté
    Membre averti Avatar de tlt
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juillet 2004
    Messages : 195
    Points : 393
    Points
    393
    Par défaut
    Le genre de chose dont j'avais vraiment besoin quand j’étais plus jeune, surtout dans le domaine de l'embarqué

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2007
    Messages
    838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : juillet 2007
    Messages : 838
    Points : 1 804
    Points
    1 804
    Par défaut Ré-écrire? pourquoi ne pas dépouiller un linux.
    Je ne connaissait pas l'Unikernel avant de lire cette article. Je trouve le principe très intéressant. mais je me pose une question.

    Pourquoi ré-écrire tout ce qui fait la complexité d'un OS plutôt que de partir d'un Linux minimal et le dépouiller pour lui enlever les fonctionnalité inutile. Comme fonctionnalité a revoir il y a :
    - Le Shell mais ça c'est assez simple a supprimer bien qu'il faille alors revoir le système de lancement par script... mais pour ça il y a Systemd.
    - La gestion mémoire qui n'a plus besoin d'être paginé et gérer précisément puisqu'il y a une seul application. Cela représente le plus gros du travail (et le plus délicat) je pense.
    - Le multi-utilisateur qui n'est plus nécéssaire. Mais si l'on a supprimé la gestion mémoire c'est presque automatique.

    Certes c'est complexe mais cela permettrait de garder les pilotes Linux qui existent, la fiabilité du code existant et la polyvalence en terme d'architecture du noyau. A moins que je me fourvoie dans ce que doit faire un unikernel. J'attends vos commentaires.
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  5. #5
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : mars 2007
    Messages : 528
    Points : 669
    Points
    669
    Par défaut
    Je suis content de voir l’essor que peuvent prendre les solutions unikernel car c'est l'aboutissement de la tendance initiée par les containers Linux (je ne parle pas de docker ici, mais des couches systèmes sous-jacentes), ainsi que des distribution tels que CoreOS etc.

  6. #6
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Doctorant - Ingénieur Sys/Réseau/Sécu
    Inscrit en
    juin 2005
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant - Ingénieur Sys/Réseau/Sécu
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 1 050
    Points : 3 528
    Points
    3 528
    Par défaut
    Excellente initiative !
    Je suppose qu'avec un peu plus d'optimisation côté compilo, on doit pouvoir non seulement réduire le nombre de services inutiles (ce qu'ils proposent déjà), mais aussi de réduire certaines contraintes côté concepts.

    Seul défaut que d'autres ont relevé : "embarqué" et "x86 seulement", ça fait d'un coup un peu moins embarqué que prévu... :/

    A voir aussi comment ils vont gérer les drivers....
    Parce que ne gérer que les drivers d'hyperviseurs......... bein ça laisse toujours un tas de services inutiles sur l'hôte.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  7. #7
    Invité
    Invité(e)
    Par défaut
    @abriotde

    Ça devient presque plus simple de faire un nouveau système vu le bordel dans le code (qui au passage est immense).

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2007
    Messages
    838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : juillet 2007
    Messages : 838
    Points : 1 804
    Points
    1 804
    Par défaut
    @hajdukcampus

    Ca dépends ce que l'on veut faire. Si l'on se limite a tourner sur un hyper viseur, oui c'est certes plus simple de tout refaire a zéro. Mais alors pourquoi faire tout un OS + un hyperviseur, un OS Linux avec conteneur le fait en plus léger puisque l'on a alors plus du tout de couche de virtualisation. On a simplement la couche d'isolation (réalisé par l'hyperviseur) sur un OS classique et la couche d'accès matériel (réalisé par l'hyperviseur). L'OS est largement optimisé on a de place mémoire pour garder beaucoup de librairie "inutile" surtout si c'est mutualisé sur un hôte

    A termes l'intérêt que je vois est bien dans l'embarqué. ou du moins le semi-embarqué comme un serveur léger spécifique ultra rapide sur une machine a la configuration légère comme ce dont parle la news originelle.
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  9. #9
    Membre expert Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    mars 2005
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : mars 2005
    Messages : 1 041
    Points : 3 864
    Points
    3 864
    Par défaut
    Citation Envoyé par abriotde Voir le message
    Je ne connaissait pas l'Unikernel avant de lire cette article. Je trouve le principe très intéressant. mais je me pose une question.

    Pourquoi ré-écrire tout ce qui fait la complexité d'un OS plutôt que de partir d'un Linux minimal et le dépouiller pour lui enlever les fonctionnalité inutile. Comme fonctionnalité a revoir il y a :
    - Le Shell mais ça c'est assez simple a supprimer bien qu'il faille alors revoir le système de lancement par script... mais pour ça il y a Systemd.
    - La gestion mémoire qui n'a plus besoin d'être paginé et gérer précisément puisqu'il y a une seul application. Cela représente le plus gros du travail (et le plus délicat) je pense.
    - Le multi-utilisateur qui n'est plus nécéssaire. Mais si l'on a supprimé la gestion mémoire c'est presque automatique.

    Certes c'est complexe mais cela permettrait de garder les pilotes Linux qui existent, la fiabilité du code existant et la polyvalence en terme d'architecture du noyau. A moins que je me fourvoie dans ce que doit faire un unikernel. J'attends vos commentaires.
    Mmmmh, tu as peut-être raison, sauf en ce qui concerne systemd: ce n'est plus un remplaçant d'init depuis un bon moment maintenant mais plutôt une "chose" qui se veut de plus en plus un système d'exploitation à part entière (un coup d'œil sur son github suffit à s'en convaincre), ce qui fait qu'il faudrait tirer énormément de dépendances pour le faire fonctionner correctement.
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

Discussions similaires

  1. Le moteur de jeux pour PC et mobiles Donkey Tech 3 passe Open Source
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 04/09/2014, 22h56
  2. Gideros, le moteur de jeux Lua est abandonné : son code passe open source
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 02/09/2014, 20h38
  3. Le moteur réseau RakNet passe Open Source suite au rachat par Oculus
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 11/07/2014, 16h56
  4. PlayCanvas, le moteur de jeux WebGL passe Open Source
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 08/06/2014, 09h02
  5. La chaine Internet de la Wii devient gratuite
    Par raptor70 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 11/09/2009, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo