Литвек - электронная библиотека >> Хакер >> Околокомпьютерная литература >> Спецвыпуск журнала «Хакер» #47, октябрь 2004 г.

Теория

История UNIX / Как это было…

Roman aka Docent

(d0cent@rambler.ru)


История *nix-систем насчитывает более 30 лет. Давай совершим небольшое путешествие во времени к самым истокам этой оси, в то время, когда компы были большие, а собственную ОС не писал разве что ленивый программер. Конечно, большая часть таких осей не дожила до нашего времени, а о многих из них не сохранилось даже малейших сведений.


Начало начал: от BESYS до MULTICS
UNIX был разработан американской лабораторией Bell Labs, входившей в состав конторы Bell Systems. История этой компании в области информационных технологий началась в 1957 году, когда ее сотрудникам потребовалась операционная система для собственного вычислительного центра, в котором использовалась ЭВМ второго поколения. От такой системы требовалось автоматизировать запуск некоторых программ и управление вычислительными ресурсами. Новоиспеченную систему назвали BESYS. Разумеется, она была совершенно не похожа на современные операционные системы, и применять ее могли разве что сами разработчики для собственных целей. А в те времена больше ничего и не требовалось – компьютеров было мало, и работали с ними лишь программисты и ученые, а уж о необходимости компьютера дома или в офисе никто не задумывался. В 1964 году контора приобрела более мощную машину третьего поколения, и тут же возник вопрос о новой оси, так как старая годилась лишь для той машины, для которой ее делали. Никаких общих стандартов совместимости тогда не существовало. Для участия в разработке операционной системы были приглашены специалисты из Массачусетского института и корпорации General Electric. И закипела работа над новой осью, названной впоследствии Multics (Multiplexed Information and Computing System), – многозадачной, многопользовательской ОС с разделением времени и пользовательским интерфейсом. С помощью нее несколько пользователей одновременно могли получать доступ к вычислительным ресурсам. При создании были использованы наработки Массачусетского института, реализованные ранее в другой экспериментальной оси – CTSS. В итоге, получилась достаточно сложная в использовании, громоздкая и дорогая операционка, в которой, к тому же, существовал ряд ошибок, связанных, в основном, с неудачно выбранным языком программирования PL/I. Кроме этого, среди разработчиков возникли некоторые организационные разногласия. Короче говоря, проект загнулся. Но оставил после себя различные идеи, в частности, идеи по файловой системе, которые были использованы в дальнейших разработках.


К чему приводит геймерство, или Начало «эры UNIX»
После закрытия проекта сотрудники Bell Labs на некоторое время пересели на созданную компанией General Electrics систему GECOS. Узкие возможности этой системы никого из работников лаборатории не устраивали. И в это время, как гласит легенда создания UNIX, один из разработчиков, принимавших активное участие в проекте Multics, Кеннет Томпсон, создал простенькую по тем временам игрушку – Space Travel, которая, к сожалению, не могла нормально работать на тех машинах, что имелись в лаборатории. Компьютеры ведь применялись лишь для научных задач, и никто не думал тогда об их использовании в качестве игровых автоматов. По официальной версии, Томпсон и его коллега Денис Ритчи написали начальству заявку на приобретение более мощной машины для разработки новой операционной системы. Если верить легенде, им всего лишь хотелось нормально поиграть в свое творение :). Заявку, разумеется, отклонили, и пришлось новоявленным геймерам довольствоваться небольшим (по тогдашним меркам) компьютером PDP-7, хотя он вполне подходил по объему оперативной памяти, да к тому же обладал графическим дисплеем. Тут-то и пришла им в головы мысль использовать эту машину для написания собственной универсальной операционки (а может, чтобы просто оправдаться перед начальством в потребности более мощной машины :)). Томпсон решил воплотить в невиданной доселе операционке все самые удачные идеи, которые появились при разработке Multics, а именно: иерархическая древовидная структура файловой системы, концепции файла и процесса, командный интерпретатор для пользователя, многопользовательский режим работы (могли работать два пользователя одновременно) и много чего еще. Работа шла таким образом: на имевшемся до этого компьютере General Electric 635 писали ассемблерный код и потом с помощью перфоленты переносили на PDP-7, на которой впоследствии отлаживали. Так было получено простенькое ядро будущей системы, текстовый редактор, несколько утилит и собственный Ассемблер.

При этом оси требовалось всего 12 килобайт оперативной памяти (столько весило ядро системы), 8 килобайт занимали программы и утилиты, а максимально допустимый размер файла составлял 64 килобайта. После этого можно было полностью продолжать работу уже на самой PDP-7 в создаваемой операционке. Первоначальное название, которое было придумано для новоиспеченного продукта, – UNICS (Uniplexed Information and Computing System). И немного позднее было сокращено до привычного нам UNIX (какому программисту захочется писать лишнюю букву в слове :)). Вот так, созвучно с безвременно сгинувшей Multics, Кен и Денис назвали свое творение, даже и не подозревая тогда, что такое же созвучие в название будут приобретать практически все будущие клоны этой легендарной операционки. Произошло это в 1969 году, а официальной датой рождения UNIX и началом так называемой «эры UNIX» стало 1 января 1970 года.

В 1971 году лаборатории Bell Labs потребовалась система обработки текстов, и в качестве платформы для нее был выбран полюбившийся всей конторе UNIX. Да и к тому времени удалось разжиться более мощной машиной – PDP-11. В это время Томпсон работал над компилятором языка Fortran, но то, что в итоге у него получилось, было названо языком B, который немного позднее превратился во всем нам хорошо известный C. В 1973 году UNIX был переписан на язык C, что сделало систему полностью переносимой. А в 1974 исходники UNIX стали распространяться в университетах за символическую плату, что обеспечило дальнейшую популярность этой оси, а также начало вовлекать в разработку все новых и новых разработчиков. Небольшая цена, понятный и доступный для изучения код на C, гибкость и переносимость, возможность настроить ось под любую конфигурацию сделали ее привлекательной для большого количества не только профессионалов, но и любителей. Таким образом, были разработаны великий текстовый редактор vi (Билл Джой), возможность работы с виртуальной памятью (Поркер и Бабаоглу) и множество других примочек.

Немного поздней AT&T решила внести