История семейства операционных систем UNIX/Linux

Изучение истории развития результатов творчества всегда интересно. Показательным в этом отношении является пример такого сложного и динамичного технологического объекта, как операционные системы. Подобные программные комплексы создаются годами и включают миллионы строк исходного кода. Они постоянно изменяются, а для успешной конкуренции их разработчикам приходится пополнять свои продукты новыми возможностями. Еще один важный момент из жизни операционных систем заключается в том, что аппаратура, для которой создаются эти программы, постоянно модернизируется и "обрастает" новыми функциями.

Предшественниками современных операционных систем можно назвать системы пакетной обработки, когда выполняемые задания вводились для выполнения поочередно. Сначала это исполнялось вручную, а затем появились средства автоматизации операций. Так возникли предпосылки разработки программных средств управления набором (пакетом) заданий. Важной вехой в этом развитии стал 1964 год, когда IBM анонсировала, а затем и выпустила OS/360. Естественным развитием идей более эффективного использования возможностей вычислительных машин стало появление систем разделения времени. На странице Википедии "Список операционных систем" приводится более чем 200 наименований, и они классифицируются по 9-ти типам. Среди них есть и такие, которые уже не существуют (вернее, уже не поддерживаются разработчиками). Там приводится даже более десятка вымышленных систем, упоминаемых в книгах, фильмах, шутках и т.д. На этом же интернет-ресурсе страница "Хронология операционных систем" начинается с BESYS (Bell System, 1967 год). Но в связи с этим следует упомянуть еще и операционную систему для ЭВМ типа "мэйнфрейм", разработанную для модели IBM 704 в 1954 году. Ее создатель Жене Амдаль стал основателем компании Amdahl – мощного конкурента IBM на рынке мэйнфреймов [20].

Многие из представленных на странице "Хронология операционных систем" программных продуктов относятся к двум классам: проприетарные и свободные. Первые получили название от английского proprietary – "собственнические", т.е. относятся к программному обеспечению, которое имеет собственника. Такое программное обеспечение находится не в "общественном использовании", а в монопольном.

В этой части монографии анализируются пути развития двух представителей операционных систем: семейства UNIX/Linux и продуктов фирмы Microsoft. Первое из них имеет как проприетарные, так и свободно распространяемые версии. Вторые же являются антагонистом свободных программ.

Семейство операционных систем UNIX уникально по нескольким причинам [2, 14]:

  • оно является долгожителем и, претерпев многочисленные изменения, "завоевало" разнообразную аппаратуру;
  • при переходе UNIX на другие аппаратные платформы возникали интересные задачи, решение которых принесло много нового в компьютерные технологии;
  • на одной из версий UNIX были реализованы протоколы обмена данными в компьютерных сетях с разной аппаратной платформой, что позволяет считать UNIX предвестницей сегодняшнего Интернета, а также основой для широкого развития локальных сетей;
  • авторы ее первых версий создали язык программирования высокого уровня С, который можно назвать (с учетом его последующего совершенствования) самым распространенным среди разработчиков;
  • использование этого языка дало возможность принять участие в разработке операционной системы тысячам специалистов;
  • появившиеся в семействе UNIX свободно распространяемые операционные системы внесли много нового в представление о том, как разрабатывать и распространять программы для компьютеров.

Очень большое влияние на все стороны информационных технологий оказала и продолжает оказывать операционная система Linux, первоначально являвшаяся лишь вариантом UNIX. Она завоевала широкую популярность и сегодня перенесена на разные аппаратные платформы, как и ее предшественница. В дальнейшем будем использовать термин "операционные системы семейства UNIX/Linux". Отметим, что часто Linux отделяют от UNIX, сравнивая достижения этой операционной системы со всеми остальными конкретными версиями этого семейства.

Рассмотрение истории и генеалогии UNIX/Linux интересно само по себе, но ее знание необходимо специалистам в области компьютерных технологий. Вот, например, что пишет по этому поводу автор книги, в которую вошли две программы подготовки системных администраторов операционной системы Solaris [7]: "Как системный администратор Вы должны понимать историю операционной системы UNIX – откуда она произошла, как создавалась и чего достигла на сегодняшний день". Но в материале данной книги поднимаются и другие вопросы, что делает ее полезной и другим специалистам. В первую очередь, это – разработчики программного обеспечения.

