A Berkeley Unix 20 éve - I. rész

Eredeti angol verzió:
Marshall Kirk McKusick
Twenty Years of Berkeley Unix

Magyar fordítás:
Micskó Gábor

Utoljára frissítve: 2003. július 28. hétfő 09:35:36

Az AT&T tulajdonútól a szabadon terjeszthetőig

Korai történet

Ken Thompson és Dennis Ritchie 1973. novemberében mutatta be az első Unix papírokat az Operációs Rendszerek Alapelvei Szimpóziumon (Symposium on Operating Systems Principles) a Purdue Egyetemen. Bob Fabry professzor - aki a Kaliforniai Egyetemem tanított Berkeley-ben - ellátogatott a rendezvényre, és azonnal érdeklődni kezdett az iránt, hogy hogyan kaphatna egy példányt a rendszerből, a célból hogy a Berkeley-n kísérletezhessen vele.

Ebben az időben a Berkeley-nek csak egyetlen nagy mainframe számítógépe volt, amely kötegelt (batch) feldolgozást végzett. Így ahhoz, hogy a kísérletek megkezdődhessenek először egy PDP-11/45 gépet kellett szerezniük, amely képes volt az akkori aktuális Unix Version 4-et futtatni. A berkeley-i Számítástechnikai Tudományok tanszék (Computer Science Department at Berkeley), összefogva a Matematika (Mathematics Department) és a Statisztikai tanszékkel (Statistics Department) közösen vásároltak egy PDP-11/45-öt. 1974 januárjában a Version 4 szalag (annak idején még mágnesszalagon (tape) tárolták az adatokat) megérkezett, és a Unix Keith Standiford végzős hallgató által telepítésre került.

Habár Ken Thompson nem vett részt a Berkeley-ben folyó telepítési munkálatokban, hamarosan mégis szükség volt a segítségére, mert ki kellett találi az okát néhány furcsa rendszer leállásnak. Mivel a Berkeley-nek csak egy 300-baud-os akusztikusan csatolt modeme volt - amely még "auto answer" képességgel sem rendelkezett - Thompson megkérte Standiford-ot, hogy menjen le a gépterembe és helyezze a telefonkagylót a modembe. Ezen keresztül tudta Thompson New Jersey-ből távolról debugolni a crash dump-okat.

Számos rendszerösszeomlást a lemezvezérlő azon hiányossága okozott, hogy a dokumentációban leírtak ellenére nem volt képes megbízhatóan végrehajtani az átfedéses kereséseket (overlapped seeks). A Berkeley 11/45-öse volt az első olyan rendszer, ahol Thompson először találkozott két lemezzel ugyanazon kontrolleren! Thompson távoli hibakeresése volt az első példa a Berkeley és a Bell Labs általi együttműködésre. A Bell Labs kutatóinak az együttműködésre való hajlandósága, a munkájuk eredményének megosztása nagyban hozzájárult ahhoz, hogy a Berkeley-nél gyors fejlődésnek indult a szoftverek tökéletesítése.

Noha a Unix hamarosan megbízhatóan futott, az együttműködés a számítástechnikai, matematikai és statisztikai tanszék között problémákba ütközött. A matematikai és a statisztikai tanszék futtatni szerette volna a DEC RSTS rendszerét. Sok vita után arra a kompromisszumos megoldásra jutottak, hogy mindegyik tanszék kap egy 8 órás időszeletet. A Unix 8 órát futhat, míg az RSTS 16 órás futása jogosult. Hogy a dolog korrekt legyen, az időszeleteket rotálták minden nap. A Unix futott reggel 8-tól délután 4-ig az egyik nap, délután 4-től éjfélig második nap, és éjféltől reggel 8-ig harmadik nap. A bizarr ütemezés ellenére a tanulók jobban szerették az operációs rendszerek kurzust a Unix gépen végezni, mint a kötegelt gépen.

Eugene Wong és Michael Stonebraker professzorok akadályozva voltak a kötegelt környezet korlátai miatt, így az Ő INGRES adatbázis projektjük csoportja volt az első, amely átköltözött a kötegelt (batch) gépekről a Unix nyújtotta interaktív környezetbe. Hamarosan elviselhetetlenül kevésnek találták azt a gépidőt amely a rendelkezésükre állt a 11/45-ön, ezért 1974 tavaszán vásároltak egy 11/40-est, amely már az új Version 5-öt futtatta. Azzal, hogy 1974 őszén kiadták az INGRES első terjesztését, az INGRES projekt volt az első csoport a számítástechnikai tanszéken, amely terjeszteni kezdte a szoftvereit. Néhány száz INGRES szalagot szállítottak le az elkövetkező 6 évben, amellyel megalapozták a Berkeley hírnevét az igazi rendszerek tervezésében és megalkotásában.

