от Пейо Попов и Co.(30-10-2001)

рейтинг (50)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Преведена от: Пейо Попов и Co.

Началото на историята

Кен Томпсън и Денис Ричи представят първите идеи за Unix на симпозиума "Принципи на Операционните Системи", който се провежда в университета Пърдю през ноември 1973. Професор Боб Фарби (Bob Fabry), от калифорнийския университет в Бъркли, присъствал на представянето и моментално бил заинтригуван от идеята, с която смятал да експериментира в Бъркли.

По това време в Бъркли разполагали единствено с големи мейнфрейм машини, така че първата работа било да се вземат PDP-11/45, които били подходящи за текущата по това време версия на UNIX - Version 4. Факултетът по информатика заедно с факултета по математика успяли с общи усилия да закупят едно PDP-11/45. През януари 1974 пристигнала лентата с Version 4 и Unix бил инсталиран от студента Кейт Стандифорд (Keith Standiford).

Кен Томсън не присъствал по време на инсталирането на UNIX в Бъркли (по това време предимно той лично инсталирал UNIX), но се наложила неговата намеса, защото системата не се държала както трябва. Томпсън помолил Стандифорд да включи неговия телефон към 300 бодовия модем, с който разполагали в Бъркли, и започнал да разследва причините от Ню Джърси.

Повечето от проблемите се оказало, че се причиняват от дисковия контролер. PDP-то, което били купили в Бъркли, било едно от първите, които имали закачени два диска на един дисков контролер. Отдалеченото разследване на проблемите от Томпсън бил първия пример на зародилото се ползотворно сътрудничество между Бъркли и Bell Labs. Това допринесло впоследствие за бързото подобряване на наличния в Бъркли софтуер.

Въпреки че Unix скоро след усилията започнал да работи стабилно, между коалицията от факултите по информатика, математика и статистика избухнал спор. Първият проблем бил в това, че математиците и статистиците искали да използват RSTS системата на DEC, а програмистите -- UNIX. След усилен дебат се родил и следният компромис: по осем часа ще върви Unix следван от шестнайсет часа за RSTS. Въпреки странната схема студентите, които имали курсове по операционни системи, предпочитали да използват Unix за да вършат своите проекти.

Професор Юджийн Уонг (Eugene Wong) и Майкъл Стоунбрейкър (Michael Stonebraker) прехвърлили тяхната Система за Управление на Бази от Данни (СУБД) INGRES да работи под Unix. Скоро се установило, че машинното време, по време на което върви UNIX, е малко и то било увеличено. През 1974 Бъркли купува PDP 11/40 вървящо с новопоявилата се Version 5. Първата дистрибуция на INGRES, вървяща върху UNIX, се появила през есента на 1974, като по тoзи начин проектът INGRES станал първият софтуерен продукт, разпространяван от факултета по информатика в Бъркли.

Дори след прехвърлянето на INGRES проекта от PDP 11/45 на новата PDP 11/40 не бил решен проблема с недостига на часове за студентите. За да се реши проблема, през юни 1974 Майкъл Стоунбрейкър и Боб Фарби решават да вземат две PDP 11/45. През 1975 парите за двете машини са отпуснати, но по същото време DEC анонсира PDP 11/70. Парите за купуване на двете PDP 11/45 били използвани за да се купи едно PDP 11/70, което пристигнало през есента на 1975. Едновременно с пристигането на PDP 11/70, Кен Томпсън решава да си вземе отпуск и да посети Бъркли, като гостуващ професор. Томпсън заедно с Джеф Скрайбмън (Jeff Schriebman) и Боб Кридъл (Bob Kridle), слагат най-новата версия на UNIX - Version 6 - на новото PDP 11/70.

По това време двама неизвестни до тогава студенти Бил Джой (Bill Joy) и Чък Хейки (Chuck Haley) се заинтересуват от новата система. В началото те започнали да работят върху Pascal, който Томпсън префасонирал, докато висял в стаята с PDP 11/70. Скоро възможностите на Pascal били разширени, интерпретаторът бил подобрен и по този начин Pascal станал предпочитания от студентите език.

