Выбрать главу

Что касается самого понятия UNIX, то в мире бытуют два определения. Одно из них указывает на те операционные системы, которые прошли официальную проверку на совместимость с единой спецификацией под названием Single UNIX Specification и в результате этого получили от владельца торговой марки UNIX, The Open Group, официальное право называться UNIX. На момент написания книги это право не было получено ни одной из свободно распространяемых реализаций UNIX (например, Linux и FreeBSD).

Согласно другому общепринятому значению определение UNIX распространяется на те системы, которые по внешнему виду и поведению похожи на классические UNIX-системы (например, на исходную версию Bell Laboratories UNIX и ее более поздние ветки — System V и BSD). В соответствии с этим определением Linux, как правило, считается UNIX-системой (как и современные BSD-системы). Хотя в этой книге спецификации Single UNIX Specification уделяется самое пристальное внимание, мы последуем второму определению UNIX и поэтому позволим себе довольно частое использование фраз вроде «Linux, как и другие реализации UNIX…».

1.1. Краткая история UNIX и языка C

Первая реализация 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), разработал и реализовал язык программирования C. Процесс создания носил эволюционный характер; C был последователем более раннего языка программирования В, код которого выполнялся в режиме интерпретации. Язык B был изначально реализован Томпсоном и впитал в себя множество его идей, позаимствованных из еще более раннего языка программирования под названием BCPL. К 1973 году язык C уже был доведен до состояния, позволившего почти полностью переписать на нем ядро UNIX. Таким образом, UNIX стала одной из самых ранних ОС, написанных на языке высокого уровня, что позволило в дальнейшем портировать ее на другие аппаратные архитектуры.

Весьма широкая востребованность языка C и его потомка C++ в качестве языков системного программирования обусловлена их предысторией. Предыдущие широко используемые языки разрабатывались с другими предопределяемыми целями: FORTRAN предназначался для решения инженерных и научных математических задач, COBOL был рассчитан на работу в коммерческих системах обработки потоков, ориентированных на записи данных. Язык C заполнил пустующую нишу, и, в отличие от FORTRAN и COBOL (которые были разработаны крупными рабочими группами), конструкция языка C возникла на основе идей и потребностей нескольких отдельных личностей, стремящихся к достижению единой цели: разработке высокоуровневого языка для реализации ядра UNIX и связанных с ним программных систем. Подобно самой операционной системе UNIX, язык C был разработан профессиональными программистами для их собственных нужд. В результате получился весьма компактный, эффективный, мощный, лаконичный, прагматичный и последовательный в своей конструкции модульный язык.

UNIX от первого до шестого выпуска

В период с 1969 по 1979 год вышло несколько выпусков UNIX, называемых редакциями. По сути, они были текущими вариантами развивающейся версии, которая разрабатывалась в компании AT&T. В издании [Salus, 1994] указываются следующие даты первых шести редакций UNIX.