thompson.jpeg (12904 bytes)

Ken Thompson

ritchie.jpeg (10180 bytes)

Dennis Ritchie


UNIXin historia - Miksi ja miten UNIX syntyi?

Tietojenkäsittelytieteen historia -seminaari, kevät 2000
Esitelmä 30.3.2000
Liisa Paasiala

Sisältö


Johdanto

UNIX-käyttöjärjestelmä on tuttu melkein kaikille ihmisille, jotka joskus ovat jotain ohjelmoineet. Se on tänä päivänä hyvin laajalti käytössä ja sitä myyvät muun muassa Sun Microsystems, IBM, HP, Compaq, NeXT ja SGI. Oikeastaan on vähän harhaanjohtavaa puhua UNIXista, sillä eri toimittajien käyttöjärjestelmät on nimetty eri tavalla, ja ne myös eroavat toisistaan enemmän tai vähemmän. UNIX oli alunperin Bell Labsin tuotemerkki, mutta se on sen jälkeen myyty toiselle yhtiölle. Se, minkälaisena me UNIXin tänä päivänä tunnemme, eroaa kyllä hyvin paljon siitä, minkälainen se alkuaikoina oli. Ei niinkään paljon toteutukseltaan ja rakenteeltaan, mutta melkein kaikilta muilta osin. UNIXin alkuperäinen ideahan oli tarjota myös lähdekoodi levitykseen. Aluksi UNIXin saaminen ei edes maksanut mitään, piti vain tuntea oikeat ihmiset.

Kuinkahan moni UNIXin käyttäjä on muuten nykyään sitä mieltä, että se on yksinkertainen, hienostunut, ja helppokäyttöinen? Thompson ja Ritchie nimittäin pyrkivät tekemään järjestelmästä sellaisen [RT2]. Se, että UNIX on saavuttanut näin merkittävän aseman, kaupallisestikin, on oikeastaan hiukan omituista. Jos ajattelemme UNIXin syntyä, niin sen tekijät eivät oikeastaan edes ajatelleet, että jotkut muut käyttäisivät heidän omiin tarkoituksiinsa tekemää käyttöjärjestelmää. UNIX tehtiin puhtaasti ohjelmoijan työkaluksi. Sen tekeminen ei myöskään ollut kaupallinen projekti, vaan enemmänkin tutkimusprojekti: muutamat kaverit Bell Labsilla vain tarvitsivat käyttöjärjestelmän ja päättivät tehdä sen itse.

UNIXin isänä pidetään yleisesti Ken Thompsonia, jolla oli merkittävin panostus sen kehittelyssä. Yleensä kuitenkin mainitaan lisäksi Dennis Ritchien nimi, joka on myös vaikuttanut ratkaisevasti UNIXin syntyyn ja siihen, millainen siitä tuli. UNIXin kehitykseen sen jälkeen ovat vaikuttaneet hyvin monet ihmiset, instituutiot ja yritykset.

Tämä esitys keskittyy tutkimaan syitä ja olosuhteita, jotka vaikuttivat UNIXin syntyyn; myös UNIXin kehitysprosessi saa paljon huomiota. Pääpaino on vuosissa 1965-1974. Koska UNIXin syntyyn on niin oleellisesti vaikuttanut kahden ihmisen, Thopsonin ja Ritchien, persoonat, esityksessä valotetaan myös hieman heidän persoonallisuuttaan. UNIXin leviämisestä 1970-luvulla kerrotaan myös lyhyesti.


Multics-projekti

Jo vuonna 1957 Bell Labsilla huomattiin tarve käyttöjärjestelmälle. Järjestelmää tarvittiin sisäistä tietokonekeskusta varten, jossa oli siihen aikaan paljon lyhyitä eräajo-ohjelmia suoritettavana. Ohjelmat jouduttiin käynnistämään ja lopettamaan manuaalisesti, joka oli aikaavievää ja mekaanista työtä, koska ohjelmia oli paljon ja ne olivat yleensä melko pieniä. Siihen aikaan ei kuitenkaan ollut käyttöjärjestelmiä saatavilla miltään toimittajalta; ainoat vaihtoehdot oli tehdä sellainen itse, tai hankkia järjestelmä joltakulta, joka jo oli tehnyt sellaisen. Bell Labsilla oli pari tutkijaa, jotka ottivat asian omakseen ja rakensivat käyttöjärjestelmän. Se oli valmis jo vuonna 1958, ja sai nimekseen BESYS. BESYSiä käytettiin myös Bell Labsin ulkopuolella; kopioita järjestelmästä jaettiin nauhalla tarvitsijoille (lähinnä työntekijöiden kavereille), mutta mitään tukea sille ei luvattu. [Pei]

