Введение

Первая операционная система UNIX (тогда еще «Unics«) была написана в 1969 для компьютера PDP-7 сотрудниками Bell Telephone Laboratories: Кеном Томпсоном, Деннисом Ритчи, Дугласом Макилроем, Брайанои Кернигананом и проч.

На создание системы повлиял провал проекта Multics (Multiplexed Information and Computing Service) — амбициозной интерактивной ОС, которая оказалась слишком сложной. Томпсон и Ритчи решили сделать нечто противоположное: маленькую, элегантную систему, где каждая программа делала бы одну вещь, но делала её хорошо. Так родилась философия UNIX.

Первые версии системы были написаны на ассемблере, но в 1973 году Ритчи переписал ядро на изобретенном им языке Си.

Систему не ждало ничего хорошего — фирмы, мгновенно вцепившиеся в удобную систему стремились её коммерциализовать. Отсюда и сложная генеалогия и две важные ветки: AT&T (та самая бывшая Bell Labs) и BSD. Всю эту историю в данной системе мы рассматривать не будем, но возможно, когда-нибудь придет время освятить и эту часть истории.

Название «UNIX» появилось как шутка — игра слов от «Multics» («много» → «один»). Позже расшифровывали как «UNiplexed Information and Computing System», но официально это не было акронимом.

Структура системы

Основой работы *nix является ядро операционной системы. Это обычный выполняемый файл, лежащий в директории типа /unix или /stand/unix, или /vmunix, или /vmlinuz или /boot/ (в зависимости от конкретной реализации). При старте системы он целиком загружается в память, постоянно там находится и выполняет все системные функции.

В ядре находятся:

Системные вызовы — это интерфейс между пользовательскими программами и ядром. Вместо того чтобы напрямую работать с аппаратурой, программы вызывают функции ядра (например, open()read()write()fork()). Это обеспечивает безопасность и стабильность.

Процессы в *nix имеют виртуальное адресное пространство. Каждый процесс думает, что у него есть вся память, а ядро отображает виртуальные адреса на физические. Это позволяет:

Файловая структура

Файловая структура *nix представляет собой одно большое дерево, начинающееся с корневого каталога «/». Каждый раздел диска имеет свое дерево (например, /home может быть отдельным разделом), и все такие деревья сцепляются в одно.

КаталогНазначение
/binОсновные команды и утилиты (доступны в однопользовательском режиме)
/sbinСистемные утилиты для администрирования (только для суперпользователя root)
/devСодержит файлы устройств (жесткие диски, терминалы, принтеры)
/etcСодержит конфигурационные файлы, некоторые из утилит администрирования и сценарии инициализации системы.
В некоторых версиях *nix ту же функцию выполняет каталог /sbin или /usr/sbin
/libСодержит библиотечные файлы языка C и других языков.
Часть библиотечных фалов содержится в каталоге /usr/sbin
/lost+foundФайлы, появившиеся в результате нарушения целостности файловой системы
/mnt, /mediaКаталог для монтирования физических файловых систем
/homeКаталог для размещения домашних каталогов пользователей
В некоторых версиях *nix ту же функцию выполняет каталог /usr
/varКаталог для временного размещения файлов подсистем (логи, почтова, печать и т.п.)
/tmpВременный каталог системы
/procВиртуальная файловая система для получения информации о процессах
/sysВиртуальная ФС для взаимодействия с ядром (например, управление питанием)
/usrПользовательские программы и библиотеки (самая большая директория)
/optДополнительное ПО

Корнем является директория «/». В файловую систему входит и директория /dev, в которой находится описание физических и логических устройств, таких как жесткие диски, принтеры, TTY-терминалы и некоторые другие. Поскольку для быстроты файловая система буферизуется, то выключение питания может привести к разрушению файловой системы. Подробный формат файловой системы (File System – fs) можно узнать, дав команду

man fs

Вообще, в *NIX существует встроенное руководство (manual) пользователя, то есть описание команд, системных файлов, системных вызовов и так далее. Для получения информации необходимо дать команду

man command_name

Базовые команды *nix

Список команд зависит от командного интерпретатора, установленного в системе. Наиболее распространённые — bash и zsh. Команды интерпретаторов DOS проникают в *nix: к примеру, вы можете ввести DIR и LS и получите примерно одинаковый (ls окрашивает файлы/каталоги в зависимости от их типа) результат.

Краткая классификация *nix-систем