Имя UNIX возникло позже и имеет интересную историю. А началось с МULTICS (МULTiplexed Information аnd Computing Service), проекта, ориентированного на распространенные в 60-е и 70-е годы прошлого века компьютеры класса "мейнфрейм" (mainframe). Его авторы первоначально обратились к IBM, но фирма не согласилась на затраты. Разработки МULTICS велись для вычислительной машины GE-645 (Gеnегаl Еlесtric). Для создания операционной системы в середине 60-х годов прошлого века объединились три фирмы: Gеnегаl Еlесtric Соmраnу, Massachusetts Institute of Technology (МIТ, Массачусетский технологический институт) и American Telephone and Telegraph (АТ&Т). Последняя была представлена в проекте несколькими сотрудниками подразделения Веll Laboratories. Среди них были Кен Томпсон (Kеn Tompson) и Дэннис Ритчи (Dennis M. Ritchie). По завершении проекта должна была появиться многозадачная, многопользовательская операционная система [13, 14].

Работа над программным комплексом МULTICS затянулась, и сотрудники Веll Labs вышли из проекта. Но в отличие от других Томсон продолжил работу по написанию операционной системы в своей компании. Позже к нему присоединился сначала Ритчи, а затем и другие сотрудники отдела. Можно сказать, что UNIX начиналась группой программистов, но основную роль среди разработчиков первых версий играл Кен Томпсон. Сначала, правда, в ближайшем окружении Кена родилось другое название системы – UNICS (Uniplexed Information and Computing System). Оно напоминало об участии в проекте МULTICS, но не ориентировалось на многопользовательскую систему (МULTICS – МULTiplexed, но UNICS – Uniplexed). В скором времени UNICS превратилось в UNIX.

На интернет-ресурсах и в книгах [21, 22] приводится характеристика Кена Томпсона как одного из выдающихся программистов США. По адресу [23] можно найти перевод интересной статьи, в которой Кен Томпсон дает интервью журналу Computer, напечатанное в журнале "Открытые Системы". Персональная страничка Кена Томпсона находится по адресу [24]. На интернет-ресурсе [25] дана характеристика Деннису Ритчи. Персональная страничка Денниса Ритчи находится по адресу [26]. Интересным, на наш взгляд, является оценка вклада двух выдающихся деятелей компьютерного мира по адресу [27].

Вернемся к непосредственному рассмотрению истории создания операционной системы UNIX. Первые ее версии были написаны на языке программирования ассемблер для компьютеров PDP [2, 14]. Она содержала подсистемы управления процессами и файлами, а также небольшой набор утилит.

В эти годы Томпсон работал над транслятором для FORTRAN’а. Но у него получился новый язык программирования B. Последний был интерпретатором, и, как следствие этого, не очень эффективным. Переработав его, Деннис Ритчи создал язык C, транслирующий исходный текст в машинный код, что повысило эффективность разрабатываемых программ [14]. Этот язык программирования занимает промежуточное положение между языком, близким к машинным командам и позволяющим разрабатывать "быстрые" программы, и языком программирования высокого уровня (более удобным в использовании).

Приведем информацию из книги [28], описывающую, как появился язык программирования С. "Что это значит на самом деле, что скрывается за этими немного трафаретными словами: язык С разработан американским ученым Деннисом Ритчи? В действительности это означает, что в 1970 г. Денном Ритчи был изобретен и реализован новый язык С. Ему суждено было большое будущее. Как это произошло? Язык C использует многие важные концепции и конструкции двух предшествовавших ему языков BCPL и B, а также добавляет типы данных и другие свойства".

Язык BCPL разработан в 1967 году Мартином Ричардом как язык написания компиляторов программного обеспечения операционных систем. Автором языка B был Кен Томпсон – выдающийся программист. Он предусмотрел много возможностей в языке B и использовал его в 1970 году для создания одной из ранних версий операционной системы UNIX в Bell Laboratories на компьютере фирмы DEC PDP-7. Оба упомянутых языка – BCPL и B – были "нетипичными" языками программирования. Так, например, при обработке элемента данных целого или действительного типа значительная часть работы все еще падала на плечи программиста. Язык C приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые операционные системы написаны на С или на С++.

