Inferno OS

06.09.2006 21:08

Inferno je operacny system vyvyjany firmou Vitanuova (http://www.vitanuova.com)
ktory vychadza z operacneho systemu Plan9. Obe tieto systemy su distribuovane
preto su vhodne na tvorenie gridov resp distribuovanych aplikacii.
Inferno je urcene na komercne nasadenie,
moze behat na zariadeniach kde je minimalne 1 MiB RAM a ziadna ochrana pamate,PDA,routre, kiosky a pod, skratka embedded OS. Alebo moze bezat aj na serveroch,PCckach a pod.Plan9 je OS rydzo akademickeho charakteru a sluzi na testovanie novych myslienok a postupov.

Moze ist v dvoch rezimoch a to nativne alebo v host mode.
Nativne je to normalny OS ktory nainstalujete na pocitac nabootujete a idete. Pre nas
zaujimavejsi je host mod, teda hostitelsky mod. V nom bezi Inferno ako dalsia
vrstva nad operacnym systemom (teda ako aplikacia). Inferno ma siroku podporu
operacnych systemov ako Linux,FreeBSD,Solaris,Windows (od 2k vyssie) az po
Plan9. Tymto prinasa homogenne prostredie na rozne typy pocitacov, teda
vyhladzuje rozdiely medzi roznymi architekturami,os a pod.

Jadrom je mikrokernel ktore je v podstate komplet prevzane z Plan9 iba s tym
rozdielom ze na celom systeme bezi iba jeden proces a to Dis (o tom po tom ) nad ktorym uz bezia dalsie procesy. Cely system stoji na nasledujucich troch principoch:

- vsetko je subor, fakt vsetko, je to dotiahnute ovela dalej nez na Unixe. Ten
v 70 rokoch porusil toto pravidlo pretoze BSD socket api bolo implementovane
ako syscall do jadra. U Inferna je API k sietovemu stacku implementovane vo
forme filesystemu a manazment spojeni spociva v zapisovani a citani roznych
suborov. Tento trend v unixe pokracuje dodnes [1], dnes ked si spocitate tak
zistite ze Linux ma uz vyse 200 systemovych volani a X roznych interfaceov
casto k tej istej veci. U Plan9/Inferno je len cca 60, zvysok riesi cez
rozne subory/fileservre.

- jednotlive subsystemy tohto OS komunikuju pomocou protokolu Styx co je
mierne modifikovany protokol 9p2000 Plan9. Vytvara transparentnost zdrojov,
tj. nezalezi ci dany systemovy zdroj (ktory je reprezentovany formou suboru) sa nachadza vo vasom pocitaci alebo na druhej strane sveta.

- kazdy proces ma privatny namespace. Namespace to su hierarchicky usporiadanezdroje, je to enviroment daneho procesu. Uvediem priklad, Unix ma jeden
namespace zdielany vsetkymi procesmi. Takze ak v jednom terminali namountujete
disketu, to ze je namountovana sa prejavi vo vsetkych procesoch. U
Inferna/Plan9 nie, ak tam namountujete disketu tak tu disketu vidi iba proces
v ktorom ste ju mountli a jeho deti. To ma niektore zaujimave dosledky s
ktorymi sa stretneme neskor.

Systemovym jazykom je jazyk Limbo ktory je mix medzi Pascalom, C a Javou.
Vsetky programy su v nom napisane a pri preklade sa program preklada rovnako
ako pri Jave do bytecodu co umoznuje potom pouzivat jeden program na roznych
architekturach. Napriklad napisete a skompilujete v Limbe v Inferne program
pod MacOSX na PowerPC, ktory nebude problem pustit na Solarise na nejakom
sparcu. O to aby to slo vsade rovnako sa stara program ktory sa vola Dis
Virtual Machine ( v podstate nieco ako Java Virtual Machine ). Tento jazyk ma
dokonca aj garbage collector. Ukazka hello-world programu:

      1  implement Hello;
      2
      3  include "sys.m";
      4          sys: Sys;
      5  include "draw.m";
      6
      7  Hello: module
      8  {
      9          init:  fn(ctxt: ref Draw->Context, argv: list of string);
    10  };
    11
    12  init(ctxt: ref Draw->Context, argv: list of string)
    13  {
    14          sys = load Sys Sys->PATH;
    15          sys->print("hello, world\n");
    16  }

Hierarchicka struktura

Tato vyzera nasledovne:

CHANGES Nt/ grid/ libfreetype/ libprefab/ mnt/ tmp/
CVS/ Plan9/ icons/ libinterp/ libsec/ module/ tools/
Debian/ Solaris/ include/ libkern/ libtk/ n/ usr/
FreeBSD/ acme/ keydb/ libkeyring/ limbo/ netserver* utils/
Inferno/ appl/ lib/ liblogfs/ locale/ node* wrap/
Irix/ asm/ lib9/ libmath/ makemk.sh* node_gui*
LICENCE dis/ libbio/ libmemdraw/ man/ os/
Linux/ doc/ libcrypt/ libmemlayer/ mkconfig services/
MacOSX/ emu/ libdraw/ libmp/ mkfile shared/
NOTICE fonts/ libdynld/ libnandfs/ mkfiles/ signer*

Adresare ktore nesu mena operacnych systemov obsahuju pre ne spustitelne binarky.
acme - tu sa nachadza zvlastny editor/mail/shell/wiki/irc skratka dokaze to zaujimavo vela veci :)
appl - zdrojove kody programov beziacich v Inferne
asm,lib?*,limbo,*mk*,os,emu,tools,utils,include - veci urcene na kompilaciu Inferna
keydb - sem sa ukladaju certifikaty signer servera
locale - lokalizacia, co asi
usr - uzivatelske domovske adresare
dis - skompilovane limbo-binarky v bytecode
fonts,icons - GUI
man - manualove stranky
net - sem sa mountuje sietovy stack z jadra
dev - sem sa mountuju rozne zariadenia bud logicke alebo fyzicke
n - sem sa mountuju vzdialene fs
mnt - sem sa mountuju lokalne sluzby
grid,shared a skripty - implementacia hysteria-grid

Nabuduce si ukazeme preco je jeho dizajn tak vhodny
na tvorenie distribuovanych systemov a rozne ine finty.

    • Pekny uvod 06.09.2006 | 23:52
      m_ax   Návštevník

      Celkom pekny uvod do InfernoOS/Plan9, urcity cas som chcel o tom nieco prestudavat, a hla tu mame zdroj informacii :)))

      Ak mas nejaky nazor o tom, ci by sa Plan9 systemy mohli dostat do realneho vyuzitia, resp. ci je principialne este dobre navrhnuty na dnesne trendy, tak sem s nim...

      ----------------
      m_ax

      • myslim si ze dizajnovo 08.09.2006 | 11:56
        v92   Návštevník

        myslim si ze dizajnovo predbehol niektore OS o niekolko
        rokov dopredu, pretoze dnesnym trendom su rozne web
        aplikacie a web OS. cize nejaka centralizacia. na strane
        klienta hlupy terminal na strane servera vsetok vypocet
        a pod.

    • dufam 07.09.2006 | 00:08
      Avatar blackhole_ventYl   Používateľ

      ...ze toto bude aj pokracovat... o inferne som pocul a cital len v suvislosti s hg, akurat, ze tam boli informacie viac suviasiace s gridom samotnym, nez s infernom... zaujimala by ma viac filozofia jadra Inferna a ine technicke pozadie okolo distribuovanych systemov, napriklad migracia procesov, resource managment a podobne veci...

      ---
      Cuchat s nadchou, to je ako sniffovat bez promiscu.

      --- Cuchat s nadchou, to je ako sniffovat bez promiscu.
      • re: 07.09.2006 | 18:25
        disorder   Návštevník

        pozrel si wiki a external links?

        http://en.wikipedia.org/wiki/Inferno_(operating_system)

        ---
        Windows NT was supposed to hit Unix hard. It did - like a bug hitting a windshield.

        • disorder sorry ale mam s 07.09.2006 | 21:21
          Avatar patie   Návštevník

          disorder sorry ale mam s teba taky pocit uuuplne ze zjebavas ludi.. davas kritiku ale ziadny vlastny post. je to len moj pocit ?

          zivot je tazky - jeden z najtazsich
          • re: 08.09.2006 | 15:23
            disorder   Návštevník

            sorry, uz sa nebudem pokusat radit, ked ti to prekaza

            ---
            Windows NT was supposed to hit Unix hard. It did - like a bug hitting a windshield.

            • nie pohoda je to len moj 09.09.2006 | 12:51
              Avatar patie   Návštevník

              nie pohoda je to len moj pocit mna si nevsimaj vazne :)

              zivot je tazky - jeden z najtazsich