Unix-войны и проблема стандартизации

Свободная система для свободных людей

(обзор истории операционной системы Linux)

(С) Костромин В.А., март 2005 г.

Вряд ли найдется в наши дни хоть один пользователь персонального компьютера (не говоря уж о профессиональных программистах и администраторах), который не слышал бы об операционной системе Linux. Но для большинства пользователей компьютеров и даже для некоторых системных администраторов она все еще остается вещью незнакомой и где-то даже пугающей. Помощь в преодолении этого психологического барьера может оказать знакомство с историей появления и развития этой ОС. К сожалению, на русском языке отсутствует сколь-нибудь полное изложение истории Linux. Некоторые материалы на эту тему имеются в англоязычных источниках в Интернет, но они разбросаны по сети. В настоящей статье предпринимается попытка собрать хотя бы часть этих материалов и по возможности последовательно изложить историю ОС Линукс на русском языке.

Оглавление

  • Что было, когда Linux еще не было
    • Рождение Unix
    • Unix-войны и проблема стандартизации
    • GNU, Free Software и Open Source
    • IBM PC и Microsoft
    • Операционная система MINIX
  • Рождение новой операционной системы
    • Студент из Хельсинки Линус Торвальдс
    • Начало
    • Стадия становления
    • Добровольные помощники
    • Первые дистрибутивы
  • Linux совершенствуется
    • Изменения в личной жизни
    • Дальнейшее развитие ядра
    • Распределение полномочий
    • Tux - эмблема Linux
    • Дистрибутивостроение
    • Стандартизация Linux
  • Linux завоевывает мир
    • Linux на серверах
    • Linux на персональных компьютерах
    • Большие компании и коммерческий Linux
    • Города и страны переходят на Linux
    • Linux на других платформах
    • А Microsoft против!
  • Линукс в России
    • Российские UNIX-ы
    • Первые русифицированные дистрибутивы
    • Проект IPLabs Linux Team
    • Первые статьи и книги на русском
    • Linux в российском Интернете
    • Компания Linux Ink.
    • Компания ASP Linux и ее дистрибутивы
    • Компания ALT Linux
    • Компания ЛинуксЦентр
    • Другие российские фирмы и проекты
    • Практическое использование Linux в России
    • Заключение к разделу о российской истории Linux
  • Авторское право, лицензии и патенты
    • Интеллектуальная собственность и авторское право в сфере программного обеспечения
    • Иски SCO
    • Угроза со стороны патентного законодательства
    • BSD- и другие лицензии
    • Свободное ПО или открытое ПО
  • Феномен Linux
    • Какие факторы обусловили успех Linux?
    • Факторы, сдерживающие распространение Linux
    • Хроника дальнейших событий
  • Ссылки

Что было, когда Linux еще не было

Рождение Unix

Давайте не будем начинать наш обзор с появления первых компьютеров и их операционных систем – так можно забраться слишком далеко. Но о двух операционных системах, Unix и Windows, упомянуть необходимо. Первая из них является прямым предшественником Linux, а вторая – ее постоянным конкурентом. О Windows мы поговорим чуть позже, а пока несколько слов об истории Unix.

История Unix началась в 1969 году в США в фирме Bell Laboratories, дочернем подразделении компании AT&T. В те времена идея разделения времени ЦП еще только разрабатывалась и Bell Laboratories совместно с фирмой General Electric и Массачусетским технологическим институтом с 1965 года занимались созданием операционной системы MULTICS (MULTiplexed Information and Computing System) для ЭВМ GE 645. Эта система должна была обеспечить одновременный доступ к ресурсам ЭВМ большого количества пользователей при высокой скорости вычислений и совместном использовании данных. И это при мощности центрального процессора только чуть большей, чем у PC на основе Intel-386! Но в то время программисты умели писать маленькие по объему, но очень эффективные программы.

Хотя первая версия системы Multics и была запущена в 1969 году, она не обеспечивала достижения поставленных перед нею амбициозных целей, поэтому фирма Bell Laboratories и GE прекратили разработку проекта [М.Бах]. Впрочем, МТИ продолжал разработку системы MULTICS и даже продал около 80 инсталляций этой системы, причем некоторые из них использовались вплоть до начала 90-х годов. Несмотря на то, что MULTICS не принесла разработчикам коммерческого успеха, этот проект оказал огромное влияние на последующее развитие операционных систем вообще и послужил прообразом для операционной системы Unix.