Возможно, UNIX так и не развилась бы, если бы ей не нашлось реального применения. Но в 1971 году в патентном отделе Bell была установлена именно она. Система стала решать реальные задачи для пользователей, а не ее разработчиков. Она была переписана на более мощный компьютер PDP 11. Со временем UNIX стала распространяться и в другие отделы Bell Labs [14]. Появление первых версий системы сопровождалось выпуском документации с соответствующим номером. Они получили название "редакции" (Edition).

Начиная с 1971 года таких редакций было выпущено 10, а последняя датируется 1989 годом. Семь первых из них были разработаны в Веll Labs. В книге [9] отмечены некоторые важные черты таких версий. В таблице после названия утилит в круглых скобках приводится номер, позволяющий точнее и быстрее найти информацию о ней (номер раздела стандартной для UNIX системы помощи man).

Таблица 2.1. Характеристика редакций UNIX AT&T
№ редакции Год выпуска Краткая характеристика
Первая версия UNIX, написанная на ассемблере для РDР-11. Включала компилятор В и много известных команд и утилит, в том числе cat(1), chdir(1), chmod(1), cp(1), ed(1), find(1), mail(1), mkdir(1), mkfs(1М), mount(1М), mv(1), rm(1), rmdir(1), w(1), who(1). В основном использовалась как инструментальное средство обработки текстов для патентного отдела
В системе появилась команда сс(1), запускавшая компилятор С. Число установленных систем достигло 16
Первая система, в которой ядро написано на языке высокого уровня С
Первая версия системы, доступная за пределами Веll Labs. Система полностью переписана на языке С. С этого времени начинается появление новых версий, разработанных за пределами Веll Labs, и рост популярности UNIX. В частности, эта версия системы была установлена Томпсоном в Калифорнийском университете в Беркли, и на ее основе вскоре была выпущена первая версия BSD (Berkеleу Software Distribution) UNIX
Эта версия включала командный интерпретатор Воurne Shell и компилятор С от Кернигана и Ритчи. Ядро было переписано для упрощения переносимости системы на другие платформы. Лицензия на эту версию была куплена фирмой Мicrosoft, которая разработала на ее базе операционную систему Xenix

Обратим внимание на то, что операционная система с самой первой версии содержит команды обслуживания файловой системы с каталогами (mkdir, rmdir, chdir), многих пользователей (w, who), а также средства обмена информацией между последними (mail). Утилита mount позволяет включать в систему (монтировать) внешние носители информации. Эти команды "живут" и в современных версиях UNIX. Также обратите внимание, что с 1971 года в системе присутствуют средства работы с текстом. В частности, кроме редактора ed была разработана утилита форматирования текстов roff. Ее аналоги также используются и поныне.

В соответствии с законами США фирма AT&T, подразделением которой была Bell Labs, не имела права продавать программное обеспечение. Но с 1974 года система в виде исходных текстов стала передаваться разным организациям, в том числе университетам. Во время своего академического отпуска 1976 года Томпсон принял участие в проводимых в университете г. Беркли исследованиях по разработке UNIX. В этом ему активно помогали Билл Джой (Bill Joy) и Чак Халей (Chack Haley) [14].

Джой сформировал собственный дистрибутив UNIX, названный BSD (Berkeley Software Distribution – дистрибутив программного обеспечения Беркли). С его именем связано появление текстового редактора vi, командного интерпретатора c (она выполняла функции оболочки операционной системы, а не компилятора языка программирования), использование виртуальной памяти (позволяющей загружать программы большего размера, чем свободная физическая память). Позже он стал одним из основателей Sun Microsystems, ныне одной из крупнейших компьютерных фирм [7, 15].

Распространяемая в виде исходных текстов UNIX стала быстро завоевывать популярность. Многие компьютерные фирмы начали разрабатывать свои версии этой операционной системы. Например, в 1977 году было уже более 500 работающих экземпляров UNIX [14].

