Unix

Unix – это семейство операционных систем, основанное на исходном коде идей, разработанных в лаборатории Белл в начале 1970-х годов, для компьютеров PDP-11 и VAX. Unix основан на парадигме мультипользовательской и многозадачной работы. Он обеспечивает набор утилит и команд для работы с файловой системой, сетью, процессами и другими компонентами системы. Unix также известен своей стабильностью, гибкостью и надежностью.
Unix имеет различные дистрибутивы, такие как macOS, Linux и FreeBSD. Каждый из них имеет свои особенности и используется для различных целей, от настольных компьютеров до серверов. Идеи, заложенные в основу Unix, оказали огромное влияние на развитие компьютерных операционных систем. В настоящее время Unix-системы признаны одними из самых исторически важных операционных систем.
Unix стал основой для развития многих других операционных систем, включая FreeBSD, Linux, Android и iOS. Он широко используется в серверных окружениях, научных исследованиях, разработке программного обеспечения и других областях информационных технологий. С понятием UNIX тесно связаны такие понятия, как X.11, TCP/IP, POSIX, CUPS, IPP, LPD и т.д. По факту, большинство технологий, как либо связанных с сетью Интернет, появились и развивались именно в UNIX.

Юридически право называться «UNIX» имеют лишь те операционные системы, которые прошли сертификацию на соответствие стандарту Single UNIX Specification. Остальные же, хотя и используют сходные концепции и технологии, называются Unix-подобными операционными системами.

Основное отличие Unix-подобных систем от других операционных систем заключается в том, что это изначально многопользовательские многозадачные системы. В Unix может одновременно работать сразу много людей, каждый за своим терминалом (исторически, чаще всего подключенным локально по технологии RS-232 или токовая петля, или по сети по SSH или Telnet) при этом каждый из них может выполнять множество различных вычислительных процессов, которые будут использовать ресурсы именно этого компьютера.

Вторая колоссальная заслуга Unix — в её мультиплатформенности. Ядро системы разработано таким образом, что его легко можно приспособить практически под любой процессор или микропроцессор.

Unix имеет и другие характерные особенности:

  • использование простых текстовых файлов для настройки и управления системой;
  • широкое применение утилит, запускаемых из командной строки;
  • взаимодействие с пользователем посредством виртуального устройства — терминала;
  • представление физических и виртуальных устройств и некоторых средств межпроцессного взаимодействия в виде файлов;
  • использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу.

Важной особенностью Unix стала реализация в 1980 году стека протоколов TCP/IP. До этого межмашинное взаимодействие в Unix пребывало в зачаточном состоянии — наиболее существенным способом связи был UUCP (средство копирования файлов из одной Unix-системы в другую, изначально работавшее по телефонным сетям, обычно применялся модем).

Особенности Unix, отличающие данное семейство от других систем:

  • файловая система древовидная, чувствительная к регистру символов в именах, очень слабые ограничения на длину имён и пути;
  • нет поддержки структурированных файлов ядром, на уровне системных вызовов файл есть поток байтов;
  • командная строка находится в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора команд (как это происходит, например, в RSX-11);
  • для передачи контекста используются переменные окружения;
  • запуск процессов вызовом fork(), то есть возможность клонирования текущего процесса со всем состоянием;
  • понятия стандартного ввода, стандартного вывода и стандартного вывода ошибок;
  • ввод-вывод только через дескрипторы файлов;
  • интерпретатор команд реализуется как обыкновенное приложение, общающееся с ядром обыкновенными системными вызовами (в RSX-11 и OpenVMS интерпретатор команд выполнялся как специальное приложение, специальным образом размещённое в памяти, пользующееся специальными системными вызовами, поддерживались также системные вызовы, дающие возможность приложению обращаться к своему родительскому интерпретатору команд);
  • команда командной строки есть не более чем имя файла программы, не требуется специальная регистрация и специальная разработка программ как команд (что являлось обычной практикой в RSX-11RT-11).
  • не принят подход с программой, задающей пользователю вопросы о режимах своей работы, вместо этого используются параметры командной строки (в VMS, RSX-11, RT-11 программы работали также с командной строкой, но при её отсутствии выдавали запрос на ввод параметров);
  • пространство имён устройств в каталоге /dev, поддающееся управлению системным администратором, в отличие от подхода Windows, где это пространство имён размещается в памяти ядра, и администрирование этого пространства (например, задание прав доступа) крайне затруднено из-за отсутствия его постоянного хранения (строится каждый раз при загрузке);
  • широкое использование текстовых файлов для хранения настроек, в отличие от двоичной базы данных настроек, как, например, в Windows;
  • широкое использование утилит обработки текста для выполнения повседневных задач под управлением сценариев;
  • «раскрутка» системы после загрузки ядра путём исполнения сценариев стандартным интерпретатором команд;
  • широкое использование именованных каналов (pipe);
  • все процессы, кроме init, равны между собой, не бывает «специальных процессов»;
  • адресное пространство делится на глобальное для всех процессов ядро и на локальную для процесса части, нет «групповой» части адресного пространства, как в VMS и Windows NT, как и возможности загрузки туда кода и его исполнения там;
  • использование двух уровней привилегий процессора (вместо, например, четырёх в VMS);
  • отказ от использования оверлеев в пользу деления программы на несколько программ поменьше, общающихся через именованные каналы или временные файлы;
  • отсутствие APC и аналогов, то есть произвольных (а не жёстко перечисленных в стандартном множестве) сигналов, не доставляемых до явного пожелания процесса их получить (Windows, VMS).
  • концепция сигнала уникальна для Unix, и крайне сложна в переносе на другие системы, такие как Windows.

Обсуждение закрыто.