UNIX быстро разошёлся по двум основным ветвям:

  1. System V (AT&T) — коммерческая версия от Bell Labs. Эволюционировала через SVR1 (1983) до SVR4 (1989).
  2. BSD (Berkeley Software Distribution) — некоммерческий проект Калифорнийского университета в Беркли. Дала миру TCP/IP, виртуальную память, файловую систему FFS.

В начале 1990-х годов USL (UNIX System Laboratories) подала в суд на BSD за использование кода с копирайтом AT&T. Это привело к затяжному конфликту, в результате которого многие коммерческие UNIX перешли на System V.

Однако параллельно появился Linux — независимая реализация UNIX-подобного ядра, написанная Линусом Торвальдсом в 1991 году. Она не содержит кода AT&T и распространяется под лицензией GPL.

FreeBSD

Некоммерческая ОС, в которой полностью переписан код ядра для избежания конфликтов. Считается одной из самых надёжных и производительных систем, особенно подходит для сетевых серверов и маршрутизаторов.

GNU/Linux

Самая популярная UNIX-подобная ОС. Фактически, это ядро Linux + утилиты GNU. Работает на всём — от часов до суперкомпьютеров.

Популярные дистрибутивы (2025):

ДистрибутивОсобенности
DebianСтабильный, основа для Ubuntu и сотен других
UbuntuСамый массовый, дружелюбный к новичкам, LTS-версии
FedoraПередовые технологии, поддерживается Red Hat
RHEL (Red Hat Enterprise Linux)Коммерческий, надёжный, для корпораций
openSUSEМощный, с инструментом YaST
Arch LinuxМинималистичный, для энтузиастов, rolling release
GentooКомпилируется под железо, максимальная гибкость
AlpineМинимальный (5 МБ!), используется в контейнерах
SlackwareСтарейший из живых дистрибутивов (1993), придерживается KISS
NixOSДекларативная конфигурация, воспроизводимые сборки

Solaris

Изначально — ОС от Sun Microsystems (1992). После покупки Sun компанией Oracle стала закрытой. Однако существует открытый форк — illumos, поддерживаемый сообществом. Используется в высоконадёжных системах, на мейнфреймах и в дата-центрах.

macOS

macOS — проприетарная ОС от Apple, основанная на ядре Darwin. Darwin включает:

Таким образом, macOS — это официально сертифицированный UNIX, и все приложения, написанные для POSIX-систем, работают на нём.

Android

Android — это ОС для мобильных устройств, основанная на ядре Linux, но с сильно изменённым пользовательским пространством (своя виртуальная машина, своя библиотека C, свой менеджер окон). Технически Android является Linux-системой, но не является GNU/Linux.

Где обитают *nix

Что такое философия UNIX и почему она важна?

Философия UNIX (сформулирована Дугласом Макилроем):

  1. Каждая программа делает одну вещь, но делает её хорошо.
  2. Программы должны уметь работать вместе (через текстовые потоки).
  3. Храните данные в текстовом формате, если это возможно.

Это радикально отличает UNIX от монолитных систем, где одна программа пытается делать всё.

Влияние UNIX на современные ОС

СистемаОснова
LinuxUNIX-подобное ядро, системные вызовы POSIX
macOSЯдро XNU (Mach + BSD), POSIX-совместима
Windows (WSL)Подсистема Linux в Windows 10/11, позволяет запускать ELF-бинарники
AndroidЯдро Linux
iOSЯдро XNU (как у macOS)
ChromeOSЯдро Linux + браузер как оболочка
PlayStation, XboxИспользуют FreeBSD или Linux-ядро

Интересные факты о UNIX

  1. «Грязная дюжина» — так называли первые 12 программистов, работавших над UNIX в Bell Labs.
  2. Язык C был создан специально для переписывания UNIX с ассемблера.
  3. Unix Time (время с 1 января 1970) используется во всех UNIX-системах до сих пор.
  4. Кен Томпсон и Деннис Ритчи получили премию Тьюринга в 1983 году за разработку UNIX.
  5. Код BSD послужил основой для TCP/IP в интернете.
  6. В 1987 году вышла книга «UNIX: A History and a Memoir» Брайана Кернигана — один из лучших документальных рассказов о том периоде.

Итоги

UNIX-философия оказала огромное влияние на всю IT-индустрию. Даже современные системы, не являясь прямыми потомками оригинального UNIX, заимствуют ключевые идеи: модульность, текстовые интерфейсы, композицию программ. Изучение UNIX-систем — это не только изучение конкретных технологий, но и понимание фундаментальных принципов, на которых построен современный цифровой мир.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Chat on Telegram