Введение
Первая операционная система 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/ (в зависимости от конкретной реализации). При старте системы он целиком загружается в память, постоянно там находится и выполняет все системные функции.
В ядре находятся:
- Драйверы устройств
- Планировщик процессов
- Управление памятью (виртуальная память, страничная организация)
- Системные вызовы (syscalls)
- Управление файловыми системами
- Сетевая подсистема
Системные вызовы — это интерфейс между пользовательскими программами и ядром. Вместо того чтобы напрямую работать с аппаратурой, программы вызывают функции ядра (например, open(), read(), write(), fork()). Это обеспечивает безопасность и стабильность.
Процессы в *nix имеют виртуальное адресное пространство. Каждый процесс думает, что у него есть вся память, а ядро отображает виртуальные адреса на физические. Это позволяет:
- Изолировать процессы друг от друга,
- Использовать свопинг (выгрузку неактивных страниц на диск),
- Эффективно использовать память за счёт разделяемых библиотек и COW (Copy-on-Write).
Файловая структура
Файловая структура *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 окрашивает файлы/каталоги в зависимости от их типа) результат.
- cd — сменить директорию (~ — обозначение домашней директории);
- cat — вывести содержимое файла;
- chmod — изменение прав доступа;
- chown — изменение владельца;
- cp — копирование файлов;
- scp / rsync — копирование по сети;
- gzip — разархивирует файлы, созданные gzip. Столь подробное описание сделано лишь из тех соображений, что в большинстве архивов в Интернете именно таким образом, то есть в форе file.tar.gz, хранятся очень многие вещи;
- head — вывести первые N строк файла;
- tail — вывести последние N строк файла;
- less — постраничный вывод файла на экран по 24 строки, но с конца (очень удобен при просмотре, например, последних записей в log-файле);
- ls — смотреть список файлов (с параметрами -la — вывод полной информации о файлах);
- mkdir — создание директории;
- more — постраничный вывод файла на экран по 24 строки;
- mv — перенос файлов;
- rm — удаление файлов;
- rmdir — удаление директории (если в директории остались файлы, то необходимо использовать параметр -f);
- tar – простейшая программа (tape archivator – ленточный архиватор), которая просто последовательно записывает указанные файлы в один. Файлы *.tar . Ее параметры: c — создание, v — печать сообщений, x — раскрытие, f — файл;
- file — программа, при помощи магических чисел, лежащих в отдельном файле, определяет содержимое указанного файла;
- arch — архитектура компьютера;
- clear — очистка экрана консоли;
- passwd — смена пароля;
- w, who, whoami — вывод всех пользователей работающих с системой, или своего логина;
- last — информация о пользователях, работавших в системе в последнее время;
- diff — сравнение файлов;
- grep — текстовый фильтр;
- wc — количество символов переводов строки, слов и байт в файле;
- md5sum — контрольная сумма;
- ssh, telnet — удалённое управление компьютером;
- du / df — использование дискового пространства;
- ps — список процессов
- top / htop — мониторинг системы в реальном времени;
- sudo — выполнение команды с правами root (super user do).
Краткая классификация *nix-систем
UNIX быстро разошёлся по двум основным ветвям:
- System V (AT&T) — коммерческая версия от Bell Labs. Эволюционировала через SVR1 (1983) до SVR4 (1989).
- 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
Некоммерческая ОС, в которой полностью переписан код ядра для избежания конфликтов. Считается одной из самых надёжных и производительных систем, особенно подходит для сетевых серверов и маршрутизаторов.
- Jails — лёгкая контейнеризация, предшественник Docker.
- Поддерживает ZFS — продвинутую файловую систему с защитой от повреждений и снэпшотами.
- Используется в Netflix для доставки контента, в Sony PlayStation 4/5 (ядро), в WhatsApp (на пике — до 1 млрд пользователей на 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 включает:
- Ядро XNU (гибрид ядер Mach и BSD)
- Стек протоколов от FreeBSD
- Многие утилиты и библиотеки из BSD и GNU
Таким образом, macOS — это официально сертифицированный UNIX, и все приложения, написанные для POSIX-систем, работают на нём.
Android
Android — это ОС для мобильных устройств, основанная на ядре Linux, но с сильно изменённым пользовательским пространством (своя виртуальная машина, своя библиотека C, свой менеджер окон). Технически Android является Linux-системой, но не является GNU/Linux.
Где обитают *nix
- Интернет: 90% всех веб-серверов работают на Linux.
- Суперкомпьютеры: 100% машин в TOP-500 работают на Linux.
- Телефоны: Android (Linux) и iOS (BSD/macOS) — >99% рынка.
- Облака: AWS, Azure, Google Cloud — всё на Linux.
- Автомобили: Tesla, многие современные машины используют Linux.
- Бытовая техника: ТВ, роутеры, умные колонки.
Что такое философия UNIX и почему она важна?
Философия UNIX (сформулирована Дугласом Макилроем):
- Каждая программа делает одну вещь, но делает её хорошо.
- Программы должны уметь работать вместе (через текстовые потоки).
- Храните данные в текстовом формате, если это возможно.
Это радикально отличает UNIX от монолитных систем, где одна программа пытается делать всё.
Влияние UNIX на современные ОС
| Система | Основа |
|---|---|
| Linux | UNIX-подобное ядро, системные вызовы 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
- «Грязная дюжина» — так называли первые 12 программистов, работавших над UNIX в Bell Labs.
- Язык C был создан специально для переписывания UNIX с ассемблера.
- Unix Time (время с 1 января 1970) используется во всех UNIX-системах до сих пор.
- Кен Томпсон и Деннис Ритчи получили премию Тьюринга в 1983 году за разработку UNIX.
- Код BSD послужил основой для TCP/IP в интернете.
- В 1987 году вышла книга «UNIX: A History and a Memoir» Брайана Кернигана — один из лучших документальных рассказов о том периоде.
Итоги
UNIX-философия оказала огромное влияние на всю IT-индустрию. Даже современные системы, не являясь прямыми потомками оригинального UNIX, заимствуют ключевые идеи: модульность, текстовые интерфейсы, композицию программ. Изучение UNIX-систем — это не только изучение конкретных технологий, но и понимание фундаментальных принципов, на которых построен современный цифровой мир.