Unix

Historia

Unixin pääarkkitehteina toimivat Ken Thompson ja Dennis Ritchie, joista jälkimmäinen kehitti myös C-ohjelmointikielen. Kehitystyön aikana he olivat töissä AT&T-yhtiön tutkimuskeskuksen Bell Labsin Computing Sciences Research Centerissä. Vuodesta 1964 alkaen osaston henkilöt työskentelivät Multics-projektin parissa.
Unixin varhainen versio tunnettiin myös nimellä UNICS (lyhenne sanoista Un-multiplexed Information and Computing Service). Nimeä ehdotti Brian Kernighan 1970-luvun puolella sanaleikkinä Multicsista.
1960-luvulla MIT, AT&T:n Bell Labs ja General Electric (GE) kehittivät Multics-käyttöjärjestelmää GE-645-suurtietokoneelle, joka maksoi vuonna 1965 lähes yhtä paljon kuin Boeing 737. Multicsin parissa Bell Labsilla työskentelivät Rudd Canaday, Ken Thompson, Dennis Ritchie ja Malcolm Douglas McIlroy.
Multics-projektin tavoitteena oli laskentakapasiteetin saatavuus kuten sähkön tai puhelimen saatavuus. Järjestelmä oli myöhässä, ylittänyt budjetin ja ei täyttänyt odotettua toiminnallisuutta. Osasyyksi ongelmiin mainitaan virheelliset tuhansien sivujen määrittelyt ja GE-645:n hankala arkkitehtuuri. Kehitykseen vaikuttaneilla osapuolilla oli myös erilaisia tavoitteita: GE halusi "vahvistaa tuotelinjaa", MIT halusi "kehittää viimeisintä tekniikkaa" ja Bell Labs halusi hyvän ympäristön työtä varten. 
Käyttöjärjestelmä pääsi lopulta myyntiin asti, mutta sen suorituskyky oli huono. AT&T päätti lähteä projektista ja siirtää voimavaransa muualle. Pian projektin päättymisen jälkeen GE-645 vietiin pois. Bell Labsin ryhmä alkoi etsiä vaihtoehtoja yhteistyöhön soveltuvalle "aikajakavalle" osituskäyttöjärjestelmälle.
Thompson oli kirjoittanut Multicsille pelin nimeltä ”Space Travel”, muunsi sen Fortranille ja siirsi pelin GECOS-käyttöjärjestelmälle. Hän kuitenkin huomasi, että peli oli liian hidas ja sen ajaminen vei 75 dollarin arvosta tietokoneaikaa. Pelissä oli simulaatio aurinkokunnan merkittäville kappaleille ja pelaaja ohjasi avaruusalusta, jolla voi yrittää laskeutua planeetoille ja kuille.  
Thompson löysi akustiikkalaboratorion käyttämättömän DEC PDP-7 -koneen, jossa oli hyvä grafiikkanäyttö ja kirjoitti pelin uudelleen Ritchien kanssa assembly-kielellä sille. Peliä varten kehitettiin muun muassa liukulukuaritmetiikkaan, graafisten merkkien esitykseen ja debuggaamiseen toiminnot.
Peliä kehitettiin GE-635-tietokoneella ja käännettiin GECOS:illa, josta se siirrettiin paperinauhoilla PDP-7:lle. 
Kesällä 1969 Thompson, Ritchie ja Canaday suunnittelivat tiedostojärjestelmän perusteet tiedostojen hallintaan. Eräajoon suunniteltujen tietokoneiden ei yleensä tarvinnut säilöä tietoja pysyvästi, joka aiheutti haasteita. Elokuussa Thompson kehitti assemblerin (as), tiedostoeditorin ja ytimen. Thompson teki myös karkean komentotulkin (sh) ja yksinkertaisia komentoja (vastaavia kuten Unixin rm, cat ja cp -komennot). Tämän jälkeen järjestelmässä itsessään pystyi kääntämään ohjelmia.
Thompson suunnitteli ytimen yksinkertaiseksi, jossa ei ollut komentokieltä kuten Multicsissa vaan se käsiteltiin yhtenä käyttäjäsovelluksena.
Ytimessä ei ollut tiedostomuotoja vaan tiedostot olivat vain yksiulotteinen joukko tavuja. Järjestelmään syntyi varhain prosessit, joita oli yksi päätettä kohden. Uuden prosessin luomiseen käytettiin fork- ja exec-kutsuja, joka oli yksinkertaisempi toteuttaa kuin yhdistetty kutsu ja jota vastaava oli käytössä muun muassa Berkeley Time-Sharing System -järjestelmässä.
Vuonna 1969 Doug McIlroy oli tehnyt järjestelmän ensimmäisen korkean tason kielen, joka oli toteutus R. M. McCluren TMG:stä (ohjelmointikielen kääntäjän kirjoittamiseen tarkoitettu kieli, "kääntäjän kääntäjä"). Syyskuussa 1969 Bell Labsin tietokoneosastolla oli toimiva monen käyttäjän osituskäyttöjärjestelmä, johon osastolla ei vielä ollut massamuistia.
Toukokuussa 1970 tilattiin PDP-11-minitietokone 65 000 dollarin hintaan: perusteeksi hankinnalle kerrottiin työkalujen kehittäminen tekstin editointiin ja muokkaamiseen. Myös akustiikkalaboratorion Max Mathews lupasi alkurahaa tietokoneen hankintaan. 
Koska Unixissa ei tuolloin ollut moniohjelmointia (vain yksi prosessi käyttäjää kohden) sen siirtäminen PDP-7:ltä PDP-11:sta oli siirtokirjoitusta vastaavaa.
Ensimmäinen Unixin hankkinut asiakas oli Bell Labs Patent Department, joka käsitteli patenttihakemuksia. Myöhemmin käyttöjärjestelmästä välittyi tieto muille PDP-11-konetta käyttäville, jotka pyysivät sitä myös omaan käyttöönsä. Käyttöjärjestelmää välitettiin halukkaille postituskulujen ja tallennusmedian hinnalla.
Ensimmäinen Unix Programmer's Manual on päivätty 3. marraskuuta 1971. Kirjoittamisen aikaan järjestelmä oli jo siirretty ("kirjoitettu uudelleen") PDP-7:ltä PDP-11:lle, jolloin se oli vielä tehty assemblyllä.
Thompson aloitti järjestelmän siirtämisen Fortranille, mutta luopui siitä nopeasti. Tämän jälkeen Thompson kirjoitti B-ohjelmointikielen perustuen BCPL-kieleen (tai toisen teorian mukaan Thompsonin Bon-kieleen). Ritchie lisäsi B:hen tyyppijärjestelmän, ja antoi sille aluksi nimen NB ("New B") ja alkoi kirjoittaa kääntäjää. Kesällä 1972 Unix kirjoitettiin uudelleen NB:stä kehitetyllä C-kielellä.  Vuoden kuluessa C:tä käytettiin myös Honeywell 6000 -tietokoneilla ja pian sen jälkeen IBM 310 -sarjan koneilla. Käyttöjärjestelmien välisten erojen vaikutus ohjelmien siirtämiseen johti tuolloin radikaaliin ajatukseen siirtää myös itse käyttöjärjestelmä eri laitteistolle vähentäen eroja.
Unix-putkien kehitys johti useisiin toisiinsa liitettävien työkaluohjelmien kuten grep ja sed kehittämiseen, joka vaikutti koko käyttöjärjestelmän filosofiaan.
Ritchien ja Thompsonin kirjoitus käyttöjärjestelmästä julkaistiin Communications of the ACM -lehdessä heinäkuussa 1974. Paperin mukaan ensimmäinen versio Unixista oli PDP-7- ja PDP-9-tietokoneille, toinen versio PDP-11/20-tietokoneelle ja kolmas PDP-11/40- ja PDP-11/45-tietokoneille. Paperissa mainittiin sen olevan usean käyttäjän käyttöjärjestelmä, jossa on ominaisuuksia, joita on harvoin suuremmissakaan käyttöjärjestelmissä: muun muassa hierarkinen tiedostojärjestelmä ja kyky käynnistää asynkronisia prosesseja. Hierarkinen tiedostojärjestelmä mahdollisti tiedostojen sijoittamisen hakemistoihin. Paperissa mainittiin myös, että tehokas käyttöjärjestelmä ei tarvitse olla kallis laitteilta tai ihmisten työmäärältä: käyttöjärjestelmää voitiin suorittaa jopa alle 40 000 dollarin laitteistolla ja alle kaksi miestyövuotta käytettiin järjestelmäohjelmiston kehittämiseen. Paperin päivitetyssä versiossa mainittiin kolmannen version tukevan moniohjelmointia, lueteltiin lisää yhteensopivia PDP-11-versioita ja kuvattiin neljäs versio, jota voitiin käyttää Interdata 8/32 -tietokoneella.
AT&T oli tehnyt vuonna 1956 sopimuksen, joka esti sitä myymästä tuotteita, jotka eivät suoraan liittyneet puhelimiin tai telekommunikaatioon johtuen monopolisäädännöstä. Tästä johtuen käyttöjärjestelmää ei voitu myydä tuotteena ja AT&T päätyi julkaisemaan lähdekoodit kaikille sitä pyytäville nimellistä maksua vastaan. AT&T ei voinut myöskään tarjota tukea käyttöjärjestelmälle, mikä johti varhaisten käyttäjien perustamiin käyttäjäryhmiin kuten Usenix.
Unix oli ensimmäisiä käyttöjärjestelmiä, joissa käyttöliittymä oli erillinen itse käyttöjärjestelmästä. Vuonna 1975 Bell Labsille tullut Stephen Bourne kehitti ohjelmoitavan Bourne shell -komentotulkin korvaamaan Thompsonin yksinkertaisemman komentotulkin. Ensimmäinen laajalti käytetty vaihtoehtoinen komentotulkki oli C shell.
1970-luvun puolivälissä Thompson lähti hetkeksi Bell Labsilta ja opetti Kalifornian yliopiston Berkeleyn kampuksella (UCB). Berkeleyssä otettiin tuolloin käyttöön versio 6 Unix (V6), joka oli ensimmäinen laajasti Bell Labsin ulkopuolelle levinnyt. 
Berkeleyssä oli juuri saatu PDP-11, johon Thompson auttoi asentamaan v6 Unixin. AT&T:llä oli käytössä jatkuvasti kehittyviä versioita, joissa tärkeitäkin korjauksia, kun taas muualla oli käytettävä julkaisuversioita (v4, v5, v6..). Tästä sai alkunsa "50 muutosta", jonka AT&T ei halunnut leviävän tiukan "ei tukea" -säännön johdosta. 
AT&T:n versio 7 julkaistiin vuonna 1979 ja siihen sisältyi UCB:n tekemiä muutoksia. Berkeleyssä sai alkunsa tutkijoiden ja opiskelijoiden tekemät muutokset AT&T:n Unixiin, joka aluksi levisi nimellä "Berkeley Unix" ja myöhemmin täysi Unix-julkaisu nimeltä Berkeley Software Distribution (BSD).Bill Joyn ja muiden opiskelijoiden tekemät muutokset levisivät tutkijapiireissä moneen yliopistoon. UCB perusti Computer Systems Research Groupin DARPAn rahoituksella kehittämään Unixia. CSRG teki suuren osan TCP/IP:n kehitystyöstä. Australiassa opettava professori John Lions julkaisi vuonna 1977 sen ajan kuuluisan kirjan A Commentary on the Unix Operating System, joka sisälsi myös järjestelmän täydellisen lähdekoodin. Kirjaa käytettiin materiaalina käyttöjärjestelmiin liittyvillä kursseilla ympäri maailman. Vuonna 1979 AT&T kuitenkin puuttui kirjan levittämiseen.
Vuosina 1976–1977 käyttöjärjestelmän ydin siirrettiin VM/370 virtualisoidulle alustalle.
Vuoteen 1978 mennessä Unixista oli versio myös 32-bittiselle Interdata 8/32 -koneelle, joka erosi merkittävästi PDP-11:stä ja muistutti IBM System/360- ja IBM System/370 -koneita. Interdata 8/32:lle siirtämisen jälkeen seurasi versio DEC VAX 11/780:lle, josta tuli paljon suositumpi kuin Interadatasta.
Vuonna 1977 Unixia käytettiin yli 300 tietokoneessa. Vuoteen 1978 mennessä Unixia käytti yli 600 tietokonetta. 
1980-luvun alkupuolella ilmeistyivät ensimmäiset kirjat Unixista: Stephen Bournen The Unix System ja Brian Kernighanin ja Rob Piken The Unix Programming Environment.
Vuonna 1984 AT&T hajotettiin monopolioikeudenkäynnin seurauksena seitsemään erilliseen yhtiöön. AT&T menetti alueelliset operaattorit säilyttäen kaukopuheluiden verkon, mutta sai vastineeksi oikeuden osallistua tietokoneliiketoimintaan. Yhtiö perusti AT&T Computer Systems -yksikön, joka julkaisi kaupallisen Unix System III -version. AT&T julkaisi 1983 Unix System V -järjestelmän, jonka laajalti levinnyt versio System V Release 4 julkaistiin vuonna 1989. System V toimi AT&T 3B -sarjan tietokoneilla. AT&T:n UNIX System Group (USG) järjestettiin uudelleen 1989, jolloin perustettiin UNIX Software Operation (USO) ja UNIX System Laboratories (USL). USO ja USL yhdistyivät 1990 ja siitä tuli AT&T:n tytäryhtiö.
1980-luvun lopulla Bell Labs siirtyi kehittämään Plan 9 -käyttöjärjestelmää.
Vuonna 1992 AT&T haastoi BSD-haaran kehittäjät Berkeley Software Designin ja Kalifornian yliopiston oikeuteen väittäen BSD:n sisältäneen AT&T:n omistamaa koodia. Osana kiistan sovitusta osa ohjelmakoodista toteutettiin uudestaan, osa poistettiin ja osaan lisättiin maininta AT&T:n tekijänoikeudesta. 
Unix System Laboratories (USL) myytiin vuonna 1993 Novellille, joka myi UnixWare-liiketoiminnan Santa Cruz Operationille (SCO) vuonna 1995.

