Journal Phantom OS: l'OS qui ne s'éteint jamais

Posté par (page perso) .
Tags : aucun
23
4
fév.
2009
Je viens de tomber sur un article très intéressant de Ted Dziuba sur un OS qui est actuellement développé en Russie.

D'après ce que j'ai compris, le principe de ce système d'exploitation défie les modèles de programmation, puisqu'il propose de sauvegarder l'état de la machine à tout instant dans une mémoire non volatile. Quand je dis "état", j'inclus là dedans:
- les fichiers/dossiers qui constituent les documents de l'utilisateur (même si l'auteur de l'article indique qu'il n'y a plus vraiment besoin de se donner ce genre de paradigme avec un OS intemporel)
- la mémoire vive
- les registres du processeur, ainsi que son cache et le reste.

L'implémentation de la chose est réalisée au travers d'une machine virtuelle, qui se retrouve lancée après une sorte de microkernel qui fait office de couche d'abstraction.

La lecture de l'article (en anglais...) de Ted[1], ainsi que de la FAQ [2] et tout simplement du site web de Phantom en entier [3] est plus qu'intéressante: elle remet en cause les paradigmes de programmation et d'utilisation de l'ordinateur comme on les a connus jusqu'ici.

Le lien avec linuxfr? Cet OS sera apparemment lâché sous licence GPL!