Рис. 1. К.Томпсон и Д.Ричи.

По окончании работы над проектом Multics сотрудники Исследовательского центра по информатике фирмы Bell Laboratories остались без "достаточно интерактивного вычислительного средства". В начале лета 1969 года группа молодых сотрудников Bell Labs, участвовавших в разработке MULTICS, Руд Кенедей (Rudd Canaday), Дуг Мак-Илрой (Doug McIlroy), Дэннис Ричи (Dennis Ritchie) и Кен Томпсон (Ken Thompson) подробно обсудили, что можно сделать для спасения некоторых идей, связанных с проектом MULTICS [R.Hauben]. Они набросали на бумаге проект файловой системы, получивший позднее дальнейшее развитие в ранней версии файловой системы UNIX. Томпсоном были написаны программы, имитирующие поведение предложенной файловой системы в режиме подкачки данных по запросу, им было даже создано простейшее ядро операционной системы для ЭВМ GE 645. В то же время он написал на Фортране игровую программу "Space Travel" для системы GECOS, которую после прекращения работ над проектом MULTICS стало не на чем запускать. К счастью, Томпсон обнаружил мало используемый компьютер PDP-7. Перерабатывая свою программу для PDP-7, Томпсон изучил возможности машины и совместно с Денисом Ричи (Dennis Ritchie) разработал свою систему управления процессами, свою версию файловой системы и небольшой набор утилит. В конце концов новая система не нуждалась больше в поддержке другой операционной среды. Вспомогательные утилиты, которые Томпсон и Ричи написали для обеспечения возможности запуска игры на PDP-7, стали ядром Unix, хотя это название не использовалось до 1970 года. Питер Нейман (Peter Neumann) по аналогии с MULTICS назвал новую ОС “UNICS” (UNiplexed Information and Computing Service). Неизвестно, кто изменил написание названия системы на UNIX, затем и на более привычное Unix.

Рис. 2. Мини-компьютер PDP-7. 18-разрядный компьютер. Цикл обращения к памяти - 1.75 микросекунды, время выполнения операции сложения - 4 микросекунды. Снабжен клавиатурой, принтером и ленточным дисководом DECtape (type 555).

Первоначально новая ОС была написана на языке ассемблера для PDP-7 (в те времена все ОС писались для конкретных компьютеров на машино-зависимых языках). Для того, чтобы достичь переносимости и независимости операционной системы от архитектуры конкретной аппаратной платформы, Томпсон разработал специальный язык программирования, который он назвал языком B ("Би"). На этом языке он хотел переписать большую часть ОС. Это покажется еще более удивительным, если сказать, что суммарный объем RAM и жесткого диска у PDP-7 был меньше, чем объем оперативной пямяти сегодняшнего сотового телефона; большие диски в те дни имели объем менее мегабайта. Язык B позже был переработан Денисом Ричи в язык программирования C ("Си").

Работы по созданию Unix велись фактически без ведома руководства фирмы Bell Laboratories, под предлогом (или под прикрытием) разработки системы обработки текстов для патентного департамента AT&T. Томпсон написал строчный редактор (названный ed), Ричи создал программу roff, основанную на программе runoff Дж. Салцера (J. Saltzer). Отдел патентов компании Bell Labs был удовлетворен. Разработка этого проекта позволила оправдать приобретение более совершенного компьютера - PDP-11, для которого система была переписана заново. Вторая версия Unix, на этот раз для компьютера PDP-11, появилась в 1971 году и была уже большей частью написана на C. Это было одно из тех радикальных решений, которые превратили Unix в открытую систему, каковой она сегодня является. До сих пор большинство операционных систем пишется на этом языке (за исключением тех частей, которые существенно зависят от аппаратуры и пишутся на языке ассемблера для конкретного процессора). Правда, это уже не тот самый диалект языка C, а его более современная модификация, ANSI C.

