A UNIX története

A HupWiki-ből...

Tartalomjegyzék

A Unix rövid története

A sikertörténet paradox módon egy kudarccal kezdődik. Az MIT, a Bell Laboratórium és a General Electric a hatvanas évek végén belekezdett egy nagyszabású kutatási programba, amelynek során egy többfelhasználós, többfeladatos operációs rendszert szerettek volna írni. A rendszer a keresztségben a MULTICS nevet kapta (MULTiplexed Information and Computing Service), és meglehetősen komoly célok megvalósítását tűzték ki elé. A fejlesztés PL/I nyelven folyt, annak ellenére, hogy abban az időben még egyetlen működőképes PL/I fordító sem létezett. Az ehhez hasonló nehézségek végül a program feladására kényszerítették a kutatókat.

Bár elméleti megoldásait még ma is egyetemen tanítják, a MULTICS projekt a gyakorlatban nem érte el a várt sikert, ezért a Bell Laboratórium kilépett belőle, ami egyebek mellett azzal járt, hogy a program egyik résztvevője kénytelen volt valami egyéb érdekes elfoglaltságot találni magának. Ken Thompsonról van szó, aki ekkor saját szakállára megírta a MULTICS egyfelhasználós változatát egy használaton kívül lévő PDP-7 számítógépen. Az új operációs rendszer kiherélt változata volt a MULTICSnak, erre utal szarkasztikus elnevezése is, amelyet Brian Kernighan ragasztott rá: eunuch multics, röviden UNICS (Uniplexed Information and Computing Service). Bármennyire földszintes is volt Ken Thompson operációs rendszere, a MULTICS-al szemben volt egy behozhatatlan előnye: működött. 1969-et írtak ekkor.

Ez a nem elhanyagolható tulajdonság késztette arra Dennis M. Ritchiet hogy egész osztályával együtt csatlakozzon a UNIX (közben megváltoztatták a helyesírást) fejlesztéséhez. Az így megerősített csapat nekilátott, hogy elkészítse az operációs rendszer PDP-11 gépen futó változatát. Az ős-unix assembly nyelven készült, így újra kellett írni az egészet, valahányszor egy új, más típusú gépre szerették volna adoptálni. Mivel operációs rendszert assembly nyelven írni még Ken Thompson számára sem gyerekjáték, ezért kitalált egy B-nek nevezett nyelvet, azzal a szándékkal, hogy az operációs rendszert ebben írja meg. (A B nyelv a BPCL-ből származik, ami pedig a CPL-ből. A három programozási nyelvben az a közös, hogy igazából soha egyikük sem működött.)

Itt lépett közbe Dennis Ritchie, aki újratervezte a B nyelvet, bevezette a struktúrákat, és egy tuti fordítót is írt hozzá a PDP-11 gépre. Ken Thompsonnal közösen újraírták a Unixot ezen tökéletesített nyelven. (A nyelvnek a C nevet adták, és azóta is sok százezer programozó beszéli ezt a nyelvet, szerte a világon.)

A Unixról 1974-ben jelent meg az első részletes publikáció. Itt érdemes egy pillanatra megállni és megvizsgálni azokat a körülményeket, amelyek végül nem várt módon formálták a történelmet. Az egyik ilyen körülmény az volt, hogy a Bell Laboratórium anyavállalata, az AT&T akkoriban ki volt tiltva a számítógépek piacáról, így a Unixot nem árulhatta pénzért. Semmi sem indokolta, hogy az operációs rendszert -forráskódjával együtt- ne adják oda bármelyik egyetemnek. Így is tettek. A másik körülmény, hogy a Unix PDP-11-en futott. Az egyetemeken akkoriban szinte nem is volt más gép, mint PDP-11. És ezen a ponton a DEC cég is alaposan besegített a Unix világsikerébe: a PDP-11 operációs rendszere történetesen olyan borzalmas volt, hogy a felhasználók éjjelente Digitális szörnyetegekkel álmodtak. Ezek után könnyű kitalálni, hogy mi történt: egyetemek százain kezdték használni a Unixot, a forráskód birtokában pedig megindult a véget nem érő buherálás.

Közben a Bell Laboratórium munkatársai sem ültek karbatett kézzel: a PDP-11 után következõ célpontjuk egy Interdata 8/32 számítógép Unixosítása volt. Mivel az operációs rendszer C-ben volt írva, ez mindössze annyit jelentett, hogy az Interdata gépen egy C fordítóval lefordítják a PDP-11-en kifejlesztett forráskódot. Ez egyszerű feladat, feltéve, hogy az Interdata gépen van C fordító. Nem volt, így előbb írni kellett egyet. Mivel minden, más gépre való adoptálás a C fordító adoptálásával kezdõdik, ezért Steve Jhonson írt egy "portable C compiler"-t, ami viszonylag kevés munkával bármilyen gépre átírható. (Ezután még sokáig ez képezte minden új C fordító alapját.)