Vuonna 1964 Bell Labsilla otettiin käyttöön kolmannen sukupolven tietokonelaitteistoa, jolloin piti myös päättää uudesta käyttöjärjestelmästä. Vaihtoehtoina oli rakentaa uusi järjestelmä itse tai hankkia jonkin ulkopuolisen toimittama järjestelmä. Lopulta, Vyssotskyn mukaan jokseenkin epäselvän harkintaprosessin jälkeen, Bell Labs päätti mennä mukaan projektiin, jossa mukana olivat lisäksi MIT (Maccachutes Institute of Technology) ja GE (General Electric). Projektin tarkoituksena oli rakentaa yleiskäyttöinen ja interaktiivinen monen käyttäjän osituskäyttöinen käyttöjärjestelmä, jollaisia ei siihen aikaan ollut. Bell Labsin tarpeisiin järjestelmä oli ehkä liiankin laaja: he halusivat vain systeemin, joka korvaisi BESYSin uuden laitteiston kanssa. [Pei]

Projekti aloitettiin vuonna 1965, ja se sai nimekseen Multics (Multiplexed Information and Computing Service). Projekti oli lähinnä tutkimusprojekti, jonka tarkoituksena oli tuottaa kaikkia kolmea osapuolta hyödyttävä järjestelmä. Osapuolet pääsivät melko nopeasti sopimukseen järjestelmän ominaisuuksista, jotka olivat melko yleisellä tasolla. Ennen pitkää tultiin kuitenkin huomaamaan, että osapuolten tarpeet olivat erilaisia ja ristiriitaisia: MIT halusi tehdä huippukäyttöjärjestelmän, Bell Labs halusi hyvän työympäristön työntekijöilleen, ja GE halusi uuden järjestelmän avulla vahvistaa tuotteidensa asemaa [Pei].

Ensimmäinen kuvaus Multics-käyttöjärjestelmästä oli jaettu kuuteen eri artikkeliin, jotka kaikki esiteltiin vuonna 1965 Fall Joint Computer -konferenssissa. Nämä kuusi artikkelia kuvasivat, mitä projektin jäsenet luulivat tekevänsä; ei sitä, millainen järjestelmästä lopulta tuli. Bell Labsilla Multics-projektia veti Vyssotsky. Ken Thompson suunitteli I/O kytkintä ja kirjoitti QED-nimisen editorin. Dennis Ritchie ja Rudd Canaday työskentelivät BCPL-kielen kimpussa, ja Joe Ossanna suunnitteli I/O-järjestelmää [www2].

Vyssotsky oli mukana kirjoittamassa yhtä artikkeleista, jossa kuvattiin pääpiirteet Multicsista [VyC]. Artikkelissa esitellyt järjestelmälle asetetut vaatimukset kuulostivat hyvin kunnianhimoisilta. Ja sitä ne olivatkin, kuten projektissa tultiin huomaamaan. Ainakin Bell Labsilla oli aluksi naiivi suhtautuminen projektin vaatimaan työmäärään. Alunperin ajateltiin, että projektiin kuluu pari vuotta, mutta tämä arvio oli melkoisen kaukana todellisuudesta. Vaatimusten lisäksi projekti oli muutenkin hyvin kunnianhimoinen; se haluttiin tehdä mahdollisimman hyvin. Esimerkiksi "Programmer's Manual" oli 3000 sivua, jotka kaikki katselmoitiin, ja monet osat kirjoitettiin ja katselmoitiin vielä uudestaan [www1]. Vyssotsky on myöhemmin sanonut, että projektia vaivasi "toisen järjestelmän syndrooma" [Pei]. Tämä tarkoittaa sitä, että toiseen järjestelmään halutaan laittaa kaikki, mikä ensimmäisestä puuttui.

Projekti eteni paljon luultua hitaammin, ja myös sen kustannukset kasvoivat jatkuvasti. Osapuolten ristiriitaisia tarpeita ei myöskään saatu sovitettua kunnolla samaan järjestelmään. Vuoteen 1969 mennessä Bell Labsin johto tuli siihen tulokseen, että Multics, kaikista lupauksistaan huolimatta, ei valmistu ajoissa heidän tarpeisiinsa, ja sen vaatima hinta tulee myös liian kalliiksi. Myös Multics-projektiin osallistuneet tutkijat kannattivat projektista vetäytymistä. Niinpä Bell Labs jätti projektin, vaikka oli uhrannut siihen paljon aikaa ja rahaa. Mutta jotain tärkeää kuitenkin jäi jäljelle: ihmiset, jotka olivat osallistuneet projektiin, ja saaneet paljon arvokasta tietoa tulevaisuutta varten. [Pei] flutes.gif (15182 bytes)

Multics-projektin picnic. Tähän eivät luultavasti Bell Labsin koodarit osallistuneet...


Idea UNIXista

Ken Thompson ja Dennis Ritchie olivat projektin aikana käyttäneet Multicsia ja nähneet, millaisia mahdollisuuksia "nilkuttavakin" järjestelmä pystyi jo siihen aikaan tarjoamaan [Pei]. Vaikka Multics ei pystynyt tukemaan samanaikaisesti kovin monia käyttäjiä, se oli kuitenkin ollut riittävä tukemaan kahta käyttäjää, vaikkakin suurilla kustannuksilla. Kun Multics otettiin pois, se oli Kenin kaltaiselle ihmiselle melkoinen katastrofi [Pei]. Ken ja Dennis eivät halunneet menettää mukavaa ohjelmointiympäristöä, johon olivat jo tottuneet, eikä Multicsin kaltaisia, osituskäyttöisiä käyttöjärjestelmiä ollut markkinoilla saatavilla. Dennis kertoo, että he eivät halunneet samanlaista käyttöjärjestelmää pelkästään sen takia, että se oli hyvä ohjelmointiympäristö. Tärkeää oli myös se, että yhteiskäyttöisen koneen avulla he pystyivät muodostamaan "kaveripiirin", jossa kommunikaatio oli tiivistä [Ri1].

