LOCUS 845

Operativsystem for PDP-11/45 og VAX-11/750

Den første implementasjonen var for en regneklynge av PDP-11/45 minidatamaskiner som benyttet 1 megabit og 10 megabit token ring datanett. I 1983 var systemet kjørende på 17 stk VAX-11/750 minidatamaskiner som benyttet et 10 megabit Ethernet.

UNIX-kompatibelt operativsystem

Operativsystemet var kompatibelt med UNIX og sørget for både en enkelt rot til filsystemet og et felles adresserom på tvers av alle nodene. Det kan beskrives som en distribuert versjon av UNIX. Absolutt all applikasjonsprogramvare var kompatibel på objektnivå, med både Berkeley Software Distribution (BSD) og UNIX System V. Konverteringen fra UNIX til LOCUS 845 gikk ut på å automatisk fjerne UNIX-kjernen og tilknyttet programvare, og sette inn LOCUS 845-kjernen med dens programvare, og reformatere sekundærlager for å oppnå støtte for funksjonelle forbedringer. Hver datamaskin kunne være både en klient og en tjener, med UNIX filaksess, interprosesskommunikasjon (pipe, call) og prosess-skapende (fork) primitiver som var implementert transparent over nettverket.

Replisering

For å gi pålitelig og rask tilgang til filsystemet i regneklyngen benyttet LOCUS 845 replisering. Dataer fra datafiler kunne bli lagret i mer enn en node, og LOCUS 845 holdt flere forskjellige kopier oppdaterte. Dette ga spesielt god aksesstid for datafiler som ble lest oftere enn de ble skrevet, som normalt er tilfelle for eksempelvis kataloger.
For å sikre at all aksess ble gjort for den nyeste versjon av enhver datafil, nominerte LOCUS 845 en bestemt node til current synchronization site (CSS) – «nåværende synkroniseringssted» for et gitt filsystem. Alle aksesser til datafiler i et filsystem ble koordinert med den korrekte CSS.

Nodeuavhengige datafiler

LOCUS 845 fant det noen ganger nødvendig å bryte illusjonen om et enkelt system, og tillate noen datafiler å være forskjellige på en per-node basis. Deriblant var det mulig å bygge en LOCUS 845-regneklynge som bestod av både PDP-11/45 og VAX-11/750 maskiner, men instruksjonsettene var ikke identiske, slik at to versjoner av hvert objektprogram var behøvelig.
Løsningen var å erstatte datafilene som var nødvendig på en per-node basis med spesielle, skjulte kataloger. Disse katalogene ville da inneholde de forskjellige versjoner av datafilen. Når en bruker aksesserte en av disse skjulte kataloger kunne LOCUS 845 sjekke brukerens kontekst og åpne den egnede datafilen.
For eksempel, hvis en bruker kjørte på en PDP-11/45 og skrev kommandoen /bin/who, da ville operativsystemet oppdage at /bin/who egentlig var en skjult katalog og kjøre kommandoen /bin/who/45. En annen bruker som skrev kommandoen /bin/who på en VAX-11/750, ville også operere i en skjult katalog og kjøre kommandoen /bin/who/vax.

Utstyr

LOCUS 845 sørget for fjern aksess over datanettet til utstyr for inn- og utmatning.

Prosesser

LOCUS 845 sørget for et enkelt, homogent prosessrom. Prosesser kunne skapes på en hvilket som helst node i systemet. Unix-kallene fork og exec undersøkte en liste som avgjorde på hvilken node prosessen ville kjøre. LOCUS 845 var konstruert for å arbeide med heterogene noder (en blanding av VAX-11/750 og PDP-11) og kunne bestemme at prosessen skulle utføres på en annen node hvis den behøvde et spesielt instruksjonssett. Som en optimalisering ble et kjørekall tilføyd som var ekvivalent med en kombinert fork og exec, slik at man unngikk å kopiere prosessens minnebilde til en annen node før man skrev over det med det nye bilde.

Pipes

Prosesser kunne bruke pipes for kommunikasjon mellom nodene, inkludert navngitte pipes.

Partisjonering

LOCUS 845 var konstruert for å kunne håndtere nettverkspartisjonering, hvor en eller flere noder ble koblet fra resten av systemet. Ettersom filsystemet var replisert, kunne de frakoblede noder fortsette med å aksessere datafiler. Når nodene ble tilkoblet igjen ble alle datafiler som var blitt modifisert av de frakoblede noder reintegrert med resten av systemet. For noen filtyper (for eksempel e-post) ble reintegreringen utført automatisk. For andre filtyper ble brukeren informert (via e-post) om reintegreringen, og ulike verktøy ga aksess til ulike versjoner av datafilen.

Lærdommer fra LOCUS 845

En lærdom fra prosjektet, var at en nettverkstransparent distribuert filsystem med høy ytelse kunne konstrueres og implementeres selv i et lite maskinmiljø. I et slikt filsystem er det nyttig å replisere lagringen. For å oppnå høy ytelse er det nødvendig å skille mellom aksess til lokale ressurser og aksess til ikke-lokale ressurser. Den genererte koden for å oppnå dette, gir et resultat som er rettferdiggjort av økt ytelse. Det balanserende behov for protokollsynkronisering og feildeteksjon mens man vedlikeholder god ytelse, representerte derimot en betraktelig utfordring.