Plan 9

Plan 9 fra Bell Laboratories, også bare kalt Plan 9, er et Unix-liknende distribuert sanntids operativsystem som ble utviklet av Computing Sciences Research Center ved Bell Laboratories fra midten av 1980-årene frem til 29. april 2002. Det var en direkte etterkommer av Unix, og ble utviklet i samme forskningsgruppe; det var også påvirket av Cambridge Distributed Computing System som ble utviklet ved University of Cambridge i 1980-årene. Plan 9 utvidet prinsippene i Unix med grafiske terminaler i et nettverksmiljø. Det presenterte alle systemressurser, deriblant filer, nettverksforbindelser og periferiutstyr gjennom filsystemet, i stedet for å bruke spesielle grensesnitt som tilfellet er i Unix. En felles nettverksprotokoll (9P) bandt datamaskinene sammen i et nettverk, og sørget for deling av alle ressursene.

Plan 9 benyttet en såkalt hybridkjerne. Dette er en mellomting mellom en mikrokjerne og en monolittisk kjerne. Nesten alle operativsystemtjenester kjørte i kjerneområdet og ikke brukerområdet, slik at ytelsen ikke ble svekket av at man måtte sende meldinger mellom kjerneområdet og brukerområdet, slik tilfelle er i mikrokjerner. Som brukergrensesnitt benyttet Plan 9 i begynnelsen vindussystemet 8½, men gikk senere over til å bruke vindussystemet Rio. Plan 9 var implementert ved hjelp av en dialekt av ANSI C eller C89. Programmeringsspråket Alef, som var laget for parallelle beregninger, fulgte også med de to første versjonene av Plan 9, sammen med et eget programvarebibliotek, men ble forkastet i versjon 3.

Navnet Plan 9 refererer til Ed Woods science fiction lavbudsjettsfilm kultfilm Plan 9 from Outer Space. «Glenda» var operativsystemets maskot, og var en referanse til Ed Woods lavbudsjettfilm Glen or Glenda.

Systemet blir fortsatt brukt og utviklet av forskere og personer på hobbybasis. Første versjon ble lansert 5. september 1992, og siste utgave er versjon 4 fra 29. april 2002. I 2002 ble kildekoden frigitt som åpen kildekode under GNU General Public License versjon 2 og Lucent Public License. I februar 2014 ble University of California, Berkeley tildelt rettighetene av Alcatel-Lucent til å lansere all Plan 9 programvare som tidligere ble omfattet av Lucent Public License.

Flere operativsystemer er utgått fra Plan 9, hvorav Inferno er det mest kjente. Andre derivater er 9atom, 9front, 9legacy, Akaros, Harvey OS og Plan B.

Historie
Plan 9 fra Bell Laboratories ble opprinnelig utviklet, fra midten av 1980-årene, av medlemmer av Computing Science Research Center ved Bell Laboratories. Dette var den samme gruppen som opprinnelig utviklet operativsystemet Unix såvel som programmeringsspråkene C og C++. Utviklingsteamet ble i begynnelsen ledet av Rob Pike, Ken Thompson, David L. Presotto, Howard Trickey, Sean Dorward, Bob Flandrena og Phil Winterbottom, med støtte fra Dennis Ritchie som leder av Computing Techniques Research Department. I løpet av årene har mange kjente utviklere bidratt til prosjektet, deriblant Brian Kernighan, Tom Duff, Doug McIlroy, Bjarne Stroustrup og Bruce Ellis.

Navnet Plan 9 refererer til Ed Woods science fiction lavbudsjettsfilm kultfilm Plan 9 from Outer Space. «Glenda» var operativsystemets maskot, og var en referanse til Ed Woods lavbudsjettfilm Glen or Glenda.

Plan 9 erstattet Unix som den primære plattform for forskning innenfor operativsystemer ved Bell Laboratories. Det var således en direkte etterkommer av Unix, og ble utviklet i samme forskningsgruppe. Plan 9 var et Unix-liknende operativsystem; det utvidet prinsippene i Unix med grafiske terminaler i et nettverksmiljø. I motsetning til Unix, som er et sentralisert operativsystem, var Plan 9 et distribuert operativsystem. Det ble foretatt flere forandringer i den opprinnelige Unix-modellen som forenklet bruken og programmeringen av systemet, blant annet innenfor flerbrukermiljøer. Flere av disse ideene var hentet fra Cambridge Distributed Computing System som ble utviklet ved University of Cambridge på lokalnettet Cambridge Ring i 1980-årene. Etter flere år med utvikling og intern bruk, ble Plan 9 lansert av Bell Laboratories for bruk på universiteter den 5. september 1992. Tre år senere, den 16. juli 1995, ble Plan 9 gjort tilgjengelig for kommersielle aktører av AT&T, via bokutgiveren Harcourt Brace. Lisensen til kildekoden kostet $350, og AT&T satset dermed på innebygde systemer, i stedet for det generelle datamaskinmarkedet. Dennis Ritchie kommenterte at programvareutviklere ikke forventet noen særlig forskyvning i markedet, på grunn av utbredelsen til andre operativsystemer.

