infernoTM ja JavaOSTM
eli kuinka saisin kenkäni
kiinni Internettiin?

Ohjelmistotekniikan seminaari 7.11.1996 ©1996 Jonne Itkonen


Sisällysluettelo

Johdanto

Viime aikoina on alettu yhä enemmän keskustelemaan tietoverkoista, WWW:stä, Javasta, verkkokäyttöjärjestelmistä ja niinsanotusta verkkotietokoneesta, NC:stä. Tämä seminaariesitys pyrkii valoittamaan verkkokäyttöjärjestelmien ja -tietokoneen taustoja, sekä esittelee pari 'kilpailevaa' yritystä verkkokäyttöjärjestelmästandardiksi. Toteutusten yksityiskohdat pyritään kiertämään, eikä mitään esitettyä ennustetta tai mielipidettä tule ottaa ainoana oikeana totuutena. Kuten niin usein aiemminkin, tullee tulevaisuus oleva erilainen ja yllättävä.


Historiaa

Internet, WWW ja interaktiivisuus

Ensin oli Internet, ja Internet oli tyhjä ja käyttökelvoton, ainakin tavan kansalaisen mielestä. Mutta sitten tuli WWW, joka toi valon Internettiin ja saattoi sen tavan kansalaisten ulottuville. Loppu onkin sitten ollut markkinamiesten kulta-aikaa.

Vakavasti, WWW oli se tekijä, joka mahdollisti Internetin leviämisen ulos korkeakouluista. Vaan eipä se ollut täydellinen, sillä kuvien ja tekstin selaaminen linkkien avulla ei ollut tarpeeksi, sivujen ulkonäköön päässyt puuttumaan tarpeeksi. WWW-sivuille haluttiin myös multimediaa ja interaktiivisuutta. Multimedia oli helppo toteuttaa, mutta interaktiivisuuden eteen jouduttiin jo tekemään töitä. Luotiin kaavakkeet (forms) ja CGI:t joiden avulla saatiin välitettyä tietoa WWW-palvelinkoneelle, mutta tämä ei ollut tarpeeksi.

Yrityksiä oli monia, mutta vasta Sun Microsystems -yhtiön Java- ohjelmointikieli tuotti tuloksen. Se toteutti haaveen WWW-sivulle liitettävistä, ajettavista ohjelmista.

Jos kaikki käytetyt ohjelmat olisivatkin WWW-sivuilla olevia appletteja, olisi verkkotietokone valmis. Valitettavasti applettien turvallisuus ei ole sitä luokkaa, että niitä uskaltaisi ajella ilman asianmukaisia varmistuksia. Tarvittavien turvallisuus- ja resurssienhallintaominaisuuksien lisääminen kieleen olisi tyhmää, sillä nehän ovat käyttöjärjestelmän, ei ohjelmointikielen, tehtäviä. Niinpä alettiin puhua verkkokäyttöjärjestelmistä tarkoitettaessa käyttöjärjestelmää, joka mahdollistaa resurssien käytön verkon yli, yleisemmin verkon yli hajautetun tietojenkäsittelyn.

Kun sitten vielä rakennetaan verkkokäyttöjärjestelmää tukevat, resursseiltaan PC:tä hieman köyhemmät verkkotietokoneet (Network Computers, NC), on tietotekniikan tulevaisuus käsissämme -- vai onko?

Sulautetut järjestelmät

Useista nykyajan sähkölaitteista löytyy jo mikropiiri kaikkein yksikertaisimpia lukuunottamatta. Laitteet ovat valmiiksi ohjelmoituja tekemään jonkin tietyn toimenpiteen tietyillä parametreilla. Mutta miksi rajoittaa niiden toiminta ennaltamäärättyyn? Ihminen on aina ollut utelias ja halunnut muokata ympäristönsä mieleisekseen. Ei siis liene kovinkaan väärin vaatia, että jokapäiväiseen käyttöön tarkoitetut laitteet voitaisiin muokata toimimaan käyttäjänsä, eikä standardi-ihmisen mieltymysten mukaan.

