Plan 9

**Plan 9** on Bell Labsin kehittämä hajautettu käyttöjärjestelmä, jonka kehitys aloitettiin 1980-luvun lopulla. Alkuperäiset suunnittelijat ja kehittäjät ovat Ken Thompson, Rob Pike, Dave Presotto, ja Phil Winterbottom.

Käyttöjärjestelmän kehittäjiä ovat useat samat henkilöt jotka kehittivät Unix-käyttöjärjestelmän. Käyttöjärjestelmä on kehitetty tutkimuskäyttöön.

## Historia

Ensimmäinen julkaisu toimitettiin vuonna 1992 yliopistoille. Toinen julkaisu vuonna 1995 oli saatavilla kaupallisen lisenssin alla. Kolmas julkaisu vuonna 2000 on avoimen lähdekoodin lisenssillä. Neljäs julkaisu vuonna 2002 on uudella vapaan ohjelmiston lisenssillä. 

Helmikuussa 2014 käyttöjärjestelmä on julkaistu uudelleen GNU GPLv2 -lisenssillä.

Maaliskuussa 2021 Bell Labsin omistaja Nokia siirsi tekijänoikeudet Plan 9 Foundationille. Siirron myötä lähdekoodit tulivat MIT-lisenssille.

## Suoritintuki

Käyttöjärjestelmä tukee ARM, x86, x86-64, MIPS, Alpha, SPARC ja PowerPC suorittimia.

Myös NeXTstation (Motorola 68000 -sarja) ja BeBox tietokoneita on tuettu varhaisissa versioissa.

## 9P protokolla

9P protokolla on kehitetty vähentämään erikoistarkoitukseen tehtyjä ohjelmointirajapintoja. 

9P protokolla tarjoaa useimmat ominaisuudet tiedostojärjestelmän kaltaisena rajapintana palvelin- ja asiakassovelluksien välillä.

Protokolla mahdollistaa tiedostojärjestelmien etäkäytön Network File Systemin (NFS) tapaan (ks. hajautettu levyjärjestelmä).

Linux-ydin tukee protokollaa.

Protokollan määritelmästä on luonnos sen standardoimiseksi.

## Yhdistelmähakemistot

Yksi Plan 9 ominaisuuksista on tiedostojärjestelmä, joka sallii muodostaa yhdistelmähakemistoja, joissa saman hakemiston alla näkyy käyttäjälle useiden muiden sijaintien sisältö.

Linux sisältää nykyään vastaavan mekanismin nimellä overlayfs.

## Nimiavaruudet

Nimiavaruudet () mahdollistavat käyttäjäkohtaiset näkymät tiedostojärjestelmään.

Vastaavanlainen ominaisuus on lisätty Linux ytimeen versiossa 3.8 (ks. Linux-nimiavaruudet).

## Fossil
Fossil on Plan 9:lle tehty tiedostojen arkistopalvelin, joka tyypillisesti pitää perinteistä tiedostojärjestelmää paikallisella levyllä ja säännöllisesti arkistoi tilannekuvia Venti-palvelimelle.

## Unicode

Käyttöjärjestelmä käyttää kauttaaltaan Unicoden UTF-8 merkistökoodausta, joka kehitettiin Plan 9:ää varten.

## Graafiset sovellukset

Plan 9 kehitettiin käytettäväksi graafisella käyttöliittymällä. 

Käyttöliittymänä toimii *rio* ikkunointijärjestelmä, joka korvasi aikaisemman *8½* ikkunointijärjestelmän.

Ikkunointijärjestelmän on toteutettava yhtä aikaa kolmea asiaa ilmeisimpien lisäksi:
* järjestelmärajapinta (laitteistokäsittely)
* ohjelmarajapinta (ikkunoiden hallinta)
* käyttöliittymä (hiiri, näppäimistö, valikot..)

Rio on epätavallinen ikkunointijärjestelmien keskuudessa koska se on toteutettu *tiedostopalvelimena*. Plan 9:ssä lähes kaikki on tiedostopalveluina tai ainakin esitetty sellaisena.

## Ohjelmointi

Plan 9 on ohjelmoitu C-kielen muunnoksella, jossa on eräitä eroavaisuuksia ANSI C -standardiin verrattuna.

Osa Plan 9:stä on ohjelmoitu C-kielen kaltaisella rinnakkaisohjelmointiin tarkoitetulla Alef -kielellä. Alefin käyttö on kuitenkin jäänyt vähäiseksi vuoden 1995 toisen julkaisun jälkeen.

## Kritiikki

Plan 9:n "everything is a file" -konseptia on kritisoitu koska tyyppijärjestelmä on ajonaikainen eikä helposti määriteltävissä tai dokumentoitavissa.

## Lähteet