Az Interdata Unixosítása során két komoly nehézség merült fel. Az első az, hogy a PDP-11 Unixban a fejlesztők néhány dolgot természetesnek vettek (például azt, hogy az egész számok és mutatók 16 bitesek, a központi egységnek pedig három regisztere van.) Ezek közül az Interdata gépen egyik sem teljesült, így elég sok munkába került, mire a forráskódot e feltételek kezelésére is felkészítették.

A másik nehézség a földrajzi távolságból adódott: a PDP-11 a negyedik emeleten volt, az Interdata pedig a földszinten. A munka úgy zajlott, hogy a negyediken lefordították a készülő operációs rendszer kódját, majd a mágnesszalagokkal lesétáltak a földszintre hogy megnézzék, vajon működik-e? Valószínűleg ekkor kezdtek el komolyan foglalkozni a gondolattal, hogy a számítógépeket hálózatba kellene kötni.

A következő mérföldkövet az amerikai kormány rakta le azzal, hogy részekre bontotta az AT&T vállalatot, az utódok számára pedig megnyitotta az utat a számítástechnikai ipar felé. Hamarosan megjelent az első kereskedelmi Unix változat, System III néven. Nem igazán volt sikeres, így egy évvel később megjelent a System V nevű javított változat. (Hogy hová lett a IV-es változat, az egyike a számítástechnika máig megoldatlan rejtélyeinek.) A System V több kiadást is megért, ezek Release 2, 3 és 4 néven ismertek.

A számtalan Unix-buheráló egyetem közül kiemelkedik a University of California at Berkeley. Ők számos ponton javítottak az AT&T-től valaha ingyen kapott Unixon, gyorsabb fájlrendszert írtak, elkészítették a VAX-on futó változatot, beépítették a hálózatkezelést (ami TCP/IP néven legalább olyan elterjedt a hálózati protokollok között, mint a C a programozási nyelvek terén), valamit számos segédprogramot (csh, vi, Lisp fordító, Pascal fordító, stb.) Az egyetem kereskedelmi változatú szoftvercsomaggá formálta az általuk fejlesztett Unix változatot és BSD (Berkeley Software Distribution) néven terjeszteni kezdte. (Ők mostanában a 4.3-as verziónál tartanak.)