Tuskin kaikki ihmiset haluavat ohjelmoida kahvinkeitintään vaikkapa keittämään kahvin aamuisin hieman vahvemmaksi kuin iltaisin. Useimmista meistä olisi varmasti mukavaa, jos herätyskello osaisi jutella kahvinkeittimen kanssa sen verran, että kellon soidessa kahvi olisi valmista; ja television kanssa sen verran, että se aukeaisi samaan aikaan lempiaamuohjelmakanavalle; ja leivänpaahtimen kanssa sen verran, että se paahtaisi leivät aamiaiselle; ja tohveleiden kanssa sen verran, että ne olisivat kellon soidessa mukavan lämpimät.

Visioita voitaisiin jatkaa paljon pidemmälle, mutta jo ylläolevasta kuvitelmasta huomataan yksi puute nykyisissä järjestelmissä. Vaikka ne ovat kuinka muokattavissa, eri laitteet eivät kommunikoi keskenään. Jotta ne saataisiin kommunikoimaan toisilleen, ne pitäisi yhdistää toisiinsa, verkottaa ne. Verkon ei tietenkään tarvitse olla johdosta riippuvainen. Osa laitteista voisi olla kiinni toisissaan johdolla, osa radioteitse ja osa infrapunalinkillä. Selvää on, että käyttöjärjestelmän pitäisi tukea tätä verkottumista. Tämä onkin käsiteltävien verkkokäyttöjärjestelmien yksi tavoite.


inferno
Day was departing, and the darkening air
Called all earth's creatures to their evening quiet
While I alone was preparing as though for war...

Jo päivä painui, hämy illan lankes,
vapautti vaivoistansa kaikki luodut,
maan päällä jotka asuvat ja ovat.

Ma yksin valmistauduin kestämähän
niin sotaa tien kuin säälin...

The Inferno of Dante, Canto II Danten Helvetti, Toinen laulu

inferno on Lucentin Bell-Laboratoriesin (BL) kehittämä hajautettu verkkokäyttöjärjestelmä. Inferno sai alkunsa, kun BL:n tutkijat tutustuivat Javaan. Idea oli heidän mielestään hieno, mutta toteutuksessa oli paljon toivomisen varaa. BL:n tutkijoiden mielestä pelkkä kieli ei riittänyt, vaan täyden hyödyn saamiseksi tuli rakentaa ajoympäristö ts. käyttöjärjestelmä, joka tukisi Javan kaltaista kieltä. Sittemmin tämä on osoittautunut oikeaksi ratkaisuksi myös Sunin tutkijoiden mielestä, sillä noin kuukauden Infernon julkistuksen (6.5.1996) jälkeen Sun ilmoitti (29.5.1996) tekevänsä vastaavaa systeemiä, JavaOS:iä. Näistä kahdesta kilpailijasta Inferno (tosin sovelluskehittäjän betana) on vieläkin (6.11.1996) ainut julkisesti saatavilla.

Infernon esi-isä on BL:n edellinen käyttöjärjestelmäluomus Plan 9, joka tehtiin lähinnä tutkimuskäyttöön tarkoituksena suunnitella Unix uudelleen (Bell-Laboratories tunnetaan paremmin puhelimen, laserin, Unixin, C- ja C++-ohjelmointikielten sekä AWKin keksijänä). Inferno onkin perinyt Plan 9:ltä paljon, ja seuraavat Plan 9:n versiot tulevat perimään joitakin ominaisuuksia Infernolta.

Infernon rakenne

Inferno järjestelmänä koostuu Inferno-käyttöjärjestelmästä, Limbo-ohjelmointikielestä, Dis-virtuaalikoneesta, joka ajaa Limbo-ohjelmia, sekä Styx-protokollasta.

Infernon rakenteessa on kolme toimintaperiaatetta: