A Berkeley Unix 20 éve - II. 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 25. péntek 18:25:12

DARPA támogatás

Időközben a Defense Advanced Research Projects Agency (DARPA) tervező irodáiban megbeszéléseket tartottak arról, hogy hogyan lehetne nagyobb befolyást szerezni a Berkeley-ben folyó munka felett. A DARPA egyik korai sikere az volt, hogy országos számítógéphálózatot állított fel úgy, hogy országszerte összekötötte az összes nagyobb kutatóközpontot. Ez idő alatt számos olyan számítógépet találtak ezekben a központokban, amelyek elérték az életciklusuk végét, és lecserélésre vártak. Ezeknek a cseréknek a legnagyobb költségét a kutatószoftverek új gépekre való portolásának ára tette ki. Továbbá a telephelyek hiába is szerették volna kicserélni egymás között a szoftvereket, nem tudták, mert a hardverek és az operációs rendszerek különböztek.

Egy hardvergyártót választani nem lett volna praktikus (a DARPA részéről), mert a kutatócsoportok számára a számítógépek széles skálája kellett a munkához, és emellett nem lett volna bölcs dolog egy gyártótól függeni. Ezért a DARPA tervezői úgy döntöttek, hogy az lesz a legjobb megoldás, ha a gépeket az operációs rendszer szintjén fogják egyesíteni. Számos megbeszélés után úgy döntöttek, hogy a Unix lesz a kiválasztott szabvány, mert az már korábban is bizonyította a portolhatóságát.

1979 őszén Bob Fabry választ adott a DARPA Unix irányú érdeklődésére azzal, hogy írt egy beadványt amelyben javaslatot tett arra, hogy a Berkeley fejlesszen ki egy kibővített 3BSD verziót a DARPA közösség számára. 1979 decemberében Fabry fogta a beadványának másolatát és elvitte a DARPA találkozóra, ahol jelen voltak a VLSI (Very Large Scale Integrated Circuit) vállakozók, a Bolt, Beranek, és Newman (BBN) képviselői, akik az ARPANET fejlesztői voltak. Sok fenntartás fogalmazódott meg arra nézve, hogy a Berkeley képes lesz-e működő rendszert produlálni, de az 1979 decemberében kiadott 3BSD eloszlatta a kétséget nagy részét.

A 3BSD kiadás egyre nővekvő jó megítélésének köszönhetően Bob Fabrynak lehetősége nyílt arra, hogy egy 18 hónapos szerződést kössön a DARPA-val, amely 1980 áprilisával indult. A szerződés pártfogása alatt Bob Fabry felállított egy szervezetet, amelyet Computer Systems Research Group névre kereszteltek el, és amelynek a rövidítése CSRG lett. Azonnal felvette Laura Tongot, hogy kezelje a projekt adminisztrációs ügyeit. Fabry ezután egy projektvezetőt kezdett keresni, aki felügyelni fogja a szoftver fejlesztéseket. Fabry feltételezte, hogy amióta Joy átment a Ph.D. képesítő vizsgán, jobban koncentrál arra, hogy megszerezze fokozatát, mintsem elfoglaljon egy szoftver fejlesztői pozíciót. De Joy-nak más tervei voltak. Március elején egyik éjjel felhívta otthonában Fabry-t, és kifejezett érdeklődést mutatott a Unix további fejlesztésével kapcsolatban. Mivel Fabry meglepődött az ajánlattól, kellett egy kis idő mire beleegyezett a dologba.

A projekt azonnal elindult. Tong felállított egy olyan terjesztési rendszert, amely képes volt Joy előző disztribúcióinál nagyobb mennyiségű megrendelést kezelni. Fabry sikeresen irányította a megbeszéléseket Bob Guffy (AT&T) és a Kaliforniai Egyetem ügyvédei között a célból, hogy a hivatalosan kibocsátott Unix verziók kiadási feltételei mindenki által elfogadhatóak legyenek. Joy elfogadta Jim Kulp "job control"-ját, megvalósította az auto reboot-ot, egy 1K blokkos filerendszert írt, és támogatást készített a legújabb VAX géphez, a VAX-11/750-hez. 1980 októberében jelent meg az a felpolírozott terjesztés, amely a Pascal fordító és a Franz Lisp rendszer mellett egy kibővített levelező rendszert tartalmazott, és amely a 4BSD névre hallgatott. A kilenc hónapos életciklusa alatt közel 150 másolatot szállítottak le belőle. A licenc megállapodás nem gépekre szólt, hanem oktatási intézményekre, ezért a terjesztés körülbelül 500 gépen futott.

A Berkeley Unix széleskörű elterjedésével és előtérbe kerülésével számos kritika kezdett napvilágra kerülni. David Kashtan a Stanford Research Institute munkatársa írt egy tanulmányt, amelyben publikálta az általa a VMS-en, és a Berkeley Unix-on futtatott mérőprogram eredményeit. Ezek az eredmények egyértelműen azt mutatták ki, hogy a VAX-os Unix rendszernek teljesítménybeli problémái vannak. Ennek hatására Joy pár hónapra félretette jövőbeli terveit, és szisztematikusan elkezdte finomhangolni a kernelt. Heteken belül elkészült egy cáfolat, amely rámutatott arra, hogy a Kashtan-féle mérőprogram ugyanolyan jól fut a Unix-on, mint a VMS-en.

Ahelyett, hogy a folytatódott volna a 4BSD szállítása, 1981 júniusában Robert Elz által készített automatikus konfigurációs kóddal felruházott, és Joy által tuningolt rendszer megjelent 4.1BSD néven. A több, mint két éves életciklusa alatt körülbelül 400 terjesztési szállítást élt meg. Az eredetileg tervezett 5BSD kiadásból nem lett semmi, mert az AT&T részéről ellenvetés érkezett az elnevezéssel kapcsolatban. Az AT&T szerint a felhasználóik összekeverhetik az Ő kereskedelmi Unix kiadásuk "System V" nevét a Berkeley "5BSD"-jének nevével. Éppen ezért, hogy ne legyen elnevezési probléma, a Berkeley beleegyezett, hogy a jövőbeli elnevezési sémájukat megváltoztatják, maradnak a "4BSD"-nél, és a későbbiekben csak a kisebb számot fogják növelni.

4.2BSD

A 4.1BSD megjelenésével a legtöbb teljesítmény körüli aggodalom eloszlott. A DARPA elégedett volt az első szerződés eredményeivel, és egy új két évre szóló szerződést kötött a Berkeley-vel. Majdnem ötször annyi támogatást nyújtott, mint első alkalommal. A szerződésből származó pénz fele a Unix projekthez vándorolt, a többit más kutatók kapták a számítástechnikai tanszéken.

A DARPA közösség igényeinek alapján egyre több módosítás került a rendszerbe. Az új rendszertől olyan gyorsabb filerendszert vártak el, amely képes volt nagyobb áteresztőképességet biztosítani az éppen elérhető diszk technológián, processz támogatást a multi-gigabyte cím tartományok igényeihez, flexiblis IPC (interprocess communication) megoldást, amely lehetővé teszi a kutatóknak, hogy elosztott rendszereken dolgozhassanak, és hálózati támogatás integrálását, hogy az új rendszert futtató gépek könnyen részesei lehessenek az ARPAnet-nek.

Duane Adams - aki a Berkeley szerződés felügyelője volt a DARPA-nál - abban az igyekezetében, hogy segítsen meghatározni az új rendszer milyenségét, létrehozott egy csoportot amelynek a "steering committee" (kormánybizottság?) nevet adta. A csoport feladata az volt, hogy segítsen írányítani az új rendszer tervezését, és hogy gondoskodjon arról, hogy a kutató közösség szükségletei ki legyenek elégítve. A bizottság évente kétszer találkozott 1981 áprilisától 1983 júniusáig. A bizottság tagja volt Bob Fabry, Bill Joy, Sam Leffler a Kaliforniai Egyetem Berkeley részéről, Alan Nemeth és Rob Gurwitz a Bolt, Beranek, és Newman-tól, Dennis Ritchie a Bell Laboratories részéről, Keith Lantz a Stanford Egyetemről, Rick Rashid a Carnegie-Mellon Egyetemről, Bert Halstead a Massachusetts-i Technológiai Intézettől (Massachusetts Institute of Technology), Dan Lynch az Információ Tudományi Intézettől (The Information Sciences Institute), Duane Adams és Bob Baker a DARPA részéről és Jerry Popek a Kaliforniai Egyetem Los Angeles részéről. 1984 elejétől ezt a találkozót workshopok felváltották fel, amelyekben már más emberek is részt vettek.

Egy kezdeti dokumentáció - az új rendszer felépítésére tett javaslatot - amely a kormányzótanács, és más emberek között keringett a Berkeley-n kívül, 1981 júliusában hosszas vitákat váltott ki. 1981 nyarán Marshall Kirk McKusick már közreműködött a CSRG-ben (Computer Systems Research Group), amelynek során egy új filerendszer implementációján dolgozott. Ezen a nyáron Joy egy IPC (interprocess communication) implementáció prototípusának fejlesztésére koncentrált. 1981 őszén Sam Leffler csatlakozott a CSRG-hez, mint teljes munkaidős csapattag, és együtt dolgozott Bill Joy-jal.

Amikor Rob Gurwitz átadott a Berkeley-nek egy korai TCP/IP protokol implementációt, Joy beépítette azt a rendszerbe, és javított a teljesítményén. E munka során Joy-nak és Leffler-nek világossá vált, hogy az új rendszernek több hálózati protokolt kell támogatnia, nem csak a DARPA standard hálózati protokoljait. Ezért nekiálltak, és újratervezték a szoftver belső felépítését, csiszoltak a csatolófelületeken, így többszörös hálózati protokolokat tudtak egyidőben használni.

Mikor a belső rekonstrukciós munkák elkészültek, a TCP/IP protokolok integrálva lettek a prototípus IPC megoldással együtt, számos egyszerű alkalmazás született annak érdekében, hogy a helyi felhasználók hozzáférhessenek a távoli erőforrásokhoz. Ezek a programok - az rcp, rsh, rlogin, és rwho - eredetileg átmeneti programoknak készültek, amelyek a tervek szerint le lettek volna cserélve sokkal ésszerűbb megoldásokra (erre utalt az "r" prefix). Ez az új rendszer - amelynek a neve 4.1a lett -, előszőr 1982 áprilisában lett helyi felhasználásra disztributálva. Soha nem volt széles körű terjesztésre tervezve, viszont a rendszerről csempészett másolatok terjedtek el azokon a helyeken, ahol türelmetlenek voltak kivárni a 4.2 megjelenését.

A 4.1a rendszer már régen elavult mielőtt kész lett volna. A felhasználóktól visszaérkező értékes információkat felhasználva elkészült egy javított ajánlás az új rendszerhez, amelynek a neve "4.2BSD Rendszer Kézikőnyv" (4.2BSD System Manual) lett. 1982 februárjában keringett ez a dokumentum, és azoknak a javasolt felhasználói csatolófelületeknek (a rendszer szolgáltatásokhoz) a rövid leírását tartalmazta, amelyeknek a későbbiekben beépítésre kerültek a 4.2BSD-be.

A 4.1a fejlesztésével párhuzamosan McKusick befejezte az új filerendszer implementálását, amely végül 1982 júniusában teljesen beépítésre került a 4.1a kernelbe. A rendszert ezután 4.1b-nek hívták, és csak néhány kiválaszott fejlesztői gépen futott a Berkeley-ben. Joy tartott a rendszer ilyen jelenős változtatásától, ezért szerintük az volt a legjobb, ha elkerülik a helyi terjesztést, főleg azért mert az összes gép filerendszerét le kellett volna menteni, majd vissza kellett volna állítani ahhoz, hogy át lehessen téri a 4.1a-ról a 4.1b-re. Amikor a filerendszer bizonyította stabilitását, Leffler nekiállt az új filerendszerrel kapcsolatos rendszerhívások megvalósításának, közben Joy pedig az IPC szolgáltatás javításán dolgozott.

