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

 ( trey | 2006. február 17., péntek - 22:38 )

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 25. péntek 18:11:09


4.3BSD

Mint a 4.1BSD kiadásának idején, a kritikák most is hamar jöttek. A legtöbb panasz a rendszer lassúságára vonatkozott. A probléma - nem meglepően - az volt, hogy az új megoldások nem lettek finomhangolva, és számos kernel adat struktúra nem felelt meg az új felhasználásnak. Karels és McKusick első éve azzal telt, hogy hangolták és csiszolták a rendszert.

Két évnyi rendszer polírozás, hálózati kód javítás után 1985 júniusában az Usenix konferencián bejelentették, hogy a 4.3BSD megjelenése a nyár után várható. De a megjelenéssel kapcsolatos számításaikat a BBN-esek (Bolt, Beranek, és Newman) hirtelen keresztülhúzták. A BBN-esek kijelentették, hogy Karels-ék nem frissítették fel a 4.2BSD-t az új hálózatos kódjukkal. Helyette a még mindig az évekkel azelőtt kapott, és azóta folymatosan hackelt kezdeti prototípus kódját használják. Panaszkodtak a DARPA-nak, hogy a Berkeley implementálta a csatolófelületet, míg a BBN implementálta a protokolt, így a Berkeley-nek a le kell cserélnie a TCP/IP kódot a 4.3BSD-ben a BBN-féle implementációra.

Mike Karels fogta a BBN kódot és megvizsgálta, hogy mennyit változott a kód azóta, amióta a Berkeley-hez került. Eldöntötte, hogy a legjobb az lesz, ha megtartja a BBN kód jó részeit, beleépíti a Berkeley kódba, de nem cseréli le a Berkeley kódot. Az ok amiért a Berkeley kódot megtartotta az az volt, hogy ezt a kódot már nagyfokú tesztelésnek tették ki a 4.2BSD terjesztésben. De mint kompromisszumos megoldást felkínálta mindkét implementáció beillesztését a 4.3BSD disztribúcióba, hogy majd a felhasználók dönthessék el, hogy melyiket kívánják használni.

Miután a DARPA megvizsgálta Mike Karels döntését, DARPA úgy ítélte meg, hogy a két kódbázis kiadása együttműködési problémákhoz vezethet, ezért csak egy implementáció kerülhet kiadásra. Hogy eldöntsék, hogy melyik legyen az, felkérték Mike Muuse-t a Ballistics Research Laboratory munkatársát, hogy nézze át mindkét kódot, és mondjon véleményt, mint harmadik független fél. Egy hónapos kiértékelés után jött vissza az eredmény, amely azt mutatta, hogy a Berkeley kód sokkal hatékonyabb, de a BBN kód jobban kezeli a torlódásokat (congestion). A kérdést végül az döntötte el, hogy a Berkeley kód hiba nélkül teljesített, míg a BBN kód többször is pánikolt a nyúzótesztek során. A DARPA végső döntése az volt, hogy a 4.3BSD-nek a Berkeley kóddal kell megjelennie.

A felpolírozott 4.3BSD rendszer végül 1986 júniusában jelent meg. Mint az várható volt számos teljesítménybeli hibára javítást hozott. Több ilyen jellegű hibát javított, mint a 4.1BSD amely a 4BSD után jelent meg. Annak ellenére, hogy a gyártók kezdtek visszatérni a System V-höz, nagy mennyiségű 4.3BSD kód került a rendszerükbe, különsképpen a hálózati alrendszer.

1986 októberében Keith Bostic csatlakozott a CSRG-hez. Az alkalmazásának feltétele az volt, hogy megengedik neki, hogy befejezze korábbi munkáját, amely abból állt, hogy portolni próbálta a 4.3BSD-t a PDP-11-re. Akkor Karels és McKusick azt gondolta hogy lehetlen vállalkozás a VAX-on 250 Kbyte-os méretűre forduló rendszert belepréselni a 64-Kbyte-os PDP-11 címtartományában, és egyetértettek abban, hogy Bostic fel fogja adni a próbálkozásokat. Aztán a legnagyobb csodálkozásukra a port sikeresen elkészült. Bonyolult átlapolásokat és kiegészítő processzor állapotokat használt a PDP-11-en. A portolás eredményeként megszületett a 2.11BSD kiadás. A kiadás Casey Leedom és Bostic nevéhez fűződik, és olyan jól sikerült, hogy használatban maradt egészen 1998-ig az utolsó PDP-11-eken.

Közben egyre nyilvánvalóbbá vált, hogy a VAX architektúra elérte életciklusának végét, és itt volt az idő arra, hogy egy olyan újabb architektúra után nézzenek, amelyen futni fog a BSD. Az ígéretes új architektúra a Computer Consoles Inc. által gyártott Power 6/32 lett volna. Sajnos az architektúra elhalt, mikor a gyártó úgy döntött, hogy más stratégiai irányt fog követni. Mindamellett a CSRG rendelkezett néhány ilyen géppel, amelyen lehetővé vált annak a munkának a befejezése, amelyet még Bill Joy kezdett el, és amely azt célozta meg, hogy feldarabolják a BSD kernelt gép-függő, és gépfüggetlen részekre. A munka eredményeként 1988-ban megszületett a 4.3BSD-Tahoe. A Tahoe név a Computer Consoles Inc.-től származott, a cég ezt a kódnevet használta a Power 6/32 fejlesztésekor. Annak ellenére, hogy a Power 6/32 gépek támogatása rövid ideig tartott, a kernel feldarabolási munka nagyon-nagyon hasznosnak bizonyult a későbbiek folyamán, mikoris a BSD-t számos más architektúrára portolták.