I februar 1996 reduserte AT&T sitt fokus på Plan 9 til fordel for det nye distribuerte operativsystemet Inferno. Hensikten var å konkurrere med Javaplattformen fra Sun Microsystems. På slutten av 1990-tallet hadde Bell Laboratories nye eier, Lucent Technologies, avsluttet sin kommersielle støtte for prosjektet. Den 7. juni 2000 ble den tredje utgaven av Plan 9 distribuert under en åpen kildekode-lisens, og 29. april 2002 kom fjerde utgave under en ny lisens som gjorde Plan 9 til fri og åpen programvare.

Et nytt brukernettverk, som inkluderte daværende og tidligere personell fra Bell Laboratories, produserte daglig mindre oppdateringer i form av ISO-bilder. Bell Laboratories var vertsskap for brukernettverket. Kildekoden til utviklingstreet er tilgjengelig over nettverk ved hjelp av nettverksprotokollene 9P og HTTP, som brukes til å oppdatere eksisterende installasjoner. I tillegg til de offisielle komponentene som er inkludert i ISO-filene, er Bell Laboratories også vert for et programvarelager med eksternt utviklede applikasjoner og programmeringsverktøy.

Oppbygning

Plan 9 er et distribuert operativsystem, konstruert for å gjøre at et nettverk av heterogene og geografisk adskilte datamaskiner fungerer som et enkelt system. I en typisk Plan 9-installasjon, arbeider brukerne på terminaler som kjører vindussystemet rio, og de aksesserer tjenere som håndterer krevende beregningsprosesser. Permanent datalagring blir besørget av ekstra nettverksverter som fungerer som filtjenere og arkivlagring.

De som konstruerte systemet sa at:

Det første betyr at hver enkelt prosess (kjørende program), ulikt de fleste operativsystemer, har sitt eget navnerom. Alle systemressurser, deriblant filer, nettverksforbindelser og periferiutstyr presenteres gjennom filsystemet, og et navn på en path refererer en ressurs, men hvilken ressurs det er varierer med ulike prosesser. Den potensielle kompleksitet med dette oppsettet, er kontrollert av en mengde konvensjonelle lokaliseringer av vanlige ressurser.

Den andre ideen innebærer at prosesser kan tilby tjenester til andre prosesser gjennom virtuelle filer som opptrer i den andre prosessens navnerom. Klientens inn- og utmating av en slik fil blir en interprosesskommunikasjon mellom to prosesser. På denne måten generaliserer Plan 9 prinsippet om filsystemet som det sentrale punkt for tilgang til datamaskinens ressurser. Det bygger videre på Unix-ideen om bruk av utstyrsfiler for å få tilgang til periferienheter som datamus, ytre enheter, og lignende, og muligheten til å mounte filsystemer som ligger på adskilte maskiner inn i et navnerom som utgjør et helt hierarki av filsystemer og muligheten til å mounte en forbindelse med et tjenerprogram via en standardisert protokoll og behandle dets tjenester som en del av navnerommet.

Det opprinnelige vindussystemet til Plan 9, 8½, utnyttet disse mulighetene på følgende måte. Brukergrensesnittet representeres på en terminal ved hjelp av tre pseudofiler: mouse, som kan bli lest av et program for å informeres om musbevegelser og klikk på musknappen, cons, som kan bruker til å utføre innmating og utmating av tekst, og bitblt som utløser utføring av grafiske operasjoner (bit blit). Vindussystemet foretar en multipleksing mellom disse. Når et nytt vindu skapes for å kjøre et program inne i det, opprettes det først et nytt navnerom hvor mouse, cons og bitblt er forbundet med vindussystemet, og skjuler den aktuelle utstyrsfilen som det selv har tilgang til. Vindussystemet mottar således alle kommandoer om innmating og utmating fra programmet og håndterer disse ved å sende en beskjed om utmatning til den aktuelle utstyrsfil (skjermen) og ved å gi et program tilgang til innmatning via tastatur og mus. Programmet behøver ikke vite om hvorvidt det kommuniserer direkte med operativsystemets utstyrsdrivere eller med vidnussystemet. Det trenger bare vite at dets navnerom er satt opp, slik at disse spesielle filer sørger for den innmatning og utmatning som det forventer.

Plan 9 sine distribuerte operasjoner baserer seg likeledes på et navnerom per prosess, og tillater klient- og tjenerprosesser å kommunisere mellom maskiner på den måte som nettopp er beskrevet. Kommandoen cpu starter for eksempel en sesjon fra annen datamaskin på en tjener. Kommandoen eksporterer deler av sitt lokale navnerom, inkludert brukerterminalens utstyrsfiler (mouse, cons, bitblt) til tjeneren, slik at programmer fra en annen datamaskin kan utføre inn- og utmatning ved å bruke terminalens mus, tastatur og skjerm, og kombinere effektene av fjerninnlogging og et delt filsystem i nettverket.

9P protokollen

Referanser

Litteratur

Eksterne lenker