Unixin standardointi

Unixin ja C-ohjelmointikielen suosio ja niiden monet eri versiot ja kloonit aiheuttivat tarpeen standardoida Unix ja sen C-standardikirjasto. POSIX-standardeilla pyritään siihen, että ohjelmoijat voivat kehittää komentojonotiedostoja ja ohjelmia, jotka toimivat kaikissa POSIX-yhteensopivissa käyttöjärjestelmissä. 
1980-luvulla Unix-yhtiöiden yhteenliittymä X/Open muodostettiin julkaisemaan POSIXia laajempia X/Open Portability Guide (XPG) -määrittelyjä. AT&T julkaisi System V Interface Definition (SVID) -määrittelyn ja IEEE julkaisee ensimmäisen POSIX-standardin.
POSIX nimi tarkoitti aluksi IEEE-standadia IEEE Std 1003.1-1988, mutta laajeni myöhemmin käsittämään sen muita osia IEEE Std 1003.1-1988.n. POSIX on myös ISO-standardi ISO/IEC 9945. POSIX sisältää myös laajennuksia ISO C -standardiin. POSIX-standardi ratifioitiin vuonna 1988 ja laajennettiin vuonna 1990 kansainväliseksi ISO-standardiksi. Yhdysvaltalaisella NIST:llä oli myös FIPS Pub 151-1 -määrittely.
X/Open-konsortion aloittama työ eteni Common API Specification -määrittelystä, muuttui Spec 1170 -määrittelyksi ja lopulta Single UNIX Specification (SUS) -standardiksi. Standardi yhdistää neljä Unixiin liittyvää elementtiä: määrittely (kuten SVID), teknologia (kuten SVR4), tavaramerkki ja tuote (kuten UnixWare).
X/Open yhdistyi vuonna 1996 Open Software Foundationin kanssa The Open Groupiksi. Vuodesta 1999 lähtien IEEE:n POSIX- ja Open Groupin SUS-määrittelyjä on kehitetty yhteisessä työryhmässä nimeltä Austin Group.
ISO/IEC 23360-1:2006 -standardoitu Linux Standard Base pyrkii yhteensopivuuteen useiden Unix-standardien kanssa.