On huomattava, että Thompson ja Ritchie eivät lähteneet kehittämään UNIXia siksi, että he olisivat olleet jotenkin erityisen kiinnostuneita käyttöjärjestelmistä. Heidän päämääränään oli saada tehdä tutkimustyötään. Kun Multics otettiin pois ja vanha GECOS-järjestelmä tuli tilalle, heidän oli pakko tehdä asialle jotain. He eivät istuneet nurkkaan itkemään, vaan rupesivat miettimään vaihtoehtoja Multicsille [Pei]. Thompsonin ja Ritchien lisäksi myös Doug McIlroy, Joe Ossanna ja Rudd Canaday olivat kiinnostuneet uuden käyttöjärjestelmän suunnittelusta. Bell Labsin työskentelytapa mahdollisti sen, että kuka tahansa saattoi heittää idean mielenkiintoisesta projektista ilmaan. Jos se muistakin tutkijoista vaikutti hyvältä idealta, ja he olivat kiinnostuneita osallistumaan, projekti laitettiin pystyyn [CUH].

Aluksi piti kuitenkin saada laitteisto, jossa uutta käyttöjärjestelmää voisi kehittää. Koko vuoden miehet yrittivät saada anomustaan uuden koneen hankinnasta läpi. Vaihtoehtoina heillä oli DECin PDP-10 ja SDS (myöhemmin Xerox) Sigma 7. Koneen hankintayrityksiä Ritchie kuvaa turhauttaviksi: anomuksia ei koskaan suoranaisesti hylätty, mutta ei niitä hyväksyttykään [Ri1]. Ritchie sanoo, että jälkikäteen on aivan selvää, miksi anomuksia ei hyväksytty: Bell Labsin johto ei halunnut käyttää niin paljon rahaa projektiin, jonka muutamat innokkaat ohjelmoijat esittelivät, ja jolla ei ollut kovin selkeää suunnitelmaa [Ri1]. Ja varmasti Multics-projektin epäonnistuminen vaikutti myös: oikeastaan Bell Labsin johto ei halunnut enää kuullakaan koko käyttöjärjestelmäkehityksestä.

Laitteistohuolien lomassa mietittiin myös järjestelmän teknistä toteutusta. Thompson, Ritchie ja Canaday kehittelivät liitutaulun ja paperille tuherrettujen muistiinpanojen avulla tiedostosysteemin perusrakenteen, josta myöhemmin oli tuleva UNIXin sydän. Suurimman osan työstä teki Thompson, mutta esimerkiksi laitteistotiedostot olivat Ritchien idea. Thompson kehitteli samaan aikaan myös peliä nimeltä "Space Travel". Jostain syystä monet UNIXin historiakuvaukset mainitsevat tämän pelin syynä UNIXin syntymiseen, mutta esimerkiksi Ritchie näkee sen vain demonstroineen tekniikkaa, millä UNIXia ruvettiin tekemään [Ri1]. Ohjelma tehtiin Fortranilla ja sitä käytettiin GECOSissa (käyttöjärjestelmä), joka toimi GE635-koneella. GE-kone oli kuitenkin toivoton alusta ohjelmalle: se oli hidas ja kuva oli nytkähtelevää, lisäksi CPU-aika koneessa maksoi 75$ yhtä peliä kohden!


UNIX syntyy

Tässä vaiheessa Thompson onnistui löytämään jostain hylätyn, vähänkäytetyn DEC PDP-7 -koneen. Siinä oli muistia vähänlaisesti jopa senaikaiseksi koneeksi: 8K 18-bittisiä sanoja. Siinä oli kyllä erinomainen näyttöprosessori, joka oli tarpeen peliä ajatellen. Thompson ja Ritchie kirjoittivat "Space Travel" -ohjelman tälle koneelle, mikä olikin isompi urakka kuin he olivat ajatelleet. He kirjoittivat ohjelman symbolisella konekielellä, käänsivät sen GECOSissa, ja veivät saadut paperinauhat PDP-7 -koneelle. [Ri1]

