UNIX: история развития, философия и отличие от Linux

UNIX: история развития, философия и отличие от Linux Полезное

UNIX — это семейство многозадачных многопользовательских операционных систем, выросшее из системы, которую в 1969 году создали в Bell Labs. UNIX задал принципы, по которым до сих пор строят серверные и настольные ОС: иерархия файлов от корня /, представление устройств в виде файлов, командная оболочка и набор небольших утилит, соединяемых в цепочки.

Дальше разберем, как появился UNIX и зачем его переписали на языке C, в чем состоит философия UNIX, на какие ветви (BSD и System V) он разделился и чем отличаются три близких понятия, которые часто путают: UNIX, Linux и POSIX.

История развития UNIX

В середине 1960-х Bell Labs вместе с MIT и General Electric разрабатывала систему разделения времени Multics. Проект оказался слишком громоздким, и в 1969 году Bell Labs из него вышла. Сотрудники лаборатории Кен Томпсон и Деннис Ритчи решили сделать свою систему — компактнее и проще.

Летом 1969 года Кен Томпсон написал первую версию на ассемблере для мини-компьютера PDP-7. В ней уже были иерархическая файловая система, интерпретатор командной строки и несколько служебных программ. Название придумали как игру слов от Multics: сначала Unics (Uniplexed Information and Computing Service — в противовес Multiplexed), позже оно закрепилось как Unix.

Ключевой поворот произошел в 1973 году. Ритчи создал язык C, и в том же году систему переписали на C — это была четвертая редакция UNIX (Version 4). До этого операционные системы писали на ассемблере под конкретное железо. Перенос на C сделал UNIX переносимым: чтобы запустить систему на новом процессоре, стало достаточно перекомпилировать исходный код, а не переписывать его заново.

Из-за антимонопольных ограничений AT&T (материнская компания Bell Labs) не могла продавать UNIX как продукт и раздавала исходники университетам почти даром. Так в 1970-х UNIX распространился по научным центрам, а вместе с исходным кодом — идеи и подходы, на которых он построен.

Философия UNIX

Философия UNIX — это набор правил проектирования программ, сложившийся у разработчиков системы. Ее коротко сформулировал Даглас Макилрой: пишите программы, которые делают одну вещь и делают ее хорошо, и умеют работать вместе, а универсальным интерфейсом между ними сделайте текстовый поток.

Отсюда вырастают несколько практических принципов:

  • Одна программа — одна задача. Утилита ls показывает список файлов, grep ищет строки, sort сортирует. Каждая делает свое и не тянет лишнего.
  • Композиция через конвейер. Мелкие утилиты соединяют в цепочку оператором | (pipe): вывод одной становится вводом следующей. Так из простых команд собирают сложную обработку.
  • Все есть файл. Обычные файлы, каталоги, устройства и даже многие системные интерфейсы выглядят как файлы, к которым применяют одни и те же операции чтения и записи.
  • Текст как универсальный формат. Данные передают простыми текстовыми строками, а не бинарными структурами, поэтому результат одной программы легко подать на вход другой.

Простой пример конвейера: посчитать, сколько процессов запущено от имени пользователя root.

ps aux | grep '^root' | wc -l

Здесь ps aux выводит список процессов, grep '^root' оставляет строки, начинающиеся со слова root, а wc -l считает их количество. Ни одна из трех программ не знает про две другие — их связывает только текстовый поток. Это и есть философия UNIX в действии.

Ветви UNIX: BSD и System V

К концу 1970-х UNIX разошелся на две большие ветви, у которых были разные владельцы и разные цели.

BSD (Berkeley Software Distribution) появилась в Калифорнийском университете в Беркли. Там на основе исходников AT&T дорабатывали систему, и первый выпуск, 1BSD, вышел в 1978 году. В BSD появилось многое из того, что стало стандартом: сетевой стек TCP/IP, редактор vi, C-shell. Позже из BSD выросли свободные системы FreeBSD, OpenBSD и NetBSD.

System V — это коммерческая ветвь самой AT&T. Когда антимонопольные ограничения ослабли, компания стала выпускать UNIX как продукт, и в 1983 году вышла System V — линейка, которую лицензировали производители оборудования (отсюда пошли AIX, HP-UX, Solaris).

В 1980-х и начале 1990-х ветви конкурировали и расходились по деталям — интерфейсам, командам, форматам. Этот период называют «войнами UNIX» (Unix wars). Именно несовместимость версий подтолкнула к идее общего стандарта, о котором ниже.

UNIX, Linux и POSIX: в чем разница

Эти три слова легко перепутать, но они про разное: UNIX — это сертифицированная система (и товарный знак), Linux — независимо написанная Unix-подобная система, а POSIX — стандарт интерфейса, а не система вообще.

