Идеи Unix 1970-х годов, на которых до сих пор держится Linux

2026-07-18 241 комментарии
Иерархическая файловая система, многозадачность, конвейеры и переносимый код на языке C пришли в Linux напрямую из Unix. Разбор того, как решения Кена Томпсона и Денниса Ритчи из Bell Labs полувековой давности определяют устройство современных дистрибутивов – от структуры каталогов до работы в терминале

Linux принято считать современной операционной системой, однако её фундамент заложили в Bell Labs больше полувека назад. Иерархическая файловая система, многозадачность, конвейеры, переносимый код на языке C и сообщество, привыкшее обходиться без официальной поддержки, – всё это идеи Unix конца 1960-х и 1970-х годов. Статья Денниса Ритчи и Кена Томпсона The Unix Time-Sharing System, опубликованная в июле 1974 года в журнале Communications of the ACM, описала принципы, которые до сих пор определяют устройство любого дистрибутива Linux.

Файловая система без букв дисков

Каталоги в Unix-подобных системах расходятся от корневого каталога / подобно ветвям дерева от ствола. В отличие от DOS и Windows, букв дисков здесь нет: дерево каталогов способно охватывать несколько устройств сразу – жёсткий диск и SSD, USB-накопитель или оптический диск. За счёт этого файловая система остаётся гибкой при любой конфигурации оборудования.

comss img 2026 07 18 105256

Саму идею иерархической организации файлов раньше проработали в проекте Multics, однако широкое распространение она получила именно вместе с Unix. В статье 1974 года иерархическая файловая система с отключаемыми томами названа в числе возможностей, которые редко встречались даже в куда более крупных операционных системах того времени. Сегодня такая организация каталогов кажется само собой разумеющейся – верный признак того, что решение прижилось.

Многозадачность и управление заданиями

Unix с самого начала позволяла выполнять несколько процессов одновременно, тогда как MS-DOS оставалась однозадачной. Из многозадачности выросло управление заданиями (job control) – механизм, знакомый каждому пользователю терминала Linux.

comss img 2026 07 18 105420

Длительную задачу можно сразу отправить в фоновый режим, добавив амперсанд в конце строки:

some_long_process &

Оболочка при этом остаётся свободной для следующих команд. Уже запущенный процесс, занимающий терминал, приостанавливается сочетанием Ctrl+Z, после чего команда bg возобновляет его выполнение в фоне:

bg

Управление заданиями появилось в эпоху текстовых терминалов, и с распространением графических сред вроде X11 к нему обращаются реже. Тем не менее при работе в окне терминала механизм по-прежнему экономит время: не нужно открывать отдельную вкладку ради каждой долгой операции.

Конвейеры: вывод одной команды на вход другой

Конвейер – вероятно, самое живучее наследие Unix в Linux. Программы в Unix проектировались так, чтобы их ввод и вывод перенаправлялись средствами оболочки. Вывод команды можно записать в файл – например, сохранить список всех процессов системы:

ps aux > allprocs

Ввод точно так же читается из файла – интерпретатор выполнит команды из готового списка:

sh < command_list.sh

Конвейер (pipeline) – способ соединить несколько программ, при котором вывод одной команды автоматически передаётся на ввод следующей через символ вертикальной черты.

Главная же находка – передача вывода одной команды напрямую на ввод другой. Классический шуточный пример превращает афоризм из fortune в разноцветный текст:

fortune | lolcat
comss img 2026 07 18 105833

Хрестоматийную демонстрацию подхода устроил Брайан Керниган, соавтор классического учебника по языку C: в рекламном фильме Bell Labs 1982 года он на глазах у зрителя собирает программу проверки орфографии из уже существующих консольных утилит, соединяя их конвейером.

Переносимость благодаря языку C

Сама Unix не была открытым программным обеспечением, однако университетам вместе с системой из Bell Labs зачастую доставался и исходный код. От других операционных систем Unix отличало то, что её ключевые компоненты написали на языке высокого уровня – C, созданном Деннисом Ритчи. Широкую известность языку принесло первое издание книги The C Programming Language Брайана Кернигана и Денниса Ритчи, известное как K&R и вышедшее в 1978 году.

До этого операционные системы писали на языке ассемблера. Программы на ассемблере работают быстро, однако писать их трудоёмко, а результат жёстко привязан к конкретной машине и архитектуре. C – компилируемый язык, поэтому для запуска программы на другой машине в теории достаточно написать компилятор под эту машину.

На практике переносимость оказалась сложнее. Ранние программы на C писали в основном на Unix-машинах, и авторы неосознанно опирались на особенности этой среды – на другой операционной системе такой код не работал. Обходной путь состоял в переносе самой среды: поскольку Unix была написана на языке высокого уровня, для переноса на новую машину достаточно было переписать только машинно-зависимые части.

Сообщество вместо технической поддержки AT&T

Во времена создания Unix компания AT&T, которой принадлежала Bell Labs, действовала в рамках мирового соглашения с властями США 1956 года: в обмен на фактическую монополию на телефонную связь ей запрещалось продавать что-либо, кроме услуг связи. Продавать Unix как коммерческий продукт AT&T не могла, поэтому через дочернюю Western Electric передавала систему университетам и исследовательским лабораториям едва ли не по себестоимости пересылки магнитных лент.

Официальной поддержки при этом не было: исправления и обновления пользователи готовили сами. Так возникли группы пользователей, включая знаменитую USENIX, со временем выросшую в крупную конференцию по информатике. Студенты и аспиранты факультетов информатики оказались вполне готовы к такой самостоятельности – одним из её плодов стала BSD.

BSD (Berkeley Software Distribution) – ветвь Unix, которую с 1978 года развивали в Калифорнийском университете в Беркли; её код лёг в основу современных FreeBSD, NetBSD и OpenBSD.

Традиция взаимопомощи никуда не делась: пользователи Linux и сегодня находят ответы в группах пользователей, на форумах и в тематических сообществах Reddit.

От PDP-7 до старых ноутбуков

Пользователи Linux гордятся тем, что дистрибутивы работают на устаревшем оборудовании, например на старом ноутбуке. Эта традиция тоже восходит к Unix. Кен Томпсон и Деннис Ритчи взялись за систему после того, как Bell Labs в 1969 году вышла из проекта Multics – амбициозной попытки построить то, что сегодня назвали бы облачными вычислениями: вычислительную службу, доступную и надёжную, как электросеть или водопровод.

Проект Multics вышел за рамки бюджета и не уложился в сроки, хотя в 1970-х годах всё же добрался до мейнфреймов. Томпсону и Ритчи досталось куда более скромное оборудование: они раздобыли для работы мини-компьютер PDP-7 производства Digital Equipment Corporation – по нынешним меркам это всё равно что вдохнуть новую жизнь в старый ПК.

Заключение

От иерархического дерева каталогов до переносимого кода на C – Linux продолжает традиции, заложенные в Unix. Конвейеры и управление заданиями по-прежнему экономят время в терминале, а привычка сообщества помогать друг другу заменяет корпоративную поддержку так же, как в 1970-х. Для пользователя это означает простую вещь: навыки работы с Unix-инструментами, освоенные десятилетия назад, остаются актуальными в любом современном дистрибутиве.

© . По материалам howtogeek
Комментарии и отзывы

Нашли ошибку?

Новое на сайте