Samaa tekniikkaa käyttäen Thompson rupesi hieman myöhemmin tekemään UNIXin ensimmäistä osaa: tiedostojärjestelmää, jonka he olivat suunnitelleet aikaisemmin. Siihen kuului kolme erityyppistä tiedostoa: hakemisto, tavallinen tiedosto ja erikoistiedosto. Mukana olivat myös tärkeimmät tiedostojärjestelmäkutsut (read, write, open, close, creat). Polkunimiä ei vielä ollut, vaan kaikki tiedostonimet olivat yksinkertaisia nimiä ilman '/' -merkkiä. IO-yksikkö oli sana, eikä tavu, PDP-7:n toteutuksesta johtuen. Työn edistyessä Ken huomasi tarvitsevansa myös muita osia toimivan käyttöjärjestelmän luomiseksi, erityisesti prosessit. Sitten tuli joitakin käyttäjätason ohjelmia: tiedostojen kopiointi, tulostus, poistaminen, editoiminen, ja tietenkin myös yksinkertainen komentotulkki, shell.  [Ri1]

Thompson on kertonut, että Multics-kokemus vaikutti kovasti siihen, mitä hän halusi sisällyttää UNIXiin, ja mitä ei [CUH]. Multicsin virtuaalinen muistijärjestelmä ei Keniä miellyttänyt, eikä muistin ja tiedostojen yhtenäinen käsittely. Hierarkinen tiedostosysteemi, explisiittinen prosessikäsite, yksinkertainen tekstitiedostojen esitys ja käyttäjätason komentotulkki olivat asioita, mitkä hän halusi myös UNIXiin [Ri3].

Kun Thompson sai tehdyksi myös konekielen kääntäjän (assembler), työ rupesi helpottumaan. Järjestelmä pystyi nyt tukemaan itseään, jolloin kehitystä voitiin jatkaa pelkästään PDP-7:lla. Käyttöjärjestelmä, jonka me tunnemme UNIXina, oli saanut alkunsa. Vuosi oli tuolloin 1970. Yleensä UNIXin synty ajoitetaan kuitenkin vuoteen 1969. Brian Kernighan keksi UNIXille sen nimen. Idea tuli Multics-nimestä; UNIX on oikeastaan sanaväännös siitä (uniplexed vs. multiplexed).


UNIXin suunnitteluperiaatteet

Kun UNIXin kehitystä nyt jatkettiin eteenpäin, tutkijat asettivat itselleen ja työnteolleen joitakin periaatteita. Seuraavassa on muutama niistä [MPT]:

Tärkeimpänä järjestelmän ominaisuutena nähtiin aluksi sen tarjoama tiedostojärjestelmän käyttö, joten sen kehittämiseen keskityttiin myös suunnittelussa. Sen haluttiin olevan helppokäyttöinen, ohjelmoijan työskentelyyn sopiva.

Ritchie ja Thompson kertovat [RT2], että jälkeenpäin ajatellen on nähtävissä kolme tekijää, jotka vaikuttivat UNIXin suunnitteluun. Koska he olivat ohjelmoijia, he tietenkin suunnittelivat järjestelmän sellaiseksi, että sillä oli helppo kirjoittaa, testata ja suorittaa ohjelmia. Tärkeimpänä tekijänä hyvässä ohjelmointiympäristössä nähtiin sen interaktiivinen käyttö, vaikkakin ensimmäinen versio tuki vain yhtä käyttäjää. Toisena tekijänä Ritchie näkee järjestelmän ja sen ohjelmiston tiukat kokorajoitukset. Se aikaansai UNIXin "taloudellisen" ohjelmoinnin, mutta myös suunnittelun tietyn hienostuneisuuden. Kolmas tekijä oli se, että järjestelmä pystyi tukemaan itseään. Tällöin järjestelmän tarjoamaa ympäristöä käytettiin myös sen kehittämiseen, jolloin kehittäjät näkivät helposti sen viat ja heikkoudet, ja olivat myös motivoituneita korjaamaan ne.


UNIXin kehitys

Vuoden 1970 alussa tutkijat olivat taas huolissaan laitteistosta. PDP-7, vaikka olikin toiminut hyvin, oli jo vanhentunut, eivätkä tutkijat edes itse omistaneet sitä. He tiesivät tarvitsevansa pian uuden laitteiston. Niinpä he tekivät jälleen yhden anomuksen hallinto-osastolle; he halusivat PDP-11:n, jonka DEC oli juuri esitellyt. Tämä anomus erosi ratkaisevasti muista, jotka eivät olleet saaneet vastakaikua. Ensinnäkin sen vaatima rahamäärä oli huomattavasti pienempi ($65000). Toiseksi heillä oli tällä kertaa esitettävänään selkeä käyttötarkoitus: Ossanna oli ehdottanut "sanankäsittelyohjelmaa", jonka he päättivät toteuttaa. Asiat etenivätkin sutjakkaasti ja tilaus koneesta lähti toukokuussa 1970. Prosessori saapui kesän lopussa, mutta koska laitteisto oli niin uusi, DEC pystyi toimittamaan levyn vasta joulukuussa. Prosessorille keksittiin onneksi hyödyllistä tehtävää väliajaksi: se luetteli erilaisia reittejä shakkinappuloille. [Ri1]