Networking, Release 1

A 4.3BSD-Tahoe kiadásáig minden egyes BSD megrendelőnek először meg kellett vásárolnia egy AT&T forráslicencet. Erre azért volt szükség, mert a Berkeley soha nem terjesztette a programjait csak bináris (binary only) formában, minden terjesztés tartalmazta a rendszer teljes forráskódját. A Unix és BSD rendszerek történelme során bebizonyosodott annak az elépzelésnek az "ereje", hogy a felhasználók belenézhettek a forráskódba. Ahelyett, hogy csak passzívan használták volna a rendszert, aktívan közreműködtek annak fejlesztéséban, javították a bugokat, emelték a rendszer stabilitását és teljesítményét, és voltak olyanok is akik a rendszerhez teljesen új funkciókat is adtak.

Ahogy nőtt az AT&T forráslicenc ára, úgy mutatkozott egyre nagyobb igény arra, hogy a gyártók saját önálló TCP/IP-alapú hálózati termékeket gyártsanak a PC üzlet számára. Ehhez fel szerették volna használni a BSD kódot, de beleütköztek a "per-binary" költségekbe (megjegyzés (trey): az az akarták vagy sem, meg kellett vásárolniuk az AT&T forráslicencét akkor is, ha ők csak a szabadon felhasználható BSD kódot szerették volna felhasználni). Ezért a gyártók kérték a Berkeley-t, hogy bontsa ketté a rendszert. Válassza szét a hálózatos kódot és a programokat, és bocsássa rendelkezésükre olyan licencfeltétel mellett, amely nem igényli az AT&T forráslicencét. A TCP/IP hálózati kód nem volt része a korai 32/V-nek, hanem teljesen a Berkeley és a hozzájárulók (contributors) által lett kifejlesztve. Így az eredetileg a Berkeley által fejlesztett BSD hálózati kód és programok 1989 júniusában megjelentek Networking Release 1 néven. Ez volt a Berkeley első szabadon terjeszthető BSD kiadása.

A licenc feltételek szabadok (liberálisak) voltak. A licenc lehetővé tette a kód terjesztését mind változtatott, mind változatlan formában, és nem volt kizárt a csak bináris formában való terjesztés sem. A kódért nem kellett a Berkely felé jogdíjat (royalty) sem fizetni. Az egyeten licencfeltétel az volt, hogy a forráskód filejaiban a szerzői jogi szöveget (copyright notices) sértetlenül kell hagyni, és a kódra épülő termékek dokumentációjában fel kell tünteni, hogy a termék kódja a Kaliforniai Egyetem és a hozzájárulók munkájára épül. Annak ellenére, hogy a Berkeley 1000$-t kért az adathordozó szalagért, mindenki szabadon másolhatta a szalagot attól, akinek már volt. És csakugyan, számos nagy telephely másolta fel anonymous ftp-re az anyagot, miután az megjelent. Miután könnyen elérhetővé vált az anyag, a CSRG elégedett volt, hogy néhány száz szervezet megvásárolta a másolatokat, mert ezeknek az árából további fejlesztéseket tudtak finanszírozni.

4.3BSD-Reno

Időközben folytatódott az alaprendszer fejlesztése. A virtuális memória csatolófelület - amely először a 4.2BSD architektúra dokumentációban lett megfogalmazva - végül meghozta gyümölcsét. Gyakori eset volt a CSRG-nél hogy mindig megpróbáltak egy már létező kódot felhasználni a céljaikhoz ahelyett, hogy nekiálltak volna megírni az elejétől kezdve. Így ahelyett, hogy egy teljesen új virtuális memória alrendszert kezdtek volna tervezni, körülnéztek az elérhető alternatívák után. Az első választásuk a Sun Microsystems SunOS nevű operácios rendszerének virtuális memória alrendszere volt. Bár számos tárgyalást folytattak a Sun-nal azzal kapcsolatban, hogy az adjon át kódot a Berkeley-nek, nem lett semmi a dologból. Így jött a következő választás. A választás a Carnegie-Mellon Egyetem operációs rendszerének, a MACH-nak a virtuális memória alrendszerére esett. Mike Hibler a Utah Egyetemtől beolvasztotta a technológia magját a MACH-ból, azokkal a felhasználói csatolófelületekkel együtt, amelyek a 4.2BSD felépítési kézikönyvben már le voltak írva (és amely csatolófelületet a SunOS is használt).

A másik nagyobb funkció, amely ebben a kiadásban jelent meg az a Sun-kompatibilis Network Filesystem (NFS) volt. A CSRG itt sem állt neki újraírni az NFS kódot, hanem helyette a kanadai Geulph Egyetemen dolgozó Rick Macklem már meglevő kódját építették be a rendszerbe.

Habár ekkor még nem volt kész az összes anyag a 4.4BSD kiadásához, a CSRG mégis úgy döntött, hogy kibocsátanak egy köztes kiadást. Ennek az oka az volt, hogy széles körben tesztelni szerették volna a két nagyobb, újonnan bekerült funkciót. Szükségünk volt a visszajelzésekre. Ez a licencelt köztes verzió a 4.3BSD-Reno névre hallgatott, és 1990 elején jelent meg. A kiadást egy szerencsejátékról híres Nevadai nagy városról nevezték el, amelynek a burkolt célja az volt, hogy tudassák a felhasználókkal, hogy ennek a köztes kiadásnak a használata kicsit a szerencsejátékhoz hasonlít.