Первая реализация UNIX была разработана в 1969 году (в год рождения Линуса Торвальдса (Linus Torvalds)) Кеном Томпсоном (Ken Thompson) в компании Bell Laboratories, являвшейся подразделением телефонной корпорации AT&T. Эта реализация была написана на ассемблере для мини-компьютера Digital PDP-7. Название UNIX было выбрано из-за созвучия с MULTICS (Multiplexed Information and Computing Service), названием более раннего проекта операционной системы (ОС), разрабатываемой AT&T в сотрудничестве с институтом Massachusetts Institute of Technology (MIT) и компанией General Electric. (К тому времени AT&T уже была выведена из проекта из-за срыва первоначальных планов по разработке экономически пригодной системы.) Томпсон позаимствовал у MULTICS ряд идей для своей новой операционной системы, включая древовидную структуру файловой системы, отдельную программу для интерпретации команд (оболочки) и понятие файлов как неструктурированных потоков байтов.
В 1970 году UNIX была переписана на языке ассемблера для только что приобретенного мини-компьютера Digital PDP-11, который в то время считался новой и довольно мощной машиной. Следы PDP-11 до сих пор могут обнаруживаться в большинстве реализаций UNIX, включая Linux, под различными названиями.
Некоторое время спустя один из коллег Томпсона по Bell Laboratories, с которым он на ранней стадии сотрудничал при создании UNIX, Деннис Ритчи (Dennis Ritchie), разработал и реализовал язык программирования С. Процесс создания носил эволюционный характер; С был последователем более раннего языка программирования В, код которого выполнялся в режиме интерпретации. Язык В был изначально реализован Томпсоном и впитал в себя множество его идей, позаимствованных из еще более раннего языка программирования под названием BCPL. К 1973 году язык С уже был доведен до состояния, позволившего почти полностью переписать на нем ядро UNIX. Таким образом, UNIX стала одной из самых ранних ОС, написанных на языке высокого уровня, что позволило в дальнейшем портировать ее на другие аппаратные архитектуры.
Весьма широкая востребованность языка С и его потомка C++ в качестве языков системного программирования обусловлена их предысторией. Предыдущие широко используемые языки разрабатывались с другими предопределяемыми целями: FORTRAN предназначался для решения инженерных и научных математических задач, COBOL был рассчитан на работу в коммерческих системах обработки потоков, ориентированных на записи данных. Язык С заполнил пустующую нишу, и, в отличие от FORTRAN и COBOL (которые были разработаны крупными рабочими группами), конструкция языка С возникла на основе идей и потребностей нескольких отдельных личностей, стремящихся к достижению единой цели: разработке высокоуровневого языка для реализации ядра UNIX и связанных с ним программных систем. Подобно самой операционной системе UNIX, язык С был разработан профессиональными программистами для их собственных нужд. В результате получился весьма компактный, эффективный, мощный, лаконичный, прагматичный и последовательный в своей конструкции модульный язык.
UNIX от первого до шестого выпуска
В период с 1969 по 1979 год вышло несколько выпусков UNIX, называемых редакциями. По сути, они были текущими вариантами развивающейся версии, которая разрабатывалась в компании AT&T. В издании [Salus, 1994] указываются следующие даты первых шести редакций UNIX.
- Первая редакция, ноябрь 1971 года. К этому времени UNIX работала на PDP-11 и уже имела компилятор FORTRAN и версии множества программ, используемых по сей день, включая
аr
,cat
,chmod
,chown
,cp
,dc
,ed
,find
,ln
,ls
,mail
,mkdir
,mv
,rm
,sh
,su
иwho
. - Вторая редакция, июнь 1972 года. К этому моменту UNIX была установлена на десяти машинах компании AT&T.
- Третья редакция, февраль 1973 года. В эту редакцию был включен компилятор языка С и первая реализация конвейеров (pipes).
- Четвертая редакция, ноябрь 1973 года. Это была первая версия, практически полностью написанная на языке С.
- Пятая редакция, июнь 1974 года. К этому времени UNIX была установлена более чем на 50 системах.
- Шестая редакция, май 1975 года. Это была первая редакция, широко использовавшаяся вне компании AT&T.
За время выхода этих редакций система UNIX стала активнее использоваться, а ее репутация — расти, сначала в рамках компании AT&T, а затем и за ее пределами. Важным вкладом в эту популярность была публикация статьи о UNIX в журнале Communications of the ACM [Ritchie & Thompson, 1974].
К этому времени компания AT&T владела санкционированной правительством монополией на телефонные системы США. Условия соглашения AT&T с правительством США не позволяли компании заниматься продажей программного обеспечения, а это означало, что она не могла продавать UNIX. Вместо этого начиная с 1974 года, с выпуском пятой и особенно с выпуском шестой редакции, AT&T за символическую плату организовала лицензированное распространение UNIX для использования в университетах. Распространяемые для университетов пакеты включали документацию и исходный код ядра (на то время около 10 000 строк кода).
Эта кампания стала существенным вкладом в популяризацию использования операционной системы, и к 1977 году UNIX работала примерно в 500 местах, включая 125 университетов в США и некоторых других странах. UNIX была для университетов весьма дешевой, но при этом мощной интерактивной многопользовательской операционной системой, в то время как коммерческие операционные системы стоили очень дорого. Кроме того, факультеты информатики получали исходный код реальной операционной системы, который они могли изменять и предоставлять своим студентам для изучения и проведения экспериментов. Одни студенты, вооружившись знаниями операционной системы UNIX, превратились в ее ярых приверженцев. Другие пошли еще дальше, основав новые компании или присоединившись к таким компаниям для продажи недорогих компьютерных рабочих станций с запускаемой на них легко портируемой операционной системой UNIX. Рождение BSD и System V
В январе 1979 года вышла седьмая редакция UNIX. Она повысила надежность системы и предоставила усовершенствованную файловую систему. Этот выпуск также содержал несколько новых инструментальных средств, включая awk, make, sed, tar, uucp, Bourne shell и компилятор языка FORTRAN 77. Значимость седьмой редакции обуславливалась также тем, что, начиная с этого выпуска, UNIX разделилась на два основных варианта: BSD и System V, истоки которых мы сейчас кратко рассмотрим.
Кен Томпсон (Ken Thompson) в 1975/1976 учебном году был приглашенным профессором Калифорнийского университета в Беркли, откуда он в свое время выпустился. Там он работал с несколькими студентами выпускного курса, добавляя к UNIX множество новых свойств. (Один из этих студентов, Билл Джой (Bill Joy), впоследствии стал соос- нователем компании Sun Microsystems, которая вскоре заявила о себе на рынке рабочих станций UNIX.) Со временем в Беркли было разработано множество новых инструментов и функций, включая С shell, редактор vi. Кроме того, были усовершенствованы файловая система (Berkeley Fast File System), почтовый агент sendmail, компилятор языка Pascal и система управления виртуальной памятью на новой архитектуре Digital VAX.
Эта версия UNIX, включавшая свой собственный исходный код, получила весьма широкое распространение под названием Berkeley Software Distribution (BSD). Первым полноценным дистрибутивом, появившимся в декабре 1979 года, стал 3BSD. (Ранее выпущенные в Беркли дистрибутивы BSD и 2BSD представляли собой не полные дистрибутивы UNIX, а пакеты новых инструментов, разработанных в Беркли.)
В 1983 году группа исследования компьютерных систем — Computer Systems Research Group — из Калифорнийского университета в Беркли выпустила 4.2BSD. Этот выпуск был примечателен тем, что в нем содержалась полноценная реализация протокола TCP/IP, включая интерфейс прикладного программирования (API) сокетов, и множество различных средств для работы в сети. Выпуск 4.2BSD и его предшественник 4.1 BSD стали активно распространяться в университетах по всему миру. Они также легли в основу SunOS (впервые выпущенную в 1983 году) — UNIX-вариант, продаваемый компанией Sun. Другими примечательными выпусками BSD были 4.3BSD в 1986 году и последний выпуск — 4.4BSD — в 1993 году.
Самое первое портирование (перенос) системы UNIX на оборудование, отличное от PDP-11, произошло в 1977-1978 годах, когда Деннис Ритчи и Стив Джонсон (Steve Johnson) портировали ее на Interdata 8/32, а Ричард Миллер (Richard Miller) из Воллонгонского университета в Австралии одновременно с ними портировал ее на Interdata 7/32. Портированная версия Berkeley Digital VAX базировалась на более ранней (1978 года), также портированной версии, созданной Джоном Рейзером (John Reiser) и Томом Лондоном (Tom London). Она называлась 32V и была по сути тем же самым, что и седьмая редакция для PDP-11, за исключением более обширного адресного пространства и более емких типов данных.
В то же время принятое в США антимонопольное законодательство привело к разделу компании AT&T (юридический процесс начался в середине 1970-х годов, а сам раздел произошел в 1982 году), за которым последовали утрата монополии на телефонные системы и приобретение компанией права вывода UNIX на рынок. В результате в 1981 году состоялся выпуск System III (три). Эта версия была создана организованной в компании AT&T группой поддержки UNIX (UNIX Support Group, USG). В ней работали сотни специалистов, занимавшихся усовершенствованием UNIX и созданием приложений для этой системы (в частности, созданием пакетов подготовки документов и средств разработки ПО). В 1983 году последовал первый выпуск System V (пять). Несколько последующих выпусков привели к тому, что в 1989 году состоялся окончательный выпуск System V Release 4 (SVR4), ко времени которого в System V было перенесено множество свойств из BSD, включая сетевые объекты. Лицензия на System V была выдана множеству коммерческих поставщиков, использовавших эту версию как основу своих собственных реализаций UNIX.
Таким образом, вдобавок к различным дистрибутивам BSD, распространявшимся через университеты в конце 1980-х годов, UNIX стала доступна в виде коммерческих реализаций на различном оборудовании. Они включали:
- разработанную в компании Sun операционную систему SunOS, а позже и Solaris;
- созданные в компании Digital системы Ultrix и 0SF/1 (в настоящее время, после нескольких переименований и поглощений, HP Tru64 UNIX);
- AIX компании IBM;
- HP-UX компании Hewlett-Packard (HP);
- NeXTStep компании NeXT;
- A/UX для Apple Macintosh;
- XENIX для архитектуры Intel x86-32 компаний Microsoft и SCO.
Такая ситуация резко контрастировала с типичными для того времени сценариями создания собственного оборудования и разработки под него ОС, когда каждый производитель создавал одну или от силы несколько собственных архитектур компьютерных микросхем, для которых он продавал операционную систему (или системы) собственной разработки.
Специализированный характер большинства поставляемых систем означал ориентацию покупателей только на одного поставщика. Переход на другую специализированную ОС и аппаратную платформу мог оказаться слишком дорогим удовольствием, поскольку для этого требовалось портирование имеющихся приложений и переучивание рабочего персонала. Этот фактор в совокупности с появлением дешевых однопользовательских рабочих станций под UNIX от различных производителей делал портируемую UNIX- систему все более привлекательной с коммерческой точки зрения.