UNIXin ensimmäinen versio saatiin valmiiksi vuonna 1971. Se oli tehty symbolisella konekielellä PDP-11/20 -koneelle. Polkunimet olivat jo käytössä, mutta järjestelmä ei vielä pystynyt tukemaan useampaa käyttäjää. Mielenkiintoinen piirre oli järjestelmän koko: 24K keskusmuistia (16K systeemille, 8K käyttäjäohjelmille) ja 512K levymuisti (1K/lohko). Tiedostojen maksimikoko oli 64K. Järjestelmä sisälsi myös ohjelman tekstinkäsittelyyn. [Ri1]

Bell Labsin patenttiosastolla tarvittiin samoihin aikoihin tekstinkäsittelyjärjestelmää, ja siellä harkittiin kaupallisen ohjelmiston hankkimista siihen tarkoitukseen. Tutkijat kuitenkin saivat osaston väen vakuuttuneeksi oman ohjelmansa eduista: se tuki Teletype37 -päätteitä, jotka pystyivät tuottamaan osaston tarvitsemat matemaattiset merkit, ja se pystyi tulostamaan rivinumerot tekstin mukana. Niinpä tutkijat saivat UNIXille ensimmäiset käyttäjät: kolme patenttiosaston konekirjoittajaa. Nyt heidän piti tarjota UNIXille myös tukipalveluja, mikä osoittautui rankaksi, mutta antoisaksi kokemukseksi. [Ri1]

old_picture.jpg (79006 bytes)

Kuvassa Ken istuu toisen Teletype33 -päätteen äärellä, Dennis on takana. Laitteistosta kaksi oikeanpuoleisinta "kaappia" on DECin PDP-11/20 prosessori. Kuva on vuodelta 1972.

Pian tehtiin UNIXin toinen versio, johon oli lisätty putket (pipe). Idea näihin tuli Doug McIlroylta, joka oli jo vuonna 1964, ilmeisesti Multics-projektia ennakoiden, kirjoittanut lehtiöönsä: "We should have some ways of connecting programs like garden hose - screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also."

Ritchie oli jo vuonna 1969 ruvennut kehittelemään korkeamman tason ohjelmointikieltä, jolla UNIX voitaisiin ohjelmoida joskus myöhemmin. Aluksi UNIXin siirrettävyyteen ei juuri kiinnitetty huomiota, ohjelmointikieltä haluttiin lähinnä helpottamaan sen kehitystä. Thompson oli kehittänyt B-kielen, joka oli Ritchien mukaan "BCPL-kieli, joka on kutistettu 8K muistiin ja suodatettu Kenin aivojen läpi" [Ri3]. B:stä Dennis kehitti edelleen C:n, jossa oli tietotyypit ja erilainen syntaksi. Aluksi C:ssä ei ollut "struct" -tyyppiä, ja yritykset kirjoittaa UNIXia sillä eivät onnistuneet. Kun uusi tyyppi lisättiin kieleen, saattoivat kehittäjät aloittaa UNIXin ytimen kirjoituksen C:llä vuoden 1973 alussa. Kesän aikana UNIX kirjoitettiin kokonaan C-kielellä, ja kun työ lopulta tuli tehtyä, oli neljäs versio valmis. Tässä versiossa UNIX saavutti modernin muotonsa, ja se myös tuki useampaa käyttäjää [Ri1]


UNIXin leviäminen

UNIX oli vuoden 1971 jälkeen levinnyt laajalti Bell Labsin sisäiseen käyttöön. Se ei levinnyt sen takia, että jokin ylempi taho olisi päättänyt UNIXin laajasta käyttöönotosta, vaan työntekijät itse kuulivat siitä ja halusivat käyttää järjestelmää [Pei]. Rudd Canadayn mukaan UNIX levisi Bell Labsissa, koska ihmiset "rakastivat" käyttää sitä [Moh]. Jo vuonna 1971 käyttäjiä oli sen verran, että tarvittiin ohjeita järjestelmän käyttöön. Tuloksena oli ensimmäinen "Unix Programmer's Manual" [RT1] marraskuussa 1971.

Vuoden 1971 paikkeilla Bellillä huomattiin tarve puhelintoimintojen tukemiseen minitietokoneen avulla. Ylläpito, korjaukset, liikenteen kontrolli ja laskutussovellukset haluttiin tehdä aikaisempaa paremmin. Koska tätä varten tarvittiin uutta käyttöjärjestelmää, Berkley Tague rupesi tarjoamaan UNIXia eri puhelinyhtiöille. Monet ottivatkin sen käyttöön, sillä vaihtoehtona olisi ollut itse kirjoittaa käyttöjärjestelmä. Tämä kehitys aikaansai sen, että UNIXille ruvettiin tarvitsemaan oikeita tukipalveluja, joita tutkijat eivät millään pystyneet tarjoamaan. Niinpä Bell Labsilla perustettiin tätä varten UNIX System Group (USG), jota Tague rupesi vetämään. [Moh]

