Unix

**Unix** edo **UNIX** 1960ko eta 1970eko hamarkadetan AT&Tko Bell laborategien langile talde batek garatutako ordenagailuetako sistema eragilea da. Garatzaileen artean Ken Thompson, Dennis Ritchie eta Douglas McIlroy zeuden. Unix-en aldaera akademiko eta komertzial ugari izan zituen, hala nola Kaliforniako Unibertsitatea, Berkeley (BSD), Microsoft (Xenix), IBM (AIX) eta Sun Microsystems (Solaris) eta beste hainbat. Hauek guztiak Unix moduko sistemak direla esaten da. Baita software librearen ildoa indartzera etorri diren GNU/Linux eta FreeBSD sistemak ere.

## Ikuspegi orokorra
thumb|Unix 7 bertsioa, Unix sistema moderno guztien arbasoa, Research Unix

Unix, hasiera batean, bertan eta beste sistema batzuetan exekutatu ahal izateko, softwarea garatzen zuten programatzaileentzat plataforma egokia izan nahi zuen, ez, ordea, programatzen ez zutenentzat. Sistema handitzen joan zen sistema eragilea ingurune akademikoetan zabaltzen hasi zen heinean, eta erabiltzaileek beren tresnak gehitzen zizkioten sistemari, eta lankideekin partekatzen zituzten.

Hasieran, Unix ez zegoen diseinatuta eramangarria izateko edo multiataza. Geroago, Unixek, pixkanaka, eramangarritasuna, multiataza eta multierabiltzaile gaitasunak lortu zituen denbora partekatzeko konfigurazio batean. Unix sistemek hainbat kontzeptu dituzte ezaugarri: datuak biltegiratzeko testu laua erabiltzea; fitxategi sistema hierarkikoa; gailu eta prozesuen arteko komunikazio (IPC) mota jakin batzuk fitxategi gisa tratatzea, eta software-tresna ugari erabiltzea; hau da, tutuak erabiltzen dituen komando-lerroko interprete baten bidez lotu daitezkeen programa txikiak, denak funtzionalitate berekoak diren programa monolitiko bakar bat erabili beharrean. Kontzeptu horiei, Unix filosofia deitzen zaie. Brian Kernighanek eta Rob Pikek honela laburbiltzen dute *Unix programazio-ingurunea* lanean: «Sistema baten boterea, programetatik baino gehiago, programen arteko harremanetatik dator».

1980ko hamarkadaren hasieran, erabiltzaileak Unix sistema eragile unibertsal potentzial gisa ikusten hasi ziren, tamaina guztietako ordenagailuetarako egokia. Unix ingurunea eta bezero-zerbitzari programaren eredua funtsezko elementuak ziren Interneten garapenean eta konputazioa birmoldaketa sareetan zentratuta banakako ordenagailuetan zentratuta egon beharrean.

Bai Unix, bai C programazio-lengoaia, AT&T-k garatu zituen, eta gobernuaren eta erakunde akademikoen artean banatu ziren. Horren ondorioz, biak, beste edozein sistema eragilerekin alderatuta, makina-familia ugaritara eraman zituzten.

Unix sistema eragilea liburutegi eta utilitate askok osatzen dute kontrol programa nagusiarekin batera, kernel-a. Kernelak (nukleoa) programak abiarazteko eta gelditzeko zerbitzuak ematen ditu; fitxategi-sistema eta programa gehienek partekatzen dituzten *maila baxuko* beste zeregin komun batzuk maneiatzen ditu, eta sarbidea programatzen du gatazkak saihesteko programak baliabide edo gailu berera aldi berean sartzen saiatzen direnean. Sarbide horretan bitartekari izateko, nukleoak eskubide bereziak ditu nukleo-espazioaren eta erabiltzaile-espazioaren arteko bereizketan islatuta, eta azken hori lehentasunezko eremua da aplikazio-programa gehienek funtzionatzen duten eremuan.

## Historia 
[eskuinera|thumb|250px|[Ken Thompson eta Dennis Ritchie.]]

Sistema eragile honen arrakasta guztiz ezustekoa izan zen informatikaren munduan (informatikaren historian zehar garrantzitsuenen artean, alegia), batez ere bere lehen inplementazioaren ostean. 1960ko hamarkadan MIT (Massachusetts institutu teknologian) MULTICS (**Mult**iplexed **I**nformation and **C**omputing **S**ystem) sistema garatzen hasi ziren.

Ken Thomson eta Dennis Ritchie, MULTICSen moteltasuna ikusirik, proiektua berridatzi zuten mihiztadura lengoaian DEC PDP-7 ordenagailurako. Bi programatzaileak, beste proiektu bat burutu zuten fitxategi sistema multiataza bihurtzeko. Jadanik garatuta zegoenari, komando interpretatzailea (*shell* ingelesez) eta programa multzo bat gehitu zioten, eta horrela **UNICS** (**Un**iplexed **I**nformation and **C**omputing **S**ystem) sistema sortu zuten. Izena sistema bakarrik bi erabiltzaileentzako garatuta izanagatik dator (Andre Tanenbaumen ustez, bakarrik bat http://www.cs.vu.nl/~ast/brown/).

Ordura arte proiektua ez zuen inolako finantzaketarik, baina proiektua PDP-7 makina handiago batera egokitu zutenean, Bell laborategiak behar zuen PDP-11/20 makinara alegia, testu prozesatzailea gehitu zioten, AT&T enpresaren helburua lortuz (testu prozesatzailea eta *runoff* testua formateatzeko tresnak garatzenean makina horrentzako). Une horretatik aurrera, enpresaren laguntza jaso zuen, eta *runoff* programa hedatu zuten *troff* sortuz. 1971ko azaroaren 3an argitaratu zen lehen Unix eskuliburua programatzaileentzat.

1973 urtean, UNIX sistema berridatzi zen C programazio lengoaian, eta aldaketa honek sistema osoa beste arkitekturetara migratzea erraztu zuen, aldaketa txikiak ez baitziren egin behar horretarako. Lengoai berriak kodea laburtu zuen eta garapen denbora asko murriztu, makina lengoaiaz eta mihiztadura lengoaiaz egindakoarekin aldratuta.

AT&T enpresak hainbat enpresa eta unibertsitateren eskura jarri zuen sistema, lizentzien bidez. Lizentzia hauetako bat, Kaliforniako unibertsitateko konputazio departamentura egokitu zitzaion, eta bere sistema propioa garatu zuten: BSD (**B**erkley **S**oftware **D**istribution), geroago, AT&Tko UNIX sistemaren aurkari zuzenaizango zena.

1975 urtean, AT&Tk dibisio berria sortu zuen: *Unix System Laboratories*, sistema berriaren ustiapen komertziala hasteko, eta urte beran 4., 5. eta 6. bertsioak kaleratu ziren. Azken bertsio berri horretan, UNIX sistemen ezaugarri garrantzitsuenetako bat agertu zen: *pipe* edo tutuak. Tresna horren bitartez sistemaren modularizazioari bultzada handia eman zitzaion eta software berriaren garapena arindu. 1978 urtean 600 makina inguru erabiltzen zuten UNIX sistema eragile gisa.

1979 urtean argitaratu zen UNIX sistemaren 7. bertsioa, distribuzio handiko azken UNIX sistema, alegia. Hemendik aurrera, 8. 9. eta 10. bertsiak garatu ziren 80ko hamarkadan, baina bere zabalkuntza bakarrik zenbait unibertsitatetara murriztu zen, hala eta guztiz ere, sistema berrietan egindako ikerkuntza zabaltzen jarraitu zuten.

Sistema berri hauetako ikerkuntzarekin, Plan 9 sistema garatu zuten, sistema banatu berria, UNIX sistemaren ondorengoa izateko sortua. Hala eta guztiz ere, sistema berri honek bakarrik konputazio eta sistema eragileen arloari buruzko ikerkuntzetarako erabili zen.

[eskuinera|thumb|250px|[80.hamarkadan Unix sistema MITk garatutako X Window System erabiltzen.]]

Honez gero, 1982 urtean kaleratuko zen sistema komertzial berria garatzen hasi zen AT&T (azken bertsio komertziala UNIX 7 zen), eta *System III* eman zion. Baina aldi berean, zenbait enpresak (Western Digitall adibidez) UNIX 7 bertsioa saltzen zuten oraindik. Honek, nahaste handia sortzen zuen, eta hau guztia gutxi balitz, AT&T berak (Bell laboraregiak) *System V* sistema sortu zuen Berkleyko unibertsitateak garaturako software atalak zituena (*vi* edo *ncurses* esaterako), eta DEC konpainiak garatutako VAX makinaren bateragarri zena.

1993 urtean Novell-ek *Unix System Laboratories* erosi zuen. Erosketa hau, momentu larrian eman zen, laborategiak epaiketa bat baitzuen Kaliforniako Unibertsitatearekin BSD sistema zela-eta. AT&T-ko laborategiak System V-ren kodea kopiatzeagaitik salatu zuen Berkeley, baina azkenean frogatu zen, ez bakarrik salaketa faltsua zenik, baizik ere System V-ko garatzaileek BSDko atal handiak kopiatu zituztela. Gauzak horrela, Novellek erosi zuen jabeza intelektuala, oso murriztuta zen.
 
1991 urtean Linus Torvalds ikasle finlandiarra, Unixeko funtzio asko betetzen zituen nukleoa garatu zuen eta lizentzia askearekin argitaratu. Gertakari honetatik abiatuta, zenbait urteren buruan eta GNU tresnekin bat eginez, GNU/Linux sortu zen, zenbait urteren buruan beste UNIX sistema komertzialekin lehiatzeko moduko sistema.

1995 urtean Novellek SCO (*Santa Cruz Operations*) enpresari saldu zizkion bere Unix ustiatzeko eskubideak, enpresa honek Unix System V sistemaren ondorengoak saltzen jarraitzen du UnixWare izenpean (Aldi batez, OpenUnix ere deitu egin zen).

## Unix moduko sistemak 
Gaur egun *Unix-Like* sistema anitz aurki daitezke, denboran zehar garapen independiente izan dutenak, baina gero eta gehiago software librean oinarritu diren arren. Sistema hauen ezberdintasun garrantsitzuena eskubiden intelektualetako arloan dago, ezberdintasun teknikoetan baino.

* AT&T sistemak: Oinarrizko Unix sistema da, beste sistemen gurasotzat hartzen dena. Unix *System III* eta *UniU* dira ezagunenak.

* BSD sistemak: AT&T eta Kaliforniako Unibertsitatearen arteko lizentziatik jaio zen sistema da. TCP/IP protokoloa barneratzen lehena izan zen eta arrakasta handia izan zuen horregatik. FreeBSD bere eratorri librea da.

* AIX sistemak: AT&T eta IBM arteko lizentziatik jaio zen sistema.

* Xenix sistemak: Microsoftek AT&Tri erositako eskubidetik jaiotako sistema. Geroago, SCOk erosi zizkion Microsofti eskubide horiek.

* GNU/Linux sistemak: 1983 urtean Richard Stallmanek GNU proiektua hasi zuen, Unix-like sistema eragile librea eraikitzeko proiektua hasi zuen. Proiektu honen zenbait atal (hala nola gcc, emacs...) beste UNIX sistemen oinarria izan da. 1991 urtean Linus Torvaldsek Linux nukleo librea garatu zuen. Bi sistemak elkartuz, GNU/Linux sistema berri oso eta erabilgarria lortu egin zen. Kontuan hartu behar da, GNU/Linux ez dela UNIX sistemaren bilakaera bat, klon berri bat baizik.

## POSIX eta Unix inguruko estandarrak 
1980ko hamarkadaren amaieran, sistema eragile irekien estandarizazio-ahalegin bati esker oinarri komuna eman zitzaien sistema eragile guztiei: Horrela sortu zen POSIX, IEEEk bultzatuta. Lehen POSIX estandarra 1988an argitaratu zen. 1990eko hamarkadaren hasieran, industria-partzuergo batek aparteko baina antzeko zen ahalegina egin zuen, Common Open Software Environment (COSE) izenarekin, geroago *The Open Group* delakoaren administraziopean *Single UNIX Specification* (SUS) ozenarekin ezagutuko zena. Bi saiakerak bilduta 2008an *Open Group Base Specification* izeneko espezifikazioa argitaratu zen.

Exekutagarri bitarren eta objektuen UNIXen arteko bateragarritasuna hainbat CPUtan ziurtatzearren 1999an ELF formatua (*Executable and Linkable Format*) adostu zuten hainbat enpresak eta erakundek.

Fitxategi-sistemen hierarkia estandarizatzeko ere *Filesystem Hierarchy Standard* hitzarmena sortu zen.

## Osagaiak 
alt=Direktorioa eta azpidirektorioak Unixen|thumb|Unix fitxategi-sistemaren egitura
Unix sistema hasieran elkarrekin paketatu ziren hainbat osagaik dute oinarri. Sistema eragilearen nukleoaz gain, garapen-ingurunea, liburutegiak, dokumentazaioa eta osagai horietarako guztietako iturburu-kodea barne osatzen dute. Unix software-sistema autonomo ondo dokumentatua zen hasieratik eta horregatik oso eragin handia izan du irakaskuntzan.

Osagai horiek guztiak barneratuta eduki arren sistema ez zen oso handia: Unix V7-ren jatorrizko banaketak, konpilatutako bitar guztien kopiak, iturburu-kode osoa eta dokumentazioa barneratuta, 10 MB baino gutxiago hartzen zituen, eta garaiko zinta magnetiko bakar batean sartzen zen. Inprimatutako dokumentazioa bi liburukitan jasota zegoen.

Unix-eko osagaiek fitxategi-sisteman dituzten izenak eta direktoriotan antolatutako kokapenak nabarmen aldatu dira sistemaren historiaren bidez. Hala ere, V7 inplementazioa erreferentziatzat hartzen da. Ondokoak dira osagai nabarmenenak.

* *Nukleoa* – iturburu-kodea */usr/sys* direktorioan, eta azpidirektorioetan hainbat osagai daude:
** *conf* – konfigurazioa eta makinaren mende dauden atalak. Abiatzearen kodea ere bertan da.
** *dev* – dispositiboen kontrolatzaileak (*driver*-ak)
** *sys* – sistema eragilearen nukleoa, memoriaren kudeaketa, prozesuen planifikazioa, sistema-deiak...
** *h* – goiburuko fitxategiak, oinarrizko datu-egiturak eta funtsezko konstanteak
* *Garapenerako ingurunea* – bertsio zarretan zegoen ingurune osoa sistema osoa berreraikitzeko elementuekin:
** *cc* – C konpiladorea
** *as* – mihiztatzailea, mihiztadura-lengoaiaz idatzitako oinarrizko moduluak konpilatzeko
** *ld* – estekatzailea, objektu-fitxategiak konbinatzeko
** *lib* – liburutegiak ( */lib* edota */usr/lib* direktoriotan).
** *make* – konpilazioa- eta estekatze-prozesuak automatizatzeko komando-interpretatzailea
** *include* – goiburuko fitxategiak eta hainbat konstateren definizioa.
* *Komandoak* – Erabiltzailearen komando arruntak eta administraziorako erabiltzen direnak.
** *sh* – *shell* komando-interpretatzailea. Leiho-sistemak baino lehenago sortua eta eraginkorrago lan errepikakorretarako.
** *oinarrizko komandoak (*utilities*)* – *cp*, *ls*, *grep*, *find* eta beste asko. Haiekin batera:
*** *sistemaren komandoak* – administrazio lanerako: *mkfs*, *fsck*, *passwd*, *kill*, etab.
** *dokumentuak formateatzeko komandoak:* garai batean erabiliak ofimatikako programak sortu baino lehen: *nroff*, *troff*, *tbl*, *eqn*, *refer*, eta *pic*. Geroago *TeX* eta *Ghostscript*.
** *grafikoak* – *plot* azpisistema hasieran eta X11 geroago.
** *komunikazioa* – barne-komunikaziorako elementuak hasieran, *mail* eta *write* geroago. Unix V7 sisteman UUCP barneratu zuten, eta *BSD*ren *release 4.1c* bertsioan TCP/IP protokoloaren oinarria.
* *Dokumentazioa* – Unix aitzindaria izan zen dokumentazioa online kontsultagarri jartzen:
** *man* – eskuliburuak oinarrizko informazioa, man komandoaren bidez kontsultatzen dena.
** *doc* – dokumentazio sofistikatuagoa azpisistema konplexuetarako.

## Eragina 
Unix sistemak eragin nabarmena izan zuen beste sistema eragile batzuetan. Interaktibotasuna zela-eta lortu zuen ospea, baita tarifa nominalari eskainiz hezkuntzara hurbiltzeko ahaleginagatik, hardware merkean integratzeko aukerarengatik eta makina ezberdinetara egokitzea eta garraiatzea errazteagatik. Horretan C lengoaiak funtsezko elementua izan zen.

Unixek fitxategi-sistema guztiz sinplifikatua zuen, mota guztietako fitxategiak byte segida gisa tratatuz. Horrela, erregistroen kudeaketa erabiltzailearen mailako liburutegietara pasa zen sistemaren tamaina txikiagotuz. Gainera, dispositiboak eta dagozkien *driverr*ak (inprimagailuak, terminalak edo disko-unitateak) integratu zituen fitxategi-sistema hierarkikoan, programei interfaze uniforme bat eskainiz eta programen malgutasuna bultzatuz. Era berean, fitxategi-sistemari dagokionean, Multicsen sortutako azpidirektorio-sistema errekurtsiboa ezagutarazten lagundu zuen. Garaiko beste sistema eragileetan direktorioak aparte zeuden eta kudeaketa berezitua behar zuten sistemaren aldetik.

Komando-interpretatzailea erabiltzaile arruntei eskaintzea, komandoak aparteko programa gisa antolatuta Multicsetik zetorren beste ezaugarri aipagarria ere bada. Lineako komando interaktiboak eta komando-fitxategiak (script-ak) idazteko lengoaia bera erabiltzeak sinplifikazioa ekarri zuen, baita komando-fitxategiak beste programen ezaugarriak edukitzea ere. Adierazpen erregularren erabilera ere bultzatu zuen.

Unixen lehen garatzaileak garrantzitsuak izan ziren modularitatea eta berrerabilgarritasuna software-ingeniaritzaren oinarrietara eramaten, "software-tresnak" bultzatzeko mugimendua sortuz.

TCP/IP sareko protokoloak bizkor ezarri ziren, Unix bitartez, konputagailu merke samarretan, eta hori oso mesedegarria izan zen Interneteko erabilera mundu osora zabaltzeko ahaleginean.

Unixen lineako dokumentazio zabalaren politikak eta sistemaren iturburu-kodera urte luzez eskuragarri egoteak programatzaileen aukerak eta ezagutzak areagotu zituen, eta 1983an abiatu zen software librearen mugimendua bultzatzen lagundu zuen.

## Ikus, gainera 
* BSD
* GNU/Linux
* Mac OS X

## Kanpo estekak 
*  Unix sistemaren portala
*  Open Group elkartearen webgunea
*  UNIX Sistema eragilearen sorkuntza
*  UNIX sistemaren garapena Ian F. Darwin eta Geoffrey Collyeren eskutik.
*  UNIXen historia UNIX-like sistemen historia zuhaitz moduan erakutsita.