Annak ellenére, hogy az INGRES projekt elhagyta a 11/45-öt, még mindig kevés gépidő állt a tanulók rendelkezésére. Hogy csillapítsák a hiányt, Michael Stonebraker és Bob Fabry professzor 1974 júniusában kihirdette, hogy két oktatói 11/45-öst szereznek be a számítástechnikai tanszék számára. 1975 elején a pénz össze is jött. Valamikor ebben az időben jelentette be a DEC a 11/70-et - azt a gépet, amely sokkal jobb képességekkel rendelkezett, mint a 11/45-ös. A két 11/45-ösre félretett pénzből inkább egy 11/70-est vásároltak, amely 1975 őszére meg is érkezett. A 11/70-es érkezésével egy időben Ken Thompson úgy döntött, hogy kiveszi egy éves kutatói szabadáságát és mint vendég professzor meglátogatja a Berkeley-t, a korábbi iskoláját. Thompson Jeff Schriebman-nel és Bob Kridle-lel együtt feltelepítették 11/70-re az akkori legfrissebb Unix verziót, a Version 6-ot.

1975 őszén szintén érkezett két addig észrevétlen végzős diák is, Bill Joy és Chuck Haley, akik azonnal érdeklődni kezdtek az új rendszer iránt. Először egy Pascal rendszeren kezdtek el dolgozni, amelyet Thompson ütött össze miközben a 11/70-es géptermében lógott. Addig a pontig terjesztették ki és tökéletesítették a Pascal értelmezőjét (interpreter) amíg a tanulók egyik kedvenc programozási rendszere nem lett. Lett, mert kiváló hiba visszakeresési sémával, gyors fordítási- és végrehajtási képességekkel rendelkezett.

Miután a Model 33 teletype-ok helyett ADM-3 képernyő terminálok lettek, Joy és Haley úgy érezte, hogy akadályozza Őket az ed névre hallgató szerkesztőprogram. Miután egy em névre hallgató editoron dolgoztak - amelyet George Coulouris professzortól kaptak, aki a Queen Mary Kollágiumban tanított Londonban - nekiálltak, hogy létrehozzanak egy "line-at-a-time" szerkesztőt, amelynek a neve ex lett.

Miután Ken Thompson 1976 nyarán elhagyta a Berkeley-t Joy-t és Haley-t érdekelni kezdte a Unix kernel belső működése. Első próbálkozásuk az volt a rendszerrel kapcsolatban, amikor Schriebman figyelő szemei mellett feltelepítették azokat javításokat és frissítéseket, amelyet az "ötven változás" ("fifty changes") névre hallgató szalag tartalmazott, és amely a Bell Labs-tól érkezett. Miután megtanultak manőverezni a forráskódban, már néhány kisebb javaslatot tettek arra, hogy hogyan is lehetne csökkenteni a kernel szűk keresztmetszeteit.

Korai disztribúciók

A Pascal fordítóban levő hiba visszakeresési munka annyira népszerű lett, hogy megjelentek az igények a rendszer másolására. 1977 elején Joy összeállította a "Berkeley Software Distribution"-t. Az első terjesztés magában foglalta a Pascal rendszert, egy zavaros alkönyvtárban a Pascal forrását, és az ex szerkesztőt. A következő évben Joy körülbelül 30 szabadon felhasználható másolatot küldött el a rendszerből.

Miután néhány ADM-3a konzol (terminal) érkezett, amely már rendelkezett képernyőn címezhető kurzorral, Joy nekiállhatott a vi megírásának, amely elhozta a Berkeley-be a képernyő-alapú szerkesztés lehetőségét. Joey hamarosan dillemába esett. Gyakori eset az egyetemeken, hogy kevés a pénz és nem tudják kicserélni a régi felszereléseket új eszközökre. Ahelyett, hogy a különböző terminálokra írt volna támogató kódot inkább úgy döntött, hogy egyesíti a képernyőkezelést. Ehhez egy kis értelmezőt (interpreter) használt, amely újrarajzolta a képernyőt. Ez az interpreter a terminal karakterisztikájának leírása alapján volt vezérelve. Ez az erőfeszítés vezetett végsősoron a termcap-hoz.

Az 1978-as év közepére a disztribúciónak igazán szüksége volt már egy frissítésre. A Pascal rendszer egyre megbízhatóbb és robosztusabb lett, köszönhetően az egyre növekvő felhasználói közösség visszajelzéseinek. Két részre lett bontva, úgyhogy képes volt futni a PDP-11/34-esen is. A frissítés eredményeképpen létrejött a "Second Berkeley Software Distribution" (Második Berkeley Szoftver Terjesztés), amelynek a nevét gyorsan le is rövidítették 2BSD-re. A 2BSD a bővített Pascal rendszert, a vi-t és a különböző terminálokhoz használható termcap-ot tartalmazta. Bill Joy egy személyben állította össze a disztribúciót, válaszolt a telefon kérdésekre, és valósította meg a felhasználók visszajelzéseit a rendszerben. A következő évben közel 75 szalag került ki a kezei közül. Miután Joy más projektekbe is beszállt az elkövetkező évben a 2BSD terjesztés folytatta a bővülést. Ennek a disztribúciónak a végső verziója a 2.11BSD már egy komplett rendszer volt, amely PDP-11-esek százain futott a Föld különböző részein.