Kun Thompson ja Ritchie esittelivät kirjoituksensa "The UNIX Time-sharing System" [RT2] SOSP:ssa (Symposium on Operating System Principles) lokakuussa 1973, rupesi tapahtumaan. Välittömästi tapahtuman jälkeen saapui runsaasti pyyntöjä järjestelmän saamiseksi. Heinäkussa 1974 Communications of the ACM julkaisi samaisen esityksen, jolloin kiinnostus UNIXiin kasvoi räjähdysmäisesti. Bellille oli asetettu "Consent Decree" vuonna 1956, joka tarkoitti, että se sai kaupata ainoastaan puhelinalaan liittyviä palveluita ja sovelluksia [Wil]. Tästä syystä UNIXia ei voitu laittaa kaupallisille markkinoille. Sen antaminen opetuskäyttöön yliopistoihin nimellistä maksua vastaan kuitenkin onnistui.

Eräs 33 instituutiosta, joihin UNIX tilattiin heti julkaisun jälkeen, oli Berkeleyn University of California. Thompson oli itse opiskellut siellä, ja vuonna 1975 hän otti sapattivuoden Bell Labsilta ja palasi vanhaan opinahjoonsa vierailevana professorina. Mukanaan hänellä oli UNIXin viimeisin, kuudes versio. Syksyllä 1975 yliopistoon saapui myös kaksi opiskelijaa: Bill Joy ja Chuck Haley. He kiinnostuivat UNIXista ja rupesivat kehittämään sitä. He lisäsivät UNIXiin Pascal-ohjelmointiympäristön yhdessä Thompsonin kanssa ja kehittivät editorin "ed". Näistä lisäyksistä tehtiin ensimmäinen BSD (Berkeley Software Distribution) -versio vuoden 1977 alussa. Vuoden 1978 puolivälissä julkaistiin 2BSD, jossa oli parannettu versio Pascalista, editori "vi" ja "termcap" usealle päätetyypille. 3BSD vuonna 1979 oli siirretty myös VAX-koneelle, ja siinä oli mukana virtuaalimuisti. Vuonna 1980 julkaistiin 4BSD, johon on lisätty myöhemmin muun muassa TCP/IP. [www3]

UNIXin myyntikieltoa ruvettiin purkamaan ja UNIXin kuudes versio vuonna 1976 oli ensimmäinen, joka pääsi laajempaan, kaupalliseen levitykseen. Tämän jälkeen myös monet kaupalliset yhtiöt ovat ruvenneet kehittämään UNIXia. Esimerkiksi Sun on lisännyt UNIXiin NFS:n (Network File System).