Разведем понятия по цепочке:

  • UNIX (в узком смысле) — система, которая прошла сертификацию и вправе носить товарный знак UNIX. Сегодня им владеет консорциум The Open Group, а требования описаны в Single UNIX Specification.
  • Unix-подобная система — похожа на UNIX по устройству и командам, но сертификацию не проходила. Формально называть ее «UNIX» нельзя, хотя в быту так делают.
  • Linux — ядро, которое Линус Торвальдс написал с нуля в 1991 году, не используя код AT&T. Дистрибутивы на его основе (Ubuntu, Debian, Red Hat) — Unix-подобные, но не сертифицированный UNIX.
  • POSIX (Portable Operating System Interface) — серия стандартов IEEE, задающих единый программный интерфейс. Первая редакция, IEEE 1003.1, вышла в 1988 году, чтобы программы переносились между разными UNIX-системами. POSIX описывает интерфейс, а не реализацию, поэтому ему может соответствовать и несертифицированная система.
Признак UNIX Linux POSIX
Что это сертифицированная ОС и товарный знак ядро и семейство ОС на его основе стандарт программного интерфейса
Происхождение Bell Labs, 1969 Линус Торвальдс, 1991 IEEE, 1988
Общий код с AT&T UNIX да (историческая линия) нет, написан независимо не система, а спецификация
Примеры macOS, AIX, HP-UX, Solaris Ubuntu, Debian, Fedora, Android требования, а не продукт

Коротко: Linux — Unix-подобная система, близкая к POSIX, но она не сертифицированный UNIX. А macOS, наоборот, официально сертифицирована как UNIX, хотя многие считают ее «просто маком».

Наследие UNIX

UNIX давно перестал быть отдельным продуктом, но его подход лежит в основе почти всей современной инфраструктуры.

  • Серверы и облака. Большинство серверов в интернете работают на Linux — Unix-подобной системе, унаследовавшей устройство и команды UNIX.
  • Настольные и мобильные ОС. macOS — сертифицированный UNIX, iOS и Android построены на Unix-подобной основе (у Android — ядро Linux).
  • Язык C и сеть. Язык C, созданный ради UNIX, стал одним из главных языков системного программирования, а стек TCP/IP из BSD — основой интернета.
  • Инструменты и навыки. Командная оболочка, конвейеры, утилиты grep, sort, awk, права доступа rwx — все это выросло из UNIX и до сих пор изучается системными администраторами и разработчиками.

Поэтому знакомство с UNIX-подходом — это не история ради истории: те же принципы каждый день применяют, работая с Linux в терминале.

FAQ

UNIX и Linux — это одно и то же?
Нет. UNIX — историческая система из Bell Labs и товарный знак для сертифицированных ОС. Linux написан независимо и код AT&T не использует, поэтому он Unix-подобный, но не сертифицированный UNIX.

Можно ли сегодня поставить «настоящий» UNIX на домашний компьютер?
Проще всего — macOS: это сертифицированный UNIX для компьютеров Apple. Серверные UNIX вроде AIX, HP-UX и Solaris рассчитаны на специфическое оборудование и для домашнего ПК не предназначены.

Зачем нужен POSIX, если есть сам UNIX?
POSIX описывает единый интерфейс, чтобы программу можно было перенести между разными системами без переписывания. Ему стараются соответствовать и Linux, и BSD, и коммерческие UNIX, поэтому один и тот же код чаще собирается везде.

Выводы

  • UNIX появился в Bell Labs в 1969 году (Кен Томпсон и Деннис Ритчи), а в 1973 году был переписан на языке C, что сделало систему переносимой.
  • Философия UNIX — маленькие программы, которые делают одно дело и соединяются через текстовые конвейеры; принцип «все есть файл» действует до сих пор.
  • Исторически UNIX разошелся на ветви BSD (Беркли) и System V (AT&T); их несовместимость привела к стандарту POSIX (1988).
  • UNIX, Linux и POSIX — разное: сертифицированная система, независимое Unix-подобное ядро и стандарт интерфейса соответственно.
  • Наследие UNIX — это Linux, macOS, язык C, стек TCP/IP и весь инструментарий терминала.

Где применяется и как освоить

Освойте тему на практике

На практике знания об устройстве UNIX превращаются в работу с Linux: терминал, файловая система от корня /, права доступа rwx, конвейеры и утилиты — все это ежедневные инструменты системного администратора и DevOps-инженера. Освоить их системно, от команд оболочки до настройки сервисов, помогает курс Otus по администрированию Linux.

Освойте тему на практике

Посмотреть формат обучения и разобрать реальные задачи с преподавателем можно на бесплатных открытых уроках Otus.

Смежные темы: Язык C: описание и основы, Команда ls в Linux, Скрипты для системных администраторов.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)