Amint látható, a nyolcvanas évek végére a Unix-világot két különböző, egymástól sok dologban eltérő Unix uralta. Ez elsősorban azzal a szomorú következménnyel járt, hogy a System V Unix alatt írt C programra a BSD-s rendszerek fordítói fityiszt mutatnak, és fordítva. A C nyelv fordításvezérlő direktíváival (#ifdef , #ifndef, #endif) ugyan úrrá lehet lenni a helyezeten, de ez egyúttal azt jelenti, hogy a C programot minden géphez át kell egy kicsit alakítani, "portolni" kell.

Nagyjából minden nagyobb számítógép gyártó a két elterjedt rendszer (System V, BSD) valamelyikén alapulva készítette el saját Unix változatát. Mivel az inkompatibilitás senkinek nem tesz jót, ezért az AT&T kibocsátott egy szabvány ajánlást, az SVID-t (System V Interface Definition), amiben azt írja le, hogy szerintük mit kell tartalmaznia az egységes Unixnak, ami lehetõleg a System V legyen. A Berkeley Egyetem, és a BSD-nek elkötelezett Unix gyártók természetesen a figyelmen kívül hagyták az SVID-t szabványt, s ezzel kezdetét vette a System V kontra BSD "Unix háború".

Az első, nem csak kibocsátója által elfogadott szabványt az IEEE hozta létre, Portable Operaring System (rövidítve: POS) néven. Hogy Unixosabban hangozzék, a rövidítéshez hozzábiggyesztették az IX betűket: így lett a dologból POSIX. E szabvány azt írja le, hogy egy "hordozható" operációs rendszernek hogyan is kell kinéznie. Minden nagy gyártó elismeri a POSIX jelentőségét, operációs rendszereiben támogatja is azt. Mindazonáltal ez nem akadályozza meg őket abban, hogy olyan kiegészítéseket, nem szabványos interfészeket és egyéb szolgáltatásokat építsenek be a termékükbe, amitől a különböző rendszerek továbbra is inkompatibilisek lesznek. A riválisok két szervezetbe tömörültek, a szögesdrótok egyik oldalán a DEC által vezetett Open Systems Foundationt (OSF) találjuk, velük szemben pedig az AT&T alapította Unix International (UI) szövetséget.

Vizsgáljuk meg egy kicsit közelebbről e nagy háborúskodás okát! Az ősidőkben, mikor néhány számítástechnikai mamutcég uralta a piacot, a számítógépek "önmagukkal" voltak kompatibilisek, azaz ha elromlott egy alkatrész, vagy a rendszert bővíteni akarták, a berendezéseket kizárólag az eredeti gyártótól lehetett beszerezni. A mamutok alaposan vissza is éltek azzal, hogy a vásárló még a portörlő rongyot is kénytelen tőlük vásárolni, egy-egy alkatrészért szemrebbenés nélkül elkérték a piaci ár háromszorosát. (Néhány cég ma is folytatja ezt a gyakorlatot.)

A védekezést az jelentené, ha a különböző gyártók számítógépei hajlandók lennének együttműködni, azaz eltérõ típusú gépekből is lehetne rendszert építeni. Ez egyrészt nagyobb szabadságot adna a felhasználóknak a vásárlásnál, másrészt esélyt biztosítana a gyártóknak, hogy berendezéseiket minél szélesebb körben vásárolják. Egy ilyen nyitott rendszerbe utólag bármelyik cég szoftverét vagy számítógépét be lehet illeszteni: ezt az álmot hívják "nyílt rendszereknek" (Open Systems).

Nyilvánvaló, hogy a nyílt rendszerek kulcsfontosságú kérdése a minden gyártó által elfogadott (és be is tartott) szabvány. Ha ezt a szabványt egy gyártó bocsátaná ki, akkor ezáltal elõnyhöz jutna a piacon. A vallásháború lényegében azért tört ki, hogy eldöntsék, kinek a rendszerét fogadják el szabványként. Mivel egyik félnek sem sikerült felül kerekednie, a kilencvenes évek elején létrehoztak egy gyártófüggetlen szervezetet a nyílt rendszerek szabványainak elkészítésére és a "szabványnak megfelel" minősítések kiadására. Ez a szervezet az X/Open, az általuk készített operációs rendszer szabvány neve pedig Core OS API, más néven Common API. A szabványt a benne leírt specifikációk alapján hívják Spec 1170-nek is, sőt egy további neve is van: UNIX 95. (A Microsoft még nem indított plágium pert :-)

Ha egy operációs rendszer átmegy az X/Open minősítő tesztjein, megkapja a UNIX 95 minősítést. A "levizsgáztatott" operációs rendszerre írt programok forráskódja hordozható, azaz buherálás nélkül le lehet fordítani egy másik gyártó ugyancsak UNIX 95 kompatibilis operációs rendszerén.

Nézzük, mit lát a UNIX 95-ből az egyszerű felhasználó! Hmmm....egy ugyanolyan mezítábas parancssort, mint amilyet húsz évvel ezelőtt. A szabványban ugyanis nem szerepel a grafikus felhasználói felület, amelynek egységesítéséért ugyancsak ádáz küzdelem folyik. Készült ugyan egy CDE (Common Desktop Environment) nevű szabvány, amit XCDE néven az X/Open is átvett, de a gyártók nem sietnek saját grafikus felületüket e szabványhoz igazítani. Ennek persze nem az az oka, hogy az igazi UNIX buherátorok csak a parancssorban érzik igazán jól magukat, hanem az, hogy a UNIX alatt futó alkalmazások (például a nagy adatbázis-kezelő rendszerek) karakteres alapon működnek. Így aztán jóval kevesebb gyártót érint a grafikus felhasználói felület ügye.

Pedig nekik is lenne mitől félniük, mert a PC világban grafikus szabványt teremtő Microsoft a kertek alatt már javában nyomul a nyílt rendszerek felé. Charles Simonyi (hopp, megint egy magyar!), a Microsoft második embere már a kilencvenes évek elején azt nyilatkozta a Számítástechnika című újság riporterének, hogy: "Ha valaki azt mondja, hogy UNIX, úgy gondolom, nem őrűlt. Lehet, hogy még nem hallott az NT-ről." A redmondi programozók szép csendben összehoztak egy kliens-szerver alapú, mikrokerneles, több féle processzoron is futó operációs rendszert, a Windows New Technology-t. Az NT legelső változatának grafikus felülete ránézésre ugyanolyan volt, mint a jó öreg Windows 3.1-é; mégpedig azért, hogy a felhasználók számára ismerős legyen.

A felhasználó pedig ránézett a Windows NT-re és így szólt magában: "Jééé, ez ugyanúgy néz ki, mint a Windows 3.1! Akkor biztosan ez is ugyanolyan gagyi!" Hosszú időnek kellett eltelnie, mire a felhasználók feleszméltek, hogy kivételesen nem egy jól reklámozott videojátékkal, hanem egy véresen komoly operációs rendszerrel állanak szemben. Mi áll az NT hátterében? Mikor Bill Gates elhatározta, hogy célba veszi a kiszolgáló gépek piacát, azzal kezdte a munkát, hogy keresett egy embert, aki tud operációs rendszert írni. (Ez az, amit az MS-DOS megalkotásakor sajnálatos módon elmulasztott.) Az illető pedig nem más, mint David N. Cutler, az RSX11 és a VMS operációs rendszer apukája - a Windows NT tehát több szempontból is a VMS utódjának tekinthető. (Egy érdekes szójáték is alátámasztja ezt: ha a VMS betűi helyett sorban az ábécé következő betűit vesszük, a WNT szót kapjuk eredményül.)

Mit hoz a jövő? Nem kétséges, hogy újabb háborút. A UNIX világnak pedig alighanem alaposan össze kell szednie magát, ha nem akar érzékeny veszteségeket szenvedni a Microsoft elleni harcban...


Kapcsolódó anyag

Forrás

  • Mörk Péter 1996

Külső hivatkozások