Monille ihmisille UNIXin seitsemäs versio, joka julkaistiin vuonna 1978, on edelleen "viimeinen oikea UNIX". Se sisälsi C-kielen täydellisenä versiona, uucp:n (Unix to Unix copy) ja Bourne shellin. Suurin osa alkuperäisistä UNIX-kehittäjistä Bell Labsilla jättivät UNIXin tämän version jälkeen, ja vastuu UNIXin kehittämisestä siirrettiin PWB:lle (Programmer's WorkBench). UNIXista tehtiin vielä joitakin versioita tämän jälkeen, mutta ne eivät ole saavuttaneet laajaa suosiota tai julkisuutta. PWB ja USG yhdistettiin "UNIX System Development Lab":iksi vuonna 1983.

Kesäkuussa 1972 UNIX oli asennettu 10 koneelle. Vuonna 1977 UNIX oli asennettu noin 500 paikkaan ympäri maailmaa. Vuonna 1984 UNIX-asennuksia oli jo noin 100000. Vuonna 1997 määrä oli kasvanut edelleen hurjasti: maapallolla oli 3 miljoonaa UNIX-järjestelmää. UNIX on pitänyt pintansa ja saavuttanut entistä suuremman käyttäjäjoukon 1990-luvun lopulla. Saattaa näyttää jopa siltä, että UNIXin voittokulkua ei mikään voi pysäyttää. Toisenlaisiakin mielipiteitä on, mm. Mike Loukides epäilee UNIXin lopulta tukahtuvan Microsoftin alle [Lou].

unixtimeline.gif (12283 bytes)

UNIXin eri versioiden kehittyminen


Ken & Dennis - Miehet UNIXin takana

dennis&thompson.jpg (15102 bytes) Ilman Ken Thompsonia ja Dennis Ritchietä ei UNIXia olisi varmaan koskaan syntynyt. He muodostivat parivaljakon, joka teki tiivistä ja tehokasta yhteistyötä [Tho]. Molemmat ovat luoneet pitkän uran Bell Labsilla, jossa he yhä edelleen työskentelevät. Molemmat olivat myös mukana "Plan 9" ja "Inferno" käyttöjärjestelmien kehittelyssä 1990-luvun puolivälissä. Heidän ystävyytensä on tänä aikana saavuttanut asteen, jota Dennis kuvailee seuraavasti: "Minä olen varmaan niitä harvoja ihmisiä Bonnien lisäksi, joka on nähnyt Kenin tumma puku päällä useammassa kuin kahdessa tilaisuudessa".
Ken tuli Bell Labsille töihin vuonna 1966, mitä ennen hän opiskeli Berkelyssä sähkötekniikkaa. Hän on luonteeltaan yhä edelleen "koodari", joka hahmottaa asiat yksityiskohtien kautta. Suuret ja monimutkaiset kokonaisuudet taas saavat hänet hämmentymään; hän ei ymmärrä niitä. Tämän vuoksi hän halusi tehdä UNIXistakin yksinkertaisen ja selkeän [CUH]. Ken on ollut aina innostunut tietokonepeleistä, vaikka ei ole niitä juuri tehnytkään "Space Travel" -peliä lukuunottamatta. Hän on erittäin kiinnostunut shakista, ja on tehnyt Condonin kanssa "Belle"-shakkiohjelman. Siitä he saivat myös palkinnon International Computer Chess Associationilta vuonna 1980. Eräs Kenin intohimoista on musiikki; hänellä on yksityinen musiikkikokoelma, jossa on noin 35000 eri kappaletta. Kenillä on vaimo Bonnie ja yksi poika. thompson_informal.gif (201738 bytes)
ritchie95.gif (21038 bytes) Dennis saapui Bell Labsille vuonna 1967. Hän jatkaa sukunsa perinnettä, sillä myös hänen isänsä on ollut Bell Labsilla töissä. Dennis on syntynyt vuonna 1941 Bronxvillessä. Hän opiskeli Harvardissa, ensin fysiikkaa, josta myös valmistui. Sen jälkeen hän opiskeli sovellettua matematiikkaa, josta väitteli tohtoriksi vuonna 1968 aiheenaan "Funktioiden alirekursiiviset hierarkiat". Hän itse kertoo huomanneensa fysiikkaa opiskellessaan, ettei ollut tarpeeksi lahjakas alalle, ja että tietokoneet vaikuttivat aika "siisteiltä". Matematiikkaa opiskellessaan hän vakuuttui, ettei ollut myöskään tarpeeksi lahjakas algoritmien teorioiden asiantuntijaksi. Hän huomasi myös pitävänsä enemmän proseduraalisista kuin funktionaalisista kieliestä. Dennis on ollut tuotteliaampi dokumenttien kirjoittajana kuin Ken, joka on keskittynyt enemmän ohjelmoimaan. Denniksellä ei ole vaimoa eikä lapsia.

Molemmat miehet ovat saaneet roppakaupalla palkintoja ja tunnustuksia työstään. Tärkeimpiä niistä ovat seuraavat, miesten yhdessä saamat palkinnot: Bell Laboratories Fellow 1983, ACM Turing Award 1983, ACM Software Systems Award 1983, IEEE Hamming Medal 1990, Member of National Academy of Engineering 1988, U.S. National Medal of Technology 1999. Lisäksi Thompson sai vuonna 1999 ensimmäisen Computer Societyn myöntämän Tsutomo Kanai -palkinnon.

Turing Award -palkinnon yhteydessä 1983 molemmat miehet pitivät puheen. Varsinkin Thompsonin puhe "Reflections on Trusting Trust" [Tho] on jäänyt historiaan. Siinä hän esitteli, kuinka helppoa on tehdä "Troijan hevonen", hakkeroida koodia. Lisäksi hän tuomitsi jyrkästi tällaisen toiminnan, ja moitti lehdistöä hakkereiden puolustelusta. Ritchie puhui aiheesta "Reflections on Software Research" [Ri2].

Lucentlow.jpg (22487 bytes)

Ken ja Dennis vastaanottavat National Medal of Technology -palkinnon 1998 presidentti Clintonilta

r&t_old.jpg (15747 bytes)

Joillekin UNIXin historia, vaikka ei vielä niin kaukainen asia olekaan, on jäänyt melkoisen hämäräksi. Hämmästyttävää on, että jopa Byte -lehti pitää Dennis Ritchietä UNIXin luojana! Sen listauksessa "20 tärkeintä ihmistä" vuonna 1995 mainitaan Ritchie, mutta ei halaistua sanaa Thompsonista [www4].


Yhteenveto

UNIXia ei olisi syntynyt ilman Ken Thompsonia ja Dennis Ritchietä, jotka tarvitsivat itselleen ohjelmointiympäristön, ja tekivät sellaisen. Heillä ei kehityksen alkuaikoina ollut aavistustakaan, kuinka laajalle UNIX joskus leviäisi. Ei myöskään Bell Labsilla, joka näki aluksi heidän pyrkimyksensä turhina ja liian kalliina. Bell Labsin työskentelytyylin mukaisesti miehet saivat kuitenkin vapaasti puuhastella tutkimustyön nimissä, ja ottaa työhön mukaan kavereitaankin. Thompson on sanonut, että melkein kaikki, mitä hän on tehnyt, on johtunut hänen henkilökohtaisesta kiinnostuksestaan siihen työhön. Hän on saanut tehdä, ja häntä on tuettu, melkein kaikissa asioissa, mihin on ryhtynyt. Monet niistä ovat kyllä olleet sillä rajalla, mikä on tietojenkäsittelyssä ollut hyväksyttyä ja mikä ei. Jopa UNIX-projekti oli juuri niillä rajoilla, että Bell Labs ei olisi hyväksynyt sitä [CUH].

Perusrakenne UNIXiin syntyi myös yllättävän helposti. Ritchie on kertonut, että se vaati yhteensä kaksi miestyövuotta. Se ei ole tänä päivänä projektin kestolle aika eikä mikään. Asiaan tietysti vaikutti suuresti Kenin ja Denniksen asialle omistautuminen, tietynlainen "nerous", ja kyky nähdä, mitä asioita toteuttaa ja mitä jättää pois.

Mikä on tarinan opetus? Tee aina sitä, mikä itseäsi kiinnostaa, jos sinulla vain on suinkin mahdollisuus.


Lähteet

[CUH] Cooke; Urban; Hamilton: "UNIX and Beyond: An Interview with Ken Thompson", Computer, May 1999
[Lou] Loudikes, Mike: "A brief history of UNIX", www.uwsg.indiana.edu/usail/external/recommended/unixhx.html, 1996
[MPT] McIlroy, Doug; Pinson, E; Tague, Berkley: "UNIX Time-sharing System Forward", The Bell System Technical Journal, 6 part 2 (57), 1978 (*)
[Moh] Mohr, August: "The Genesis Story", Unix Review, 1(3), January 1985
[Pei] Peirce, Ned: "The UNIX Aplications Story - Interview with Victor Vyssotsky", Unix Review, 1(3), January 1985
[Ri1] Ritchie, Dennis: "The Evolution of the UNIX Time-sharing System", AT&T Bell Laboratories Technical Journal, 8(63), October 1984
[Ri2] Ritchie, Dennis: "Reflections on Software Research", Communications of ACM, 27(8), s. 758-760, 1984
[Ri3] Ritchie, Dennis: "The Development of the C Language", Second History of Programming Languages Conference, April 1993
[RT1] Ritchie, Dennis; Thompson, Ken: "UNIX Programmer's Manual", November 1971
[RT2] Ritchie, Dennis; Thompson, Ken: "The UNIX Time-sharing System", Fourth ACM Symposium on Operating Systems Principles, October 15-17, 1973
[Tho] Thompson, Ken: "Reflections on Trusting Trust", Communications of ACM, 27(8), s. 761-763, 1984
[VyC] Vyssotsky, Victor; Corbató, Fernando: "Introduction and Overview of the Multics System", Fall Joint Computer Conference, 1965
[Wil] Wilson, Otis: "The Business Evolution of the Unix System", Unix Review, 1(3), January 1985
[www1] Multicsin historia: http://www.multicians.org/history.html
[www2] UNIX ja Multics, Tom Van Vleck: http://www.multicians.org/unix.html
[www3] Byte-lehti: "The history of Unix is as much about collaboration as it is about technology", Peter Salus: http://www.byte.com/art/9410/sec8/art3.htm
[www4] Byte-lehti: "20 Most Important People": http://www.byte.com/art/9509/sec7/art23.htm

(*) Koko materiaali ei ole saatavilla.


WWW-linkkejä

Dennis Ritchien kotisivu: http://cm.bell-labs.com/cm/cs/who/dmr/index.html

Dennis Ritchie -sivu: http://bit.csc.lsu.edu/tutorial/ten-commandments/dmr/index.html

Jones Telecommunications & Multimedia Encyclopedia: Dennis Ritchie: http://www.digitalcentury.com/encyclo/ritchie.html

Ken Thompsonin kotisivu: http://cm.bell-labs.com/cm/cs/who/ken/index.html

Ken Thompson lentää MiG-29:llä: http://ghg.ecn.purdue.edu/ken/mig.html

Mitä "Ken" tarkoittaa jargon-kielellä: http://ankara.bcc.bilkent.edu.tr/Online/Jargon30/JARGON_K/KEN.HTML

Jones Telecommunications & Multimedia Encyclopedia: Ken Thompson: http://www.digitalcentury.com/encyclo/thompson.html

Bell Labs news: Ritchie ja Thompson saavat "National Medal of Technology":n: http://www.bell-labs.com/news/1998/december/9/1.html

Bell Labs news: Thompson saa "Kanai Award":in: http://www.bell-labs.com/news/1999/march/25/1.html

"Unix letters": http://www.geocities.com/SiliconValley/Vista/4250/letters.html

Multicsin kotisivu: http://www.multicians.org/

UnixPowerin sivut: http://www.unixpower.org/

Open Groupin Unix-sivut: http://www.unix-systems.org/

"Unix is a four letter word...": http://www.caspur.it/guidautenti/unix/4ltrwrd/title.html

"A journey through Unix": http://www.cas.american.edu/~chau/unixdex.htm

"Saving Unix from /dev/null": http://minnie.cs.adfa.edu.au/Seminars/Saving_Unix/sslides/ss-sslides.html

Ronda Hauben: "History of Unix": http://minnie.cs.adfa.edu.au/TUHS/Mirror/Hauben/unix.html

The Unix Heritage Society: http://minnie.cs.adfa.edu.au/TUHS/

The PDP UNIX Preservation Society: http://minnie.cs.adfa.edu.au/PUPS/

The Virtual Museum of Computing: http://www.museums.reading.ac.uk/vmoc/


Päivitetty 29.03.2000, Liisa Paasiala