VAX Unix

1978 elején Richard Fateman professzor elkezdett keresni egy olyan gépet, amelyen nagyobb címtartomány van mint az eddigieken, hogy folytatni tudja a Macsyma névre hallgató munkáját (eredetileg egy PDP-10-esen kezdte). Az akkor újonnan bejelentett VAX-11/780 kielégítette ezt az igényt és belefért a költségvetésükbe. Fateman és további 15 fakultás tag készített egy NSF előterjesztést, amelyhez hozzáadtak egy kis tanszéki tőkét, hogy meg tudják venni a VAX-ot.

Eredetileg a VAX a DEC VMS névre hallgató operációs rendszerét futtatta, de a tanszék a Unix rendszerben kezdett el dolgozni, és ezt akarták a továbbiakban is használni. Röviddel a VAX érkezése után Fateman kapott egy 32/V Unix portot a VAX-hoz John Reiser-től és Tom London-tól (Bell Labs).

Habár a 32/V képes volt Version 7-es Unix környezetet biztosítani a VAX-on, nem volt képes kihasználni a VAX hardver virtuális memória kezelési képességeit. Mint az elődjei a PDP-11-en, teljesen swap-alapú rendszer volt. A berkeley-i Macsyma csoport nem tudta kihasználni a virtuális memória adta lehetőségeket, és ez azt jelentette, hogy a folyamatok címtartományát a fizikai memória mérete határozta meg, amely akkoriban 1 MB volt az új VAX-on.

Hogy ezt a problémát kiküszöböljék Fateman megkereste Domenico Ferrari professzort - aki a rendszer fakultás tagja volt a Berkeley-ben - és megkérte, hogy derítse ki azt, hogy hogyan lehetne virtuális memória (al)rendszert írni a Unix-hoz. Ozalp Babaoglu, Ferrari egyik tanítványa nekiállt megkeresni azokat a lehetőségeket, amellyel működő lapozó rendszer implementációt lehet készíteni a VAX-hoz. Sajnos a munkája nem volt egyszerű, mert a VAX kevés referenciával rendelkezett.

Amint Babaoglu közeledett az implementáció első részéhez, megkérte Bill Joy-t, hogy segítsen neki megérteni a Unix kernel bonyolult szerkezetét. Joy érdekesnek találta Babaoglu megközelítését, így csatlakozott és segített a kódot beépíteni a 32/V-be, majd pedig segítkezett az azt követő hibakeresésben is.

Sajnos a Berkeley-nek csak egyetlen VAX rendszere volt, és ezt az egyet használták fel fejlesztésre is és az általános célokra is. Így néhány héttel a karácsonyi szünet után a felhasználók váltakozva találhatták magukat a 32/V-be és a "Virtual VAX/Unix"-ba bejelentkezve. Az új rendszeren dolgozva gyakran tapasztalhatták, hogy megállt a rendszer futása pár perccel a 32/V login prompt után. De 1979 januárjára a bugok nagy része eltűnt, és vele együtt a 32/V is eltűnt a történelem süllyesztőjében.

Joy látta, hogy a 32-bites VAX mellett a 16-bites PDP-11 hamarosan elavult lesz és elkezdte portolni a 2BSD programokat a VAX-ra. Amíg Peter Kessler és Marshall Kirk McKusick portolta a Pascal rendszert, addig Joy portolta az editorokat, a vi-t, a C héjat (shell), és a számtalan kisebb programot, amely megtalálható volt a 2BSD terjesztésben. 1979 végére a teljes terjesztés összeállt. Ez a terjesztés már tartalmazta a virtuális memória kernelt, a standard 32/V segédprogramokat, és a stuffokat a 2BSD-ből. 1979 decemberében Joy leszállította a majd' 100 másolatból álló 3BSD-t, a Berkeley első VAX terjesztését.

A Bell Laboratories legutolsó kiadása a 32/V volt, ezután az összes Unix kiadás már az AT&T-től jött, először a System III majd később a System V, amelyet már különböző csoport kezelt, és hangsúlyozottan stabil kereskedelmi kiadás volt. A Unix elüzletiesedésével a Bell Labs kutatói többé nem voltak képesek kiadni a folyamatban levő Unix kutatások eredményeit. Mivel a kutatóközösség folytatta a Unix rendszer módosítását, keresni kellett egy szervezetet, amely képes volt előállítani a kutatási kiadásokat. Mivel a Berkeley már korábban is részt vett a Unix fejlesztésében és történelme volt a Unix-alapú eszközök szállításában, gyorsan belépett abba a szerepbe, amelyet előzőleg a Bell Labs játszott.