1982 tavaszának végén Joy bejelentette, hogy csatlakozik a Sun Microsystems-hez. Ezen a nyáron felváltva töltötte idejét a Sun és Berkeley között. Idejének nagy részét az IPC-k javítására, csiszolására fordította, és újjászervezte a Unix kernel forrását, hogy elkülönítse a gép specifikus függőségeket. Joy távozásával Leffler-re szállt a projekt befejezésének felelőssége. Néhány határidő már esedékessé vált, és a DARPA közösségnek 1983 tavaszára ígérték a következő kiadást. Az adott időkényszer miatt a kiadásig hátralevő munkát újraértékelték, és prioritási szinteket állítottak fel. Elsősorban a virtuális memória javításokat, és az IPC-k állapotának csiszolását sorolták alacsonyabb prioritásúvá (majd később teljesen mellőzték). Mivel az implementációk már több, mint egy évesek voltak, és a Unix közösség elvárásai egyre erősődtek, kénytelenek voltak a 4.2 megjelenése előtt egy közbenső kiadást készíteni, amivel meg tudták nyugtatni az embereket addig, amíg a végső rendszer el nem készült. Ezt a kiadást 4.1c-nek nevezték el, és 1983 áprilisában kezdék el terjeszteni. Számos hardvergyártó használta ezt a kiadást arra, hogy felkészítsék vasukat a 4.2 érkezésére. Közben a 4.1c kiadásával egy időben felvették Pauline Schwartz-ot, hogy vegye át a disztribúciós ügyek intézését.

1983 júniusában Bob Fabry átadta a CSRG adminisztációs irányítását Domenico Ferrari és Susan Graham professzoroknak, és megkezdte a kutatói szabadságának letöltését. Leffler folytatta a rendszer befejezését, új jelzési (signal) rendszert implmentált, beleépítette a hálózati támogatásba. Újraírta az önálló I/O rendszert (standalone I/O system), hogy egyszerűsítse a telepítési folyamatot, beépítette a lemez kvóta (disk quota) képességet, amelyet Robert Elz dolgozott ki, frissítette a dokumentációt, és vadászta a bugokat a 4.1c kiadásból. Végül 1983 augusztusában megjelent a 4.2BSD.

Amikor a 4.2 befejezése után Leffler elhagyta a Berkeley-t a Lucasfilm kedvéért, a helyére Mike Karels került. Az tapasztalat amelyet Karels a 2.9BSD PDP-11 szoftver terjesztéssel szerzett ideális hátteret adott az új munkájához. 1984 decemberében miután McKusick megszerezte a Ph.D-jét, csatlakozott Mike Karels-hez, mint teljes idős CSRG fejlesztő.

A 4.2BSD népszerűsége bámulatos volt, 18 hónap alatt több, mint 1000 site licencet adtak ki. Összesen több 4.2BSD másolatot szállítottak le, mint a Berkeley azt megelőzően az összes szoftver terjesztéssel szállított. A legtöbb Unix gyártó 4.2BSD-vel szállította a rendszereit, szemben a kereskedelmi System V-vel, amelyet az AT&T árusított. Ennek az oka az volt, hogy a System V sem hálózati képességgel, sem pedig a Berkeley Fast filerendszerrel nem rendelkezett. A BSD kiadású Unix még tartotta a vezető pozícióját pár évig, mielőtt visszatért a gyökerekhez. A hálózati képesség, és az összes 4.2BSD fejlesztés beleolvadt a System V kiadásba, és a gyártók visszaváltottak a System V-re. Mindazonáltal a későbbi BSD fejlesztések szintén beépültek a System V-be.