Добавить в цитаты Настройки чтения

Страница 1 из 70

Теория

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

Roman aka Docent

([email protected] /* */)

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

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

После закрытия проекта сотрудники 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 решила внести некоторый порядок в столь бурный выход новых версий, и в 1982 году несколько последних версий были объединены в одну, что получило название UNIX System III. В 1983 году вышла первая коммерческая версия UNIX, которая называлась System V. В ней появились такие понятия, как механизм взаимодействия процессов, замещение страниц и семафоры. К 1989 году вышла новая версия System V Release 4, вновь объединившая достоинства последних версий. Самыми значительными фишками этой версии стали сокеты, сетевая файловая система (NFS) и новые интерпретаторы ksh и csh. В 1993 году права на UNIX были проданы компании Novell, которая потом передала их конторам X/Open и Santa Cruz Operation (SCO).

Но что это мы все о UNIX да о UNIX? Ведь эта ось, обретя популярность, получила множество параллельных веток развития, которые до сих пор развивают как многочисленные компании, так и народные умельцы.

Одной из значительных ветвей развития UNIX стала знаменитая ось BSD (Berkley Software Distribution). В 1976 году Томпсон поехал в Калифорнийский университет, где шестой редакцией UNIX очень заинтересовались аборигены. Среди них оказался Билл Джой. Он-то и разработал свою версию UNIX, запихнув в нее кучу собственных примочек, в том числе компилятор Паскаля, и назвав ее BSD. В дальнейшем при вмешательстве министерства обороны США (DARPA) в 1980 году был разработан протокол TCP/IP, что дало возможность работы операционки в локальной сетке. Также в BSD добавился редактор vi и командный интерпретатор C-Shell. Ось распространялась практически бесплатно, а ближе к нашему времени мутировала в FreeBSD, OpenBSD и NetBSD. Была выпущена и коммерческая версия BSD/OS для IBM-совместимых машин.