1 (03.05.2012 13:21:13 отредактировано Oksimoronka)

UNIX: Некоторые архитектурные особенности

Особенности UNIX, отличающие данное семейство от других ОС приведены ниже.
Файловая система древовидная, чувствительная к регистру символов в именах, очень слабые ограничения на длину имён и пути.
Нет поддержки структурированных файлов ядром ОС, на уровне системных вызовов файл есть поток байтов.
Командная строка находится в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора команд (как это происходит, например, в RSX-11).
Понятие «переменных окружения».
Запуск процессов вызовом fork(), то есть возможность клонирования текущего процесса со всем состоянием.
Понятия stdin/stdout/stderr.
Ввод/вывод только через дескрипторы файлов.
Традиционно крайне слабая поддержка асинхронного ввода/вывода, по сравнению с VMS и Windows NT.
Интерпретатор команд есть обыкновенное приложение, общающееся с ядром обыкновенными системными вызовами (в RSX-11 и VMS интерпретатор команд выполнялся как специальное приложение, специальным образом размещенное в памяти, пользующееся специальными системными вызовами, поддерживались также системные вызовы, дающие возможность приложению обращаться к своему родительскому интерпретатору команд).
Команда командной строки есть не более чем имя файла программы, не требуется специальная регистрация и специальная разработка программ как команд (что являлось обычной практикой в RSX-11, RT-11).
Не принят подход с программой, задающей пользователю вопросы о режимах своей работы, вместо этого используются параметры командной строки (в VMS, RSX-11, RT-11 программы работали также с командной строкой, но при её отсутствии выдавали запрос на ввод параметров).
Пространство имён устройств на диске в каталоге /dev, поддающееся управлению администратором, в отличие от подхода Windows, где это пространство имен размещается в памяти ядра, и администрирование этого пространства (например, задание прав доступа) крайне затруднено из-за отсутствия его постоянного хранения на дисках (строится каждый раз при загрузке).
Широкое использование текстовых файлов для хранения настроек, в отличие от двоичной базы данных настроек, как, например, в Windows.
Широкое использование утилит обработки текста для выполнения повседневных задач под управлением скриптов.
«Раскрутка» ОС после загрузки ядра путём исполнения скриптов стандартным интерпретатором команд.
Широкое использование именованных каналов (pipe).
Все процессы, кроме init, равны между собой, не бывает «специальных процессов».
Адресное пространство делится на глобальное для всех процессов ядро и на локальную для процесса части, нет «групповой» части адресного пространства, как в VMS и Windows NT, как и возможности загрузки туда кода и его исполнения там.
Использование двух уровней привилегий процессора вместо четырёх в VMS.
Отказ от использования оверлеев в пользу деления программы на несколько программ поменьше, общающихся через именованные каналы или временные файлы.
Отсутствие APC и аналогов, то есть произвольных (а не жестко перечисленных в стандартном множестве) сигналов, не доставляемых до явного пожелания процесса их получить (Windows, VMS).
Концепция сигнала уникальна для UNIX, и крайне сложна в переносе на другие ОС, такие как Windows.