Важным в истории UNIX является 1980 год, когда фирма BBN (Bolt, Berenek и Newman) подписала контракт с DARPA (Department of Advanced Resparch Projects Agency – Управление перспективных исследований и разработок, являющееся подразделением Министерства обороны США) на разработку и реализацию протоколов TCP/IP в BSD UNIX. Это можно считать началом разработок, явившихся предвестником технологий, которые приняты в Интернете и сегодня. Версия системы, поддерживающая TCP/IP, также способствовала широкому распространению локальных сетей [14].

Популярность UNIX, поддержка передовых технологий, простота переноса на разные аппаратные платформы привели к тому, что создатели разных вариантов операционной системы начали вести настоящую конкурентную борьбу. В 1988 году фирмы AT&T и Sun объединились для разработки новой системы. В противовес этому несколько крупных фирм (IBM, DEC, HP и другие) основали альтернативный проект, назвав его OSF (Open Software Foundation). В результате появилась ОС с названием OSF/1 [16].

В 1991 году финский студент Линус Торвальдс (Linus Tordvalds) написал первую версию операционной системы, названной Linux и распространяемой бесплатно. Тогда она представляла собой вариант UNIX для компьютеров IBM PC, но сегодня перенесена на многие аппаратные платформы. Свою разработку он начал будучи студентом, изучая учебные курсы по программированию на С и UNIX. Он занимался, используя операционную систему MINIX, созданную Эндрю С. Танэнбаумом [17]. Такая система была описана в книге "Проектирование и реализация операционных систем". Она представляла собой миниатюрную UNIX-систему для IBM PC. Студента просто захватила концепция UNIX,0 год, когда фирма BBN (Bolt, Berenek и Newman) подписала контракт с DARPA (Department of Advanced Resparch Projects Agency – Управление перспективных исследований и разработок, являющееся подразделением Министерства обороны США) на разработку и реализацию протоколов TCP/IP в BSD UNIX. Это можно считать началом разработок, явившихся предвестником технологий, которые приняты в Интернете и сегодня. Версия системы, поддерживающая TCP/IP, также способствовала широкому распространению локальных сетей [14].

Популярность UNIX, поддержка передовых технологий, простота переноса на разные аппаратные платформы привели к тому, что создатели разных вариантов операционной системы начали вести настоящую конкурентную борьбу. В 1988 году фирмы AT&T и Sun объединились для разработки новой системы. В противовес этому несколько крупных фирм (IBM, DEC, HP и другие) основали альтернативный проект, назвав его OSF (Open Software Foundation). В результате появилась ОС с названием OSF/1 [16].

В 1991 году финский студент Линус Торвальдс (Linus Tordvalds) написал первую версию операционной системы, названной Linux и распространяемой бесплатно. Тогда она представляла собой вариант UNIX для компьютеров IBM PC, но сегодня перенесена на многие аппаратные платформы. Свою разработку он начал будучи студентом, изучая учебные курсы по программированию на С и UNIX. Он занимался, используя операционную систему MINIX, созданную Эндрю С. Танэнбаумом [17]. Такая система была описана в книге "Проектирование и реализация операционных систем". Она представляла собой миниатюрную UNIX-систему для IBM PC. Студента просто захватила концепция UNIX, ее простота и мощь. Свои разработки он обсуждал в Интернете со многими программистами. Можно сказать, что Linux является продуктом программистов всего мира, но руководящую роль в этом играет один человек – Линус Торвальдс.

Приведем по книге [15] абзац, относящийся к Linux. "Операционная система Linux – работа не одного человека. Линус Торвальдс – первоначальный архитектор – ее отец, если хотите. Возможно, самое большое проявление гения Линуса Торвальдса лежит в умении организовать совместную работу. Без оплаты труда, только ради удовольствия, он смог привлечь людей во всем мире к работе над не вполне обычным программным продуктом".

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

Будучи не первой системой подобного класса, Linux быстро завоевала популярность, потеснив коммерческие операционные системы. Сам Торвальдс до сих пор занимается только основой системы – ядром. Доводят ее до пользователей фирмы, выпускающие инсталляторы. Первый имел имя SLS. Но успешно распространяемый и называемый старейшим был создан фирмой Slackware в 1993 году [8]. Версия Linux, поддерживающая графический интерфейс, была разработана в 1992 году. Такой режим стал возможным благодаря усилиям, прежде всего, Ореста Зборовски (Orest Zborowski)[17].