Четыре системы: где ломается совместимость
Соберите стек от приложения до ядра для любой пары «программа - система» и посмотрите, где рвётся стык, а потом разберите, чем Unix-подход отличается от особого пути Windows.
Пойдёт ли эта программа в этой системе
Ядра у всех четырёх делают одно и то же: процессы, память, файлы, устройства. А программа разговаривает не с ядром, а с системными библиотеками - и вот они у всех разные. Выберите программу и систему: стек соберётся сверху вниз, и будет видно, где именно он рвётся и чем это лечится.
- Приложение
- Зовёт функции
- Прослойка
- Системные библиотеки
- Ядро
Программа зовёт ровно те функции, которые система умеет сама: вызов идёт от приложения через её библиотеки прямо в ядро. Переводить нечего.
Своих таких функций у системы нет, но есть прослойка: она либо переводит чужие вызовы в свои, либо поднимает рядом кусок чужой системы. Работает, но с оговорками - не всё, не так быстро и без гарантий.
Программа зовёт функции, которых у системы нет и подменить их нечем. Заметьте, что ядро тут ни при чём: оно у всех делает одно и то же. Расходится средний слой - ради него программы и переписывают при переносе.
Все три исхода найдены - и ни в одном из них дело не дошло до ядра. Windows, macOS, Linux и Android одинаково умеют процессы, память и файлы; расходятся они средним слоем, библиотеками и API. Отсюда и WSL, и Wine, и эмуляторы: все они закрывают чужой средний слой, а не чужое ядро. И отсюда же веб-приложения, которым везде нужен только браузер.
Задание: найдите все три исхода - когда программа идёт сама, когда её спасает прослойка и когда не спасает ничто.
Игра в виде .exe зовёт: Win32: функции Windows, DirectX: графика Windows. Установщик под Windows и графика через DirectX - самый частый случай в играх для ПК. Именно из-за этой пары игры и считаются «виндовыми».
Утилита командной строки зовёт: POSIX: функции Unix. Классическая маленькая программа Unix: читает поток, пишет поток, соединяется с другими конвейером.
Программа для Mac на Swift зовёт: Cocoa: функции Apple, POSIX: функции Unix. Интерфейс собран на фирменных библиотеках Apple, и под ними всё тот же Unix. Первая половина есть только у Apple.
Приложение .apk зовёт: Android: Bionic и ART. Собрано под виртуальную машину ART и библиотеку Bionic: это ядро Linux, но обвязка вокруг него полностью своя, гугловская.
Веб-приложение зовёт: Браузер: HTML и JavaScript. Ему нужен только браузер - а браузер есть везде. Ровно поэтому столько программ и переехало в веб: писать четыре версии никому не хочется.
Windows (Win32 API: ntdll.dll, kernel32.dll, ядро Windows NT) умеет сама: Win32: функции Windows, DirectX: графика Windows, Браузер: HTML и JavaScript. Через прослойку: POSIX: функции Unix - через WSL 2; Android: Bionic и ART - через Эмулятор Android.
macOS (libSystem, ядро Darwin (XNU: Mach + BSD)) умеет сама: Cocoa: функции Apple, POSIX: функции Unix, Браузер: HTML и JavaScript. Через прослойку: Win32: функции Windows - через CrossOver на основе Wine; DirectX: графика Windows - через CrossOver на основе Wine; Android: Bionic и ART - через Эмулятор Android.
Linux (glibc, ядро Linux) умеет сама: POSIX: функции Unix, Браузер: HTML и JavaScript. Через прослойку: Win32: функции Windows - через Wine или Proton; DirectX: графика Windows - через Wine или Proton; Android: Bionic и ART - через Waydroid или эмулятор.
Android (Bionic вместо glibc, свои утилиты, ядро Linux (с правками под мобильные)) умеет сама: Android: Bionic и ART, Браузер: HTML и JavaScript. Через прослойку: POSIX: функции Unix - через Termux.
Прослойки устроены по-разному: WSL запускает рядом настоящее ядро Linux, Wine переводит вызовы Win32 на лету и эмулятором не является, а эмулятор Android поднимает целую виртуальную машину. Поэтому и результат разный - от «не отличить» до «запускается, но играть нельзя».
Unix-подход против особого пути: кому что в плюс
Три системы из четырёх делают по-унихсовому, Windows - по-своему. Ни один подход не лучше вообще: у каждого своя цена. Решите сами, кому плюс, а потом смотрите разбор.
Семь задач. Смотрите не на привычку, а на то, чем приходится платить за каждый подход.
Ни одна система не выигрывает везде. Unix-подход берёт прозрачностью, правами по умолчанию и единым способом ставить программы; Windows - совместимостью и драйверами, то есть тем, что дала ей доля рынка. Выбор системы - это вопрос не «что лучше», а «что вам нужно и чем вы готовы за это платить».
Unix-подход: Всё есть файл: программа пишет в файл, а разбирается система.
Особый путь: Всё есть объект: у файла, процесса, соединения свой тип и свои операции.
Это не лучше и не хуже - это разные проектные решения, принятые в 1970-х и 1980-х. Единый интерфейс Unix удобен для маленьких утилит, типизированные объекты Windows - для сложных системных служб. Следствие одно: то, что в терминале Unix делается одной строкой, в Windows требует другого подхода.
Unix-подход: Открыть текстовый файл в /etc любым редактором.
Особый путь: Открыть бинарный реестр специальным редактором.
Текстовые конфигурации прозрачны и правятся чем угодно. У реестра есть и архитектурное следствие: повреждённый реестр роняет всю систему, а кривой конфиг в Linux ломает только свою программу - остальные работают, загрузка не нарушается.
Unix-подход: Работаете без прав суперпользователя, для системных дел нужен пароль.
Особый путь: Историческая традиция работать администратором, с 2007 года смягчённая запросом подтверждения.
Принцип минимальных привилегий - это Unix-модель пятидесятилетней давности. В macOS поверх неё лежит защита системного раздела даже от root, в Android - отдельный пользователь на каждое приложение. Windows шла к этому дольше, потому что дольше всех была главной мишенью.
Unix-подход: Одна команда менеджеру пакетов: ставит и обновляет из общего репозитория, вместе со всеми зависимостями.
Особый путь: Скачать инсталлятор с сайта разработчика, потом обновлять каждую программу отдельно.
Репозиторий - это и удобство, и безопасность: пакеты подписаны и проверены сопровождающими. Плата - программа появляется в репозитории не сразу, а свежую версию иногда приходится ждать. У Android и macOS роль репозитория играют магазины приложений.
Unix-подход: Часть работает через прослойку, часть не работает вовсе.
Особый путь: Пишут в первую очередь под Windows: совместимость максимальная.
Дело не в технике, а в доле рынка: около 72 % настольных машин - это Windows, и разработчик целится туда. Ровно та же причина держит людей в экосистеме: пересесть на другую систему можно, а уговорить коллег принять непривычный формат файла - нет.
Unix-подход: Драйвер обычно уже в ядре, но редкое или новое железо может не заработать.
Особый путь: Производитель почти всегда выпускает драйвер именно под Windows.
Тут снова решает доля рынка, а не архитектура. У macOS этой проблемы нет по другой причине: Apple делает и железо, и систему, поэтому поддерживать нужно только своё.
Unix-подход: Около 90 % серверов интернета и все 500 самых мощных суперкомпьютеров мира.
Особый путь: Windows Server встречается, но остаётся меньшинством.
Открытый код, работа без графики и возможность собрать систему ровно под задачу. Практический вывод главы: Windows занимает рабочий стол, а сам интернет работает на Linux - включая тот сервер, с которого вы читаете эту страницу.
macOS, Linux и Android объединены здесь условно: между ними тоже полно различий - от закрытости Apple до магазина приложений в Android. Общее у них - Unix-модель прав, файлов и системных вызовов.
Интерактив разработан ANY.BY - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/chetyre-sistemy