С напускането на Кен Томпсън през лятото на 1976, Джой и Хейли започнали да разучават самото UNIX ядро. Под зоркия поглед на Скрайбман те инсталират първите "50 подобрения", които пристигнали от Bell Labs. С по-обстойното запознава на изходния код започнали да се раждат и идеите за някои подобрения.



Първите дистрибуции

В началото на 1977, Джой слага началотo на първата "Berkeley Software Distribution" (BSD). Тази дистрибуция включвала Pascal, доста остаряла версия на изходните кодове на Pascal, както и редактора ex. През следващата година Джой разпространява близо 30 безплатни копия на дистрибуцията.

С пристигането на ADM-3a терминали, Джой най-накрая има възможност да напише своя редактор vi, един от първите, които позволяват редактиране "директно на екрана". Поради това, че смяната на старата техника с нова не е мигновена, а е продължителен процес, Джой се сблъсква с различни видове терминали. Накрая решава да напише малък интерпретатор за пречертаване на екрана, известен ни като termcap.

В средата на 1978 станало ясно, че софтуерната дистрибуция се нуждае от обновяване. Резултатът от това обновяване бил "Втора Софтуерна дистрибуция от Бъркли", или съкратено 2BSD. В новата дистрибуция влизали подобрен Pascal, редактора vi и termcap за различни терминали. Отново Бил Джой собственоръчно сглобил дистрибуцията, отговарял на телефонните обаждания и систематизирал коментарите за системата. През следващата година близо 75 ленти били разпратени. Въпреки че Джой се прехвърлил да работи върху други проекти, 2BSD дистрибуцията продължила да печели популярност. Окончателната версия 2.11BSD вървяла на стотици PDP-11 в различни краища на света.



VAX Unix

В началото на 1978 професор Ричард Фейтман (Richard Fateman) започнал да търси машина с по-голямо адресно пространство за да може да продължи своята работа по Macsyma (започната на PDP-10). Новообявената VAX-11/780 отговаряла на изискванията и можела да се вмести в бюджета. В началото на VAX вървяла операционната система на DEC - VMS, но факултетът бил привикнал към работата с Unix средата. Така че скоро след пристигането на VAX-а, Фейтман исталирал копие на 32/V - версия на Unix за VAX, написана от Джон Реизър и Том Лондън от Bell Labs.

Въпреки, че 32/V била версия на Version 7 на Unix за VAX, тя не се възползвала от предимствата на VAX хардуера.
Проблемът бил липса на система за управление на виртуалната памет в Unix. За да се справи с проблема, Фейтман помолил професор Доменико Ферари да разучи дали неговата група може да напише такава система за Unix. През януари 1979 системата била написана, повечето от бъговете били отстранени и 32/V била запратена в историята.

Скоро Джой започнал да пренаписва 2BSD софтуера за VAX. Питър Кеслер (Peter Kessler) пренаписал Pascal, а Джой пренаписал редакторите ex и vi, Си-обвивката (csh) плюс множество малки програмки от 2BSD дистрибуцията. През 1979 работата била завършена. Новата дистрибуция имала система за управление на виртуалната памет, стандартните 32/V програмки и допълнения от 2BSD. През декември 1979 Джой разпраща първите (почти) сто копия от 3BSD, първата дистрибуция за VAX от Бъркли.

След 32/V, Bell Labs променя групата, която се занимава с Unix, и се набляга на комерсиалната част. През този период AT&T пускат System III и по-късно System V. С комерсиализацията на Unix, изследователите в Bell Labs вече не можели да допринасят в развитието на Unix. Организацията по изследванията върху Unix била поета от Бъркли.



Поддръжката на DARPA

Междувремено в агенцията по изследвания за отбраната - Defense Advanced Research Projects Agency (DARPA), вървяли дискусии, които щяли да повлияят в цялостното развитие на работата в Бъркли. Един от ранните успехи на DARPA било да свържат в национална мрежа компютрите от всички главни изследователски центрове. При това много от компютърните системи били морално остарели, трябвало да бъдат заменени с нови. Най-тежката част от една такава замяна била пренаписването на изследователския софтуер за новите машини. Освен това пренаписаният софтуер не можело да бъде обменян заради разнообразието от хардуер и операционни системи.