Historialliset versiot (AT&T)

UNIX Time-Sharing System versiot 1..7 kehitettiin 16-bittiselle PDP-11:lle ja 32-bittisille tietokoneille kuten Interdata 8/32 ja VAX. Nimeäminen on UNIX Programmer's Manualin mukainen (nth Edition).
VAX:lle kehitettyä 32-bittinen versiota kutsuttiin myös lyhyesti "32V".
Research Edition -nimeä käytetään PDP-7-, PDP-11- ja VAX-alustoille kehitetyistä versioista.
Unixista oli myös Programmer's Workbench -julkaisu (PWB/UNIX), jossa oli myös Bell Labsissa kehitetty varhainen versionhallintajärjestelmä Source Code Control System (SCCS). Julkaisussa oli myös Stuart Feldmanin kehittämä make.
Kaupallisesti julkaistut System III ja System V olivat perustana useiden muiden "valmistajien" kaupallisille Unixeille.
System III perustui versio 7:lle (System I ja System II eivät koskaan olleet olemassa). System IV ei nähnyt päivänvaloa AT&T:n ulkopuolella.

Lähdekoodit

Unix Heritage Society (ent. Unix Preservation Society) on koostanut alkuperäisen Unixin lähdekoodit versiohistorioineen julkiseen projektiin. Useilla Unixin käyttäjillä oli täydet Unixin lähdekoodit mutta ei lupaa jakaa niitä.
Caldera on julkaissut varhaiset versiot Seventh Edition ("V7", 1979) ja VAX-versioon ("32V") saakka vuonna 2002 BSD-lisenssillä.
Nokia-Alcatel-Lucent on sallinut Unix Research Edition -versioiden 8, 9 ja 10 lähdekoodien julkaisun. Julkaisu ei tarkoita avointa lähdekoodia.
Varhaisimmat versiot lähdekoodeista eivät olleet tallennettuna versionhallintajärjestelmässä kehityksen aikana.
Myöhemmät kehitysvaiheet on tallennettu SCCS-versionhallintajärjestelmään mutta silloinkaan kaikkia tiedostoja ei ole tallennettu.

Unix-sodat

Unix-sodat (engl. Unix wars) oli useiden tahojen välinen kilpailu Unix-yhteensopivista käyttöjärjestelmistä. Kiistat johtivat POSIX-standardin luomiseen.
Kiistojen alkuun sijoitetaan AT&T:n ja Sun Microsystemsin yhteistyö vuonna 1987, jonka seurauksena Sun ilmoitti että SunOS ei jatkossa perustuisi BSD-versioon vaan AT&T:n System V -versioon. Tämä johti Open Software Foundationin (OSF) perustamiseen useiden yritysten yhteistyönä. Vastineeksi AT&T ja Sun perustivat Unix Internationalin (UI). OSF ja UI yhdistyivät myöhemmin keskenään ja X/Openin kanssa muodostaen The Open Groupin vuonna 1996.
Unix System Laboratoriesin ostanut Novell siirsi Unix-tavaramerkin X/Openille ennen sen yhdistymistä Open Groupiin.

Kritiikki

Unixia on kritisoitu myös eräistä suunitteluvirheistä signaalien käsittelyssä sekä käyttäjäoikeusmallissa. Signaalien käsittelyyn on kehitetty ratkaisuja BSD:ssä, System V:ssä ja Linuxissa.