[1] http://www.theregister.co.uk/2009/02/03/phantom_russian_os/ (anglais)
[2] http://www.dz.ru/en/solutions/phantom/ (anglais)
[3] http://www.dz.ru/en/solutions/phantom/why/ (anglais)
  • # Ajout

    Posté par (page perso) . Évalué à  9 .

    Oups, j'ai oublié de tartiner sur les changements que ca implique:

    Lorsque l'ordinateur s'éteindra (victime d'une coupure, ou du bouton power), comme tout l'état de la machine est sauvegardé, il reprend là où il était avant de s'éteindre!

    C'est en fait la solution ultime de veille prolongée, mise en oeuvre sur une plus grande échelle. Cette facon de voir implique tout un tas de conséquances, que la FAQ nous fait entrevoir:

    Q: File system?
    A: Nope. Sorry. Nobody needs files in Phantom.
    Q: Un système de fichiers?
    A: Non, désolé,pas besoin de système de fichier dans Phantom.



    Q: Does Phantom have processes?
    A: Phantom has threads. Process (group of threads, sharing some global state such as current directory and some other historical junk) is not needed in Phantom.
    Q: Est ce que Phantom a des processus?
    A: Phantom a des "fils". Les Processus (un groupe de "fils qui partagent des données communes, comme un dossier courant ou d'autres données périmées) ne sont pas nécessaires dans Phantom.


    Q: And if I had some, say, ssh or telnet connection?
    A: It will die. Sorry. Of course, telnet app can restart connection for you – if some application needs to be informed about system restart, Phantom will provide special signaling. But most applications won’t even notice that shutdown happened.
    Q: Et si j'avais établi une connexion SSH ou telnet [lorsque l'ordi reboot après une coupure]?
    A: La connexion sera fermée, désolé. Bien sûr, les applications pourront relancer le processus de connection si elles ont besoin; Phantom pourra leur signaler la perte de connexion. Mais la plupart des applications ne verront même pas que la machine a rebooté


    Je sais pas pour vous, mais je suis impatient de regarder comment marche ce truc!
    • [^] # Re: Ajout

      Posté par (page perso) . Évalué à  5 .

      > A: Phantom has threads. Process (group of threads, sharing some global state such
      > as current directory and some other historical junk) is not needed in Phantom.

      Ça veut dire le même espace d'adressage pour tout le monde ? Et quand un thread fait des conneries avec la mémoire d'un autre thread il n'y a aucun moyen pratique de récupérer un état sain ? Vu comme ça j'ai l'impression que ce truc combine les inconvénients d'un micro noyau avec ceux d'un noyau monolithique (sauf que ça serait l'userland qui serait monolithique).

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question. | Free Softwares Users Group Arlon, Belgique : http://fsugar.be/

      • [^] # Re: Ajout

        Posté par (page perso) . Évalué à  4 .

        Après avoir lu la FAQ ça me fait penser à JavaOS ou Inferno. C'est une VM objets en temps qu'OS.

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question. | Free Softwares Users Group Arlon, Belgique : http://fsugar.be/

    • [^] # Re: Rien de nouveau sous le soleil

      Posté par (page perso) . Évalué à  4 .

      C'est très proches des idées originelles de Multics :
      Le système gérait des segments (espaces adresses) pour les processus ; l'utilisateur ne se préoccupait pas du stockage dans un FS, les programmes ne s'interrompant pas.
      Par contre Multics prévoyait de swapper sur disque les segments lorsque l'utilisateur suspendait sa session. A la réouverture, Multics rouvrait tout.
      Enfin c'était la théorie !

      Pour Multics, les capacités d'adressage de l'époque (36 bits) étaient insuffisantes pour permettre le bon fonctionnement de tout cela. Et la fiabilité tant du matériel que du logiciel laissait à désirer ce qui augurait mal de la pérennité des données.

      Dans la pratique, le concept de fichier et de document correspond à une réalité concrète. Les bacs à fiches et les feuillets, manuscrits...
      Je vois mal les utilisateurs s'en passer.
      • [^] # Re: Rien de nouveau sous le soleil

        Posté par . Évalué à  6 .

        Dans la pratique, le concept de fichier et de document correspond à une réalité concrète. Les bacs à fiches et les feuillets, manuscrits...
        Je vois mal les utilisateurs s'en passer.

        Je vois surtout mal comment je pourrais sauvegarder une base de données sur un serveur distant si la notion de fichiers n'existe pas. Comment je pourrais récupérer les photos de mon appareil numérique pour les visionner sur mon ordinateur. Comment un serveur d'emails stocke les centaines de gigaoctets de données. Etc.
        • [^] # Re: Rien de nouveau sous le soleil

          Posté par . Évalué à  5 .

          Je vois surtout mal comment je pourrais sauvegarder une base de données sur un serveur distant si la notion de fichiers n'existe pas.

          Accéder à une base de données, c'est souvent du SQL, le medium de stockage physique n'apparaît pas à ce niveau d'abstraction.

          Comment je pourrais récupérer les photos de mon appareil numérique pour les visionner sur mon ordinateur.

          C'est sûr que si tu veux intéropérer avec des systèmes basés sur la notion de fichier, il faut être capable de leur parler. Ca n'implique pas que la notion de fichier se retrouve au coeur du système.

          Comment un serveur d'emails stocke les centaines de gigaoctets de données.

          Mémoire virtuelle swappée sur disque ?
          • [^] # Re: Rien de nouveau sous le soleil

            Posté par . Évalué à  2 .

            Tu ne réponds pas aux questions. Tu donnes des concepts vagues sans donner de solution concrètes. Lancer des principes en l'air sans indiquer comment on fait "en vrai" c'est du vent.

            Accéder à une base de données, c'est souvent du SQL, le medium de stockage physique n'apparaît pas à ce niveau d'abstraction.

            Oui et ? Tu la fais comment ta sauvegarde de base de données ? Tu la fais sur "un niveau d'abstraction" ? Ca va être pratique le jour où tu auras besoin de récupérer une base datant d'il y a deux jours suite à la perte d'un disque.

            Mémoire virtuelle swappée sur disque
            Comment les données de la mémoire sont organisées ?
            Imagine que tu aies 50.000 structures en mémoire (des bases de données, des emails, des photos pour reprendre les exemples précédents). Tu les organises comment ? --> par un système qui est en tous points semblable à un système de fichiers ; sauf que c'est en mémoire... avant d'être écrit sur un vrai disque car sans stockage physique, point de salut.
            Tu peux retourner le problème dans tous les sens: la notion de fichiers (ou de structure, on nomme ça comme on veut) est indispensable pour retrouver ses petits.
    • [^] # Re: Ajout

      Posté par (page perso) . Évalué à  8 .

      Tu as oublié les parties cruciales :

      Q: Is Phantom a POSIX-compliant system?

      A: No. It is possible to layer POSIX subsystem above the Phantom native environment, but it is not an idea per se.

      Q: OS is based on VM – does it mean that not all the possible programming languages will be supported?

      A: Yes. Say goodbye to C and Assembler. On the other side, everything is in Java or C# now, or even in some even more dynamic language, such as Javascript or even PHP. All these languages will be supported.

      Donc on résume : ce n'est pas POSIX, il n'y a pas de support du C ou de l'assembleur. On fait tout en Java, C# voire PHP et javascript. Vous choisiriez lequel de ces quatre langages pour coder, au hasard, SSH dont il est question plus haut ? Et les compilateurs, il sont écrits en quoi ?

      Bon courage...
      • [^] # Re: Ajout

        Posté par (page perso) . Évalué à  6 .

        En perl, sur une ligne. \o/
      • [^] # Re: Ajout

        Posté par Anonyme . Évalué à  10 .

        c'est une impression où on dirait du Jayce et la description de Multideskos?
      • [^] # Re: Ajout

        Posté par . Évalué à  1 .

        Vous choisiriez lequel de ces quatre langages pour coder, au hasard, SSH dont il est question plus haut ? Et les compilateurs, il sont écrits en quoi ?

        Ben c# pour les 2, ou ce que tu veux dailleurs
        on est au dessus d'une vm, ton compilo il compile vers cette vm, rien n'oblige à utiliser de l'assembleur ou du C. Un peu comme pour .net en fait
    • [^] # Re: Ajout

      Posté par . Évalué à  2 .

      Je sais pas pour vous, mais je suis impatient de regarder comment marche ce truc!
      Ca risque d'etre un foutu merdier si tu dois récupérer toutes les applications sans démarrer (saut dans le temps, ...)

      Mais sinon ça existe déjà pour des calculs intensifs : chaque thread de calcul est sauvegardé (sa pile, sa stack, ses registres) en mémoire non volatile. Quand tu as des calculs qui durent 15 semaines, c'est utile de ne pas avoir à recommencer au tout début parce que tu as eu un problème quelconque ;)
  • # Tout... tout ?

    Posté par (page perso) . Évalué à  10 .

    J'ai dû louper un truc : sur mon PC, la seule mémoire non volatile qui puisse stocker ma RAM, c'est mon disque dur. Il voudrait doubler chaque accès RAM (et même registre) par un accès disque ?
    • [^] # Re: Tout... tout ?

      Posté par (page perso) . Évalué à  1 .

      Sans compter qu'un os qui utilise un disque dur sans fs, j'vois pas trop comment il peut faire.
      • [^] # Re: Tout... tout ?

        Posté par (page perso) . Évalué à  6 .

        Avec la pagination, le disque dur est une seule grande partition de swap (hormis, de quoi ammorcer le bidule).
        • [^] # Re: Tout... tout ?

          Posté par (page perso) . Évalué à  4 .

          Finalement il n'y a que du swap, et la RAM n'est qu'un immense cache de cette mémoire de masse quoi ?
          Bon, j'imagine qu'en cas de coupure on perdra peut-être un peu de travail quand même, un peu comme une base de donnée va perdre les transactions qui n'ont été commitées au moment d'un crash.
          • [^] # Re: Tout... tout ?

            Posté par (page perso) . Évalué à  1 .

            Oui, et je pense que ce n'est pas trop dur de le faire avec un noyau linux. La fonction suspend-on-disk fait déjà plus ou moins cela. Cela nous laisse avec des partitions disques (contrairement à ce qu'ils veulent faire) mais c'est mieux ainsi car cela réduit la taille des tables de pages.
    • [^] # Re: Tout... tout ?

      Posté par (page perso) . Évalué à  3 .

      Il semble que ca aie déjà été fait:
      http://en.wikipedia.org/wiki/Extremely_Reliable_Operating_Sy(...)

      Je n'ai pas lu tout l'article, mais ils opèrent aussi une sauvegarde systématique de l'état de la machine.

      J'imagine que pour des questions de perfs, la sauvegarde n'est faite que toutes les X millisecondes, ce qui signifie que l'état qu'on retrouve lors d'un reboot est celui tel qu'il était X millisecondes (max) avant la coupure.
      • [^] # Re: Tout... tout ?

        Posté par . Évalué à  10 .

        Le plus drôle c'est que charger l'état juste avant la coupure, c'est pas nécessairement une bonne idée. Si la coupure est due à un problème "non extérieur", on risque de refaire pareil...

        Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

        • [^] # Re: Tout... tout ?

          Posté par . Évalué à  10 .

          Y a intérêt à pouvoir choisir l'état (parmi une liste de X états sauvegardés) depuis lequel rebooter, sinon ça fera comme les sauvegardes de jeux vidéos : trop proche du moment fatal, du coup obligé de recommencer le niveau ^_^
    • [^] # Re: Tout... tout ?

      Posté par (page perso) . Évalué à  4 .

      Non, ils ne veulent pas doubler chaque accès ram. Amha, si j'ai bien compris leur faq, il s'agit d'utiliser le méchanisme de pagination : quand une page a été écrite elle est marquée comme non synchronisée avec ce qu'il y a sur le disque. A intervalle régulier, ces pages sont synchronisées et l'état du processeur sauvegardé (régistres).

      Bien qu'ils disent que cela est fait de manières efficace si ton programme vient d'écrire dans une matrice de 1920x1080 (Dimensions totalement aléatoires ;-) Il faudra sauvegarder 1920x1080xsizeof(data) ce qui n'est pas négligeable comme délai.

      De plus, il me semble que les lisp-eux ont déjà fait ce genre de chose...
      • [^] # Re: Tout... tout ?

        Posté par . Évalué à  2 .

        Je dis peut-être une connerie (je suis trop jeune pour avoir fait joujou avec une lisp machine), mais il me semble qu'on pouvait sauvegarder le "monde", c'est-à-dire l'état de l'environnement, à la demande. C'est le même genre de système avec les compilos lisp actuels ou les VM Smalltalk. Tu changes des trucs, et après tu les rends permanents (en Lisp c'est pratique pour charger les mêmes libs à chaque fois. Tu charges un ensemble de libs pertinent pour chaque tâche, genre devel web, et tu sauvegardes ton core).
  • # Moué

    Posté par (page perso) . Évalué à  4 .

    L'intérêt est limité à certains scénarios d'utilisation, mais sûrement pas pour les besoins de monsieur tout le monde.
    Je comprends qu'on puisse se passer de FS avec un tel OS, m'enfin avancer l'avantage que comme ca les programmes sont plus simples (pas de sérialization/désérialization à gérer), ca me paraît foireux : des fichiers, faut en créer tout le temps : sauvegarde d'info sur médias externes (CD, clé USB), sans parler d'internet et tous les protocoles réseaux : FTP, HTTP, & co.
    Et puis bon des frameworks de prevalence qui gère des objets java ou .NET sur disque de manière transparente, ca existe également...
    Bref, l'intérêt me paraît vraiment limité... dans des systèmes de sécurité critique pourquoi pas mais sinon...
    • [^] # Re: Moué

      Posté par . Évalué à  2 .

      S'il ne s'éteint jamais, comment patcher le noyau ?
      C'est théoriquement possible, mais c'est pratiquement un enfer.
      • [^] # Re: Moué

        Posté par . Évalué à  6 .

        Ksplice [http://www.ksplice.com/] permet de patcher le noyau Linux à chaud.
      • [^] # Re: Moué

        Posté par (page perso) . Évalué à  5 .

        Les Lisp OSes le faisaient... Grâce au caractère dynamique du langage et l'existence d'un type de donnée "Symbole".
        • [^] # Re: Moué

          Posté par . Évalué à  1 .

          Surtout grâce à la propriété du système d'être modifié pendant qu'il tournait. Ou de le debugger en live.

          Pour info, pour voir comment ce binz marchait, il y a des émulateurs de lisp machine en dev. Certaines images sont dispos. J'ai vu des images de TI Explorer par ex. Le MIT a donné son autorisation pour une distribution du code des Lisp Machine originaires de chez eux. Par contre pour Genera, le système de Symbolics, c'est plus compliqué (le seul et unique actionnaire de Symbolics est décédé l'an dernier, et depuis, flou total). Ca se trouve sur les réseaux p2p par contre.
  • # Comme mon vieux Palm quoi !

    Posté par . Évalué à  6 .

    Sur un Palm (je parle en tous cas des PalmPilot, premiers du nom), l'OS ne s'éteignait pas, les applications ne se quittaient pas non plus. On passait simplement d'un contexte à un autre, le tout en flash.

    Bon, je pense ensuite que c'est un autre tour de force de faire tourner ça sur un PC (si c'est de ça dont il s'agit).
  • # Smalltalk

    Posté par . Évalué à  3 .

    ça ressemble aussi pas mal aux images SmallTalk mais réalisé à l'échelle de l'OS entier.

    Il me semble qu'il y avait un (ou des ?) projet d'OS entièrement basé sur SmallTalk.

    Pour ceux qui ne connaissent pas le concept d'image je propose le lien suivant : http://en.wikipedia.org/wiki/Smalltalk#Image-based_persisten(...) (en anglais malheureusement, je n'ai pas trouvé de description en français).
  • # Echange de documents

    Posté par (page perso) . Évalué à  1 .

    L'abscence de systeme de fichiers me semble tout de meme genante. Imaginons que je veuille envoyer mon CV a quelqu'un, je lui envoie carrement l'image memoire du segment de mon openoffice 0_o ? ca fait pas un tantinet lourd ? si c'est par mail en plus, il faut lui envoyer celui de mon client mail avec ? et tout mes mails avec ?
    • [^] # Re: Echange de documents

      Posté par (page perso) . Évalué à  5 .

      Meuh non, réseau, socket, courrier, tout ça c'est dépassé. Tu lui envoies directement un objet !
    • [^] # Re: Echange de documents

      Posté par . Évalué à  1 .

      AMHA, il ne propose pas de virer le système de fichier en tant qu'abstraction pour l'utilisateur, mais juste pour le système: en gros il écrit en flat, et au démarage il lit à partir du début du disque jusqua trouver le caractère de fin d'image (enfin ca cest juste un pure supposition, qui en effet est peut etre simpliste).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.