Избирането на един хардуерен производител било неудобно, защото различните изследователски групи се нуждаели от разнообразен хардуер и не искали да разчитат само на един производител. Така се стигнало до решението, че трябва да се унифицира софтуера. След доста дискусии DARPA стигнала до решението, че най-доброто решение е Unix, заради неговата доказана преносимост на различен хардуер.

През есента на 1979 Боб Фарби предложил на DARPA да използва специална подобрена версия на 3BSD, която да бъде разработена в Бъркли. Благодарение на увеличаването на добрата репутацията на 3BSD, Боб Фарби подписал 18-месечен договор с DARPA, който започвал през април 1980. В съответствие с някои от клаузите на договора била създадена група, която била кръстена Computer Systems Research Group (CSRG). Фарби започнал усилено да търси водач на проекта. В този момент обаче Джой трябвало да защити доктурантура. Фарби сметнал, че трябва да остави Джой на спокойствие. Но Джой имал други планове -- предложил на Фарби да оглави проекта по разработването на Unix и след много кратък размисъл кандидатурата му била одобрена.

Проектът бързо набрал скорост. Тонг изготвил диструбуция, която била способна да се справя с по-голям обем инструкции от предишните дистрибуции на Джой. Фарби успял да координира с Боб Гъфи (Bob Guffy) от AT&T и юристите на Бъркли да пуснат дистрибуция на Unix при условия удовлетворяващи всички. Джой включил job control модула на Джим Клуп и прибавил възможности за автоматично рестартиране и поддръжка на последната VAX машина - VAX-11/750. През октомври 1980 г. подобрената дистрибуция, която включвала Pascal компилатор, Lisp системата на Франц Лисп, и подобрена система за обслужване на пощата, е пусната като 4BSD. По време на нейния деветмесечен живот, близо 150 копия били разпространени. Копието се лицензирало за институция (фирма), а не за машина, и това довело до 500 машини използващи дистрибуцията.

Заедно с разпространението на дистрибуцията на Berkeley Unix се появили и критици. Дейвид Каштан (David Kashtan) от изледователския институт на Станфорд описал резултатите от тестовете си на VMS и Berkeley Unix. Тези тестове разкрили сериозни проблеми с Unix системите за VAX. Отлагайки бъдещите си задачи, Джой методично започнал да настройва ядрото. След няколко седмици публикувал опровержение, което доказвало, че тестовете на Каштан могат да дадат също толкова добри резултати на Unix, колкото и на VMS.

Вместо да продължи разпостранението на 4BSD, подобрената система, заедно с добавеният към нея код за автоматична конфигурация на Робърт Елц (Robert Elz), е пусната като 4.1BSD през юни 1981. По време на двугодишното й съществуване около 400 копия са разпространени. Намерението е било да се нарече 5BSD, но са се получили възражения от AT&T за възможно объркване на клиените с комерсиалната дистрибуция на Unix - System V. Поради тази причина колективът от Бъркли се съгласил да промени схемата за именоване, като се променя само цифрата след запетаята, а основното име остане 4BSD.



4.2BSD

С пускането на 4.1BSD повечето от съмненията относно бързодействието на системата затихнали. DARPA останала доволна от резултите досега, и подписва нов двугодишен договор, който осигурявал на Бъркли пет пъти по-голяма субсидия. Половината от парите получил Unix проектът, останалата част била за изследователската дейност във факултета по информатика.

Новите цели били съобразени с нуждите на DARPA. В частност новата система трябвало да включва по-бърза файлова система, която би повишила производителността до нивото на съществуващите дискови технологии, да поддържа процеси с многогигабайтово адресно пространство, да осигури гъвкави средства за комуникация между процесите, които да позволят на изследователите да работят с помощта на разпределни системи, и те биха включили мрежова поддръжка, така че машините, на които се използва, лесно да бъдат част от ARPAnet.

За да подпомага създаването на системата, Дуейн Адамс (Duane Adams), координаторът от Бъркли за DARPA, формирал група известна като "steering committee" за да подпомогне и насочи процеса на разработка и да осигури нуждите на разработчиците. Този комитет се събирал два пъти в годината между април 1981 и юни 1983 . Комитетът включвал Боб Фарби, Бил Джой и Сам Лефлър от Бъркли, Алан Немет (Alan Nemeth) и Роб Гуруйц (Rob Gurwitz) от Болт, Беранек, и Нюман, Денис Ричи от Бел, Кейт Ланц от Станфорд, Рик Рашид, Бел Халстед от MIT, Дуейн Адамс и Боб Бейкър от DARPA и Джери Попек от UCLA. От 1984 г. тези срещи са заменени със събрания, които включвали много повече хора.

Когато Роб Гуруиц бил готов с една от първите си версии на TCP/IP протокола, Джой го интегрирал в системата. По това време станало ясно, че новата система ще трябва да осигурява поддръжка на повече протоколи от стандартите за DARPA. За това те преработили вътрешната структура на софтуера, като изчистили интерфейса, така че да позволява едновременното ползване на повече от един мрежов протокол.

След тази преработка и с вграден TCP/IP протокол, с прототип на IPC средствата, няколко прости приложения са били създадени, за да осигурят достъп до отдалечени комютри. Тези програми, rcp, rsh, rlogin, и rwho, са създадени като временни средства, които трябвало да бъдат заменени с по-съвършени средства (от тук идва и представката "r" -- replace, заменям). Тази система, наречена 4.1a, е пусната само за локално ползване, без намерение да бъде широко разпространявана. Но чрез нелегални копия системата се разпространила масово.

Това издание е било остаряло много преди своето завършване. Но отзивите за него осигурили важна информация, за издаването на "4.2BSD System Manual". В него се набелязвали бъдещите нововъведения и промените, които трябвало да бъдат направени.

Едновремено с разработката на 4.1a е завършена и новата файлова система, и от юни 1982 тя е напълно интегрирана в ядрото на 4.1a. На тази нова система е дадено името 4.1b. Тя е пусната само на няколко компютъра за да бъде тествана, поради нуждата всички файлове да бъдат преобразувани от 4.1a към 4.1b. След като файловата система доказала своята стабилност, Лефлър продължил с разработката като добавил нови системни функции за работа с файловата система. През това време Джой работил над преработката на средствата за комуникация между процесите.

През пролетта на 1982, Джой обявил присъединяването си към Sun Microsystems. През лятото той разделял времето си между Sun и Бъркли, където довършвал поправките си на средствата за комуникация между процесите и реорганизирал ядрото на Uniх, така че да се избегнат хардуерните зависимости. С заминаването на Джой, Лефлър поел отговорността за завършването на проекта. Бил определен краен срок - пролетта на 1983. Като следствие на ограничението във времето, били дадени приоритети. Подобренията на виртуалната памет и на най-сложните части на дизайна за комуникация между процесите са били оставени (а в последствие и изоставени) за сметка на междинно издание, което имало за цел да задържи групата от разработчици. Това издание, наречено 4.1c, е пуснато през април 1983. То е използвано от много производители на хардуер за да подготвят машините си за предстоящата 4.2 версия.

През юни 1983 Боб Фарби предава административния контрол върху CSRG на професор Доменико Ферари и Сюзан Греам. Лефлър продължил с разработването на файловата система, въвел мрежова поддръжка и преработил входно/изходната система за да улесни процеса по инсталация, добавил механизмът за раздаване на квоти от Робърт Елз, обновявил документацията и отстранил грешките от 4.1с. През август 1983 г. новата версия е пусната като 4.2BSD.

Когато Лефлър напуснал Бъркли след завършването на 4.2, той бил заменен от Майк Керълс (Mike Karels). Неговият опит с 2.9BSD PDP-11 софтуерната дистрибуция го правел идеален за новата му работа.

Популярноста на 4.2BSD била изключителна. За 18 месеца повече от 1,000 лиценза са дадени. Плюс това още копия са разпространени и сред ползвателите на предишните дистрибуции. Повечето Unix разпространители предпочели 4.2 версията пред System V на AT&T. Причината била, че System V не притежавала нито мрежови възможности, нито файловата система на Бъркли. 4.2BSD задържала позициите на пазара си само за няколко години, докато нововъведенията били вградени и в System V. Това станало практика, и бъдещи подобрения на BSD продължили да бъдат вграждани в System V.

Край на част 1.


<< GNU операционната система и движението за отворен код [2] | GNU операционната система и движението за отворен код >>