Разработка собственно операционной системы велась, практически, на чистом энтузиазме. Как позже писал один из участников этой работы, Дуг Мак-Илрой: “ Готовность прислушаться к мнению окружающих и желание заслужить уважение в коллективе приводили к тому, что огромное количество написанного кода могло быть переписано или просто выброшено, если появлялись лучшие или более глубокие идеи. Профессиональное соперничество и утаивание своих достижений практически не встречались: было так много хороших событий, что ни у кого не было стремления единолично завладеть какой-то инновацией”.

Между 1970 и 1972 годами систему улучшали, в нее добавили много новых функций. Но использование системы Unix было ограничено подразделениями компании AT&T в Нью-Джерси до тех пор, пока Нейл Граундвотер (Neil Groundwater) не установил систему Unix в компании New York Telephone в Манхеттене, использовав при этом систему PDP-11/20, 56 Кбайт оперативной памяти и два жестких диска RK11/05 объемом 2,4 Мбайт. В течение следующего года все больше и больше членов вычислительного сообщества узнавали об операционной системе Unix, и многие запрашивали данную систему.

Даже на ранних стадиях своего развития операционная система Unix обеспечивала значительно более удобную среду программирования, чем те, которые существовали на любых известных в ту пору мейнфреймах. Она была первой системой, в которой программист мог сидеть непосредственно за машиной, и создавать программы "на лету", исследуя разные возможности и тестируя варианты во время компиляции. Кроме того, в ней с самого начала были заложены средства коммуникации. Ричи писал: “ Мы хотели сохранить не только хорошую среду программирования, в которой можно было решать задачи, но и систему, вокруг которой могло сформироваться товарищество. Мы по опыту знали, что сущностью совместного использования компьютера (the essence of communal computing) является не только замена перфокарточного ввода на терминал, но и предоставление средств и стимулов для более тесного общения, реализуемого средствами удаленного доступа к машине, работающей в режиме разделения времени.” Идея о том, что компьютер должен рассматриваться не только как простое логическое устройство, но и как ядро некоего сообщества, носилась в воздухе: примерно в это же время (в 1969 году) была изобретена ARPANET - прямой предшественник нынешней Internet.

В феврале 1973 года существовало 16 установленных систем Unix. В октябре того же года Д. Ричи и К. Томпсон организовали первую презентацию "Операционной системы Unix" на симпозиуме ACM (Association for Computing Machinery) по операционным системам, после чего в течение шести месяцев число установленных систем Unix утроилось.

В июле 1974 года в журнале Communications of the ACM (CACM) появилась первая публикация о Unix. В ней Ричи и Томпсон описывали беспрецедентно простое устройство Unix и сообщали о более чем шестистах инсталляциях этой системы. Все эти инсталляции были осуществлены на компьютеры, которые считались слабыми даже по стандартам тех дней.

В мае 1974, еще до публикации статьи, Лоу Кац (Lou Kats), Мел Ференц (Mel Ferentz) и Рейдар Бонхолт (Reidar Bornholt) организовали первую встречу пользователей системы Unix в медицинском колледже Колумбийского университета (Columbia University's College of Physicians and Surgeons). На встрече присутствовало примерно двадцать пять человек из дюжины учреждений. Вторую встречу, в июне 1975 года, посетило уже свыше 40 человек из 20 учреждений. Использование системы Unix постоянно росло, несмотря на отсутствие интереса и поддержки со стороны компании AT&T.

В 1971 году Дуг Мак-Илрой настоял на том, чтобы Д. Ричи и К. Томпсон написали руководство программиста. Поскольку система Unix постоянно изменялась, версии этой системы стали называть именно по этим руководствам пользователя: первое издание - 3 ноября 1971 года (V1), второе издание - 12 июня 1972 года (V2), третье издание - февраль 1973 года (V3), четвертое издание - ноябрь 1973 года (V4), пятое издание - июнь 1974 года (V5), шестое издание - май 1975 года (V6), седьмое издание - январь 1979 года (V7), восьмое издание - февраль 1985 года, девятое издание - сентябрь 1986 года и десятое издание - октябрь 1989 года.

После статьи в CACM исследовательские лаборатории и университеты по всему миру проявили интерес к Unix. Но корпорации AT&T (которая был родительской организацией по отношению к Bell Labs) на основании антитрестовского законодательства запрещалось заниматься компьютерным бизнесом. Поэтому Unix не могла продаваться; более того, Bell Labs должна была предоставить лицензию на свои не-телефонные технологии любому, кто ее об этом просил. Поэтому Кен Томпсон в ответ на поступающие запросы спокойно рассылал адресатам ленты и наборы дисков со своей операционной системой. В результате многие университеты внесли свой вклад в развитие Unix. В Йельском университете студенты и преподаватели модифицировали оболочку (shell), в университете Пэрдью (Purdue) добились существенного увеличения производительности, создав версию Unix, которая поддерживала большее число пользователей. В том же университете создали одну из первых компьютерных сетей на основе Unix. В Калифорнийском университете в Беркли студенты создали новую оболочку и множество небольших утилит.

Калифорнийский университет в Беркли вообще сыграл особую роль в развитии Unix. Профессор Роберт Фабри (Robert Fabry) из этого университета принимал участие в программе симпозиума SOSP (Symposium on Operating Systems Principles) и был очарован презентацией Томпсона. Он собрал достаточно средств для приобретения PDP-11/45 и в январе 1974 года установил систему Unix. В 1975 году тот же университет заказывает PDP-11/70. В 1974-75 учебном году Кен Томпсон во время своего годичного отпуска читает курс лекций в Калифорнийском университете. Здесь тогда работали два аспиранта - Чак Хели (Chuck Haley) и Билл Джой (Bill Joy). Они были очарованы придуманной Томпсоном модификацией языка Pascal; Pascal Томпсона мог работать в операционной системе Unix. Джой написал строчный редактор, который был "добрее к пользователю", чем редактор ed. Редактор Джоя получил название ex, и стал прообразом очень популярного впоследствии экранного редактора vi.

В начале 1978 года, после нескольких заявок, полученных отделом разработок университета, Джой начал работу по созданию собственной версии Unix, которая получила название BSD (Berkeley Software Distribution). Первая лента (360 метров, 800 бит на дюйм, стоимостью примерно $50), содержала систему Pascal для Unix и текстовый редактор ex; было распространено около 30 копий. До конца 1978 года распространялся другой пакет - 2BSD; отправлено около 75 копий. К 1980 году Беркли был центром небольшой сети университетов, активно развивающих свой вариант Unix. Идеи и части кода из Беркли-Unix (включая редактор vi) были затем использованы и в разработках Bell Labs. Приблизительно в то же время компания Interactive Systems, организованная Питером Вэйнером (Peter Weiner) и Гейнцем Ликлама (Hienz Lycklama), выпускает первую коммерческую систему Unix, а компания Whitesmiths (P. J. Plauger) создает первый клон системы Unix, названный Idris.

В 1979 году появилась "последняя настоящая Unix", имевшая номер V7. Она включала команды awk, make и uucp; полные компиляторы языка С, сделанные Б. Керниганом и Д. Ричи; оболочку Bourne; команды find и cpio и многое другое. При этом размер ядра составлял около 40 Кбайт! Версия 7 также дала начало первой 32-разрядной версии системы Unix и демонстрации переносимости: Дэннис Ричи и Стив Джонсон (Steve Johnson) из компании AT&T перенесли ее в систему Interdata, а группа программистов из австралийского университета University of Wollongong перенесла ее на систему Interdata 8.

Правда, производительность версии 7 была хуже, чем в системе шестого издания. Но в университете Беркли (и других местах в США) и в Австралии занялись решением этой проблемы, и в январе 1982 года Том Феррин (Tom Ferrin) объявил о многочисленных усовершенствованиях и выпуске в свет модели 2.8.1BSD.

В 1980 году агентству DARPA (the Defense Advanced Research Projects Agency) потребовалась команда разработчиков для реализации только что разработанного стека протоколов TCP/IP под Unix на компьютере VAX. Компьютеры PDP-10, на которых в то время базировалась сеть ARPANET, уже исчерпали свой ресурс, и было ясно, что фирма DEC будет вынуждена перейти на VAX. DARPA рассматривало возможность заключить контракт с DEC на реализацию TCP/IP, но отказалось от этой идеи, потому что было убеждено, что DEC не сможет пойти на внесение требуемых изменений в свою проприетарную операционную систему VAX/VMS. Поэтому DARPA выбрала в качестве платформы Berkeley Unix — исключительно по той причине, что ее исходный код был доступен и не перегружен. Исследовательская группа по компьютерным наукам университета в Беркли (Berkeley's Computer Science Research Group) оказалась в нужном месте в нужное время с самым лучшим набором инструментов для разработки; в результате произошел самый значительный поворот в истории Unix с момента ее возникновения.

Когда систему Unix признали самой предпочтительной для новой Internet, это усилило ее использование. Компания AT&T произвела на свет операционную систему Programmer's Workbench (рабочее место программиста), а затем System III Unix. Тем временем из Беркли начинают распространяться версии 4BSD (октябрь 1980); 4.1BSD (июнь 1981); 4.1а, 4.1b и 4.1c (1982-1983); 4.2BSD (сентябрь 1983). Эта последняя версия была действительно сильно переработанной системой. Она включала работу с сетью (протокол TCP/IP), более быструю файловую систему и возможность использования сигналов.

До тех пор, пока реализация протоколов TCP/IP не появилась в 1983 году в версии 4.2BSD, Unix имел очень слабую сетевую поддержку. Ранние эксперименты с Ethernet были неудовлетворительными. Все изменилось после реализации стека протоколов TCP/IP. Только после того, как ARPANET и Unix нашли друг друга, начали реализовываться идеи Д.Ричи о том, что компьютер должен быть не только вычислительной установкой, но средством общения. До применения Unix в ARPANET круг этого общения ограничивался пользователями одного компьютерного центра. После реализации TCP/IP горизонты общения существенно расширились.

К 1983 году машины VAX под управлением Unix заняли доминирующее положение среди ЭВМ, подключенных к Интернет. Это положение они занимали вплоть до тех пор, пока не были потеснены рабочими станциями от Sun.

Unix-войны и проблема стандартизации

Первой компанией, которая сделала Unix предметом своего бизнеса, была фирма Santa Cruz Operation (SCO), основанная в 1979 году Дугом и Ларри Митчелами (Doug and Larry Michels) как консультационная компания по Unix. В 1982 году была основана компания Sun Microsystems (одним из основателей которой был Билл Джой), которая установила Unix от Беркли на аппаратную платформу, разработанную в Стенфорде, и положила начало производству так называемых рабочих станций. В том же 1982 году появилась IRIX от SGI. Sun уже добилась существенных успехов на рынке, когда в 1983 году с корпорации AT&T был снят установленный в 1958 году запрет заниматься компьютерным бизнесом. AT&T стремительно занялась коммерциализацией Unix версии System V от Bell Labs. В 1983 году вышла также SCO XENIX - первый коммерческий Unix на Intel-архитектуре (первоначально разработанная в Microsoft, затем проданная SCO). В 1986 году появилась операционная система HP-UX 1.0 (на базе System III) от Hewlett-Packard, в 1990 г. на рынок Unix-систем вышли IBM с AIX и Apple с A/UX.

Именно появление коммерческих реализаций Unix привело к тому, что разразились так называемые Unix-войны. Каждая из фирм в стремлении добиться превосходства на рынке включала в свою систему какие-то особенности, собственные доработки и усовершенствования, иногда даже с прямой целью обособить свою систему от других, представленных на рынке. Фирмы-разработчики в своих усилиях добиться преимущества над конкурентами вносили изменения даже в интерфейс прикладного программирования API (Applications Programmer's Interface), - спецификацию набора функций, которую должны выдержать разработчики программного обеспечения для совместимости своих программ с операционной системой. Это еще больше усиливало несовместимость разных версий Unix и приводило к несовместимости программного обеспечения, разработанного разными (в том числе независимыми) поставщиками.

Но гораздо худшим следствием войн между разными версиями Unix было то, что прекратился свободный обмен исходными кодами, который так способствовал быстрому совершенствованию Unix на ранних этапах ее развития. Не зная другой модели извлечения прибыли из программного обеспечения, кроме сохранения его в тайне и полного контроля над разработкой коммерческого продукта, AT&T жестко запрещала распространение исходных кодов. Угроза подвергнуться юридическому преследованию за незаконное распространение магнитных лент с Unix мало кого привлекала. Поток новых идей из университетов иссяк.

Чтобы преодолеть эту проблему были предприняты несколько попыток стандартизации Unix. Три основных проекта стандартизации были SVID (System V Interface Definition), POSIX (первоначально "/usr/group") и X/Open (первоначально BISON).

Первые серьезные усилия по стандартизации версий API, разработанных для System V и Berkeley, были предприняты в 1983 году в рамках стандарта /usr/group. На его основе некоммерческое объединение IEEE (Institute of Electrical and Electronic Engineers, существующее еще с 1884 г.) разработало стандарт POSIX. Первая версия POSIX появилась в 1990 г. Этот стандарт описывает набор системных вызовов, составленный на основе наборов из BSD и SVR3 (System V Release 3). Все более поздние стандарты Unix включают в свой состав POSIX, и все последующие версии Unix придерживаются этого стандарта. Единственное большое дополнение, которое позже появилось в ядре Unix, были сокеты, пришедшие из BSD.

Консорциум X/Open (позже Open Group), созданный в 1984 г., - еще одна попытка достичь совместимости между участвующими в данном проекте реализациями Unix на уровне исходных кодов. Разработка проекта X/Open началась в Европе, хотя позже к нему присоединились и американские компании (включая AT&T).

В 1988 году AT&T приобрела 20% акций Sun. Эти две компании, лидеры на рынке Unix-систем, выпустили общую версию системы, которая получила название Unix System V Release 4. В. Но к этому моменту появилось еще несколько поставщиков Unix - IBM, DEC, Hewlett Packard и другие. Они начинали работу, как правило, с версии AT&T, приобретенной по лицензии; но затем каждый поставщик добавлял свои уникальные функции с целью обеспечить конкурентное преимущество. Новые поставщики не пожелали мириться с доминированием альянса AT&T/Sun. Они выдвинули лозунг "открытых систем" и создали организацию Open Software Foundation. Ее версия Unix, OSF/1, появившаяся в 1990 году, предлагалась как стандартная, но была явно нацелена против AT&T и Sun. Последние, в свою очередь, создали другую организацию для разработки стандартного варианта системы - Unix International.

В 1991 году компания AT&T передала все права на систему Unix в собственную лабораторию Unix System Laboratories (USL), которую в 1993 году купила компания Novell. А в 1995 году Novell продала права на систему Unix компании Santa Cruz Operation (SCO).

Последней версией Unix, разработанной университетом Беркли, была версия 4.4BSD (июнь 1993). После судебного процесса, затеянного AT&T, университетские разработки системы Unix были прекращены, и последующее развитие BSD Unix происходит теперь от компании BSDI (Berkeley Software Design, Inc). Но зато в том же 1993 появилась ОС FreeBSD - свободная от проприетарного кода реализация Unix.

"Войны юниксов" продолжались до 1993 года. На рынке предлагалось множество систем, несовместимых между собой. Можно было в какой-то мере говорить о двух стандартах, предлагаемых OSF/1 и Unix International, но между системами этих стандартов о совместимости не могло быть и речи. За это время произошли ключевые события на рынке. Был выпущен процессор Intel 80386; шло активное распространение дешевых PC-совместимых машин, которым суждено было практически полностью вытеснить рабочие станции. Из-за "войн" Unix-системы в значительной мере упустили свой шанс на рынке.

В 1993 году "войны юниксов" официально закончились. В немалой степени этому способствовал уход с рынка Unix компании AT&T. Вскоре все поставщики признали важность стандартизации и был разработан достаточно общий стандарт Single UNIX Specification (SUS). Unix к этому времени прочно занимала позиции на рабочих станциях и сетевых серверах. Особенно сильны были его позиции на компьютерах, построенных на основе RISC-процессоров. Но Unix-системы не смогли стать основными для массового компьютерного рынка. Операционная система Windows уже полностью доминировала на персональных компьютерах и активно вытесняла рабочие станции с Unix. Unix еще какое-то время сохраняла свои позиции на серверах, но и тут уже ее теснила Microsoft.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: