Сайт о телевидении

Сайт о телевидении

» » Различия между UNIX и Linux. Особенности операционных систем семейства UNIX

Различия между UNIX и Linux. Особенности операционных систем семейства UNIX

Краткие сведения о развитии ОС UNIX

ОС UNIX появилась в конце 60-х годов, как операционная система для мини-ЭВМ PDP-7. Активное участие в разработке приняли Кеннет Томсон и Деннис Ритчи.

Особенностями ОС UNIX стали: многопользовательский режим, новая архитектура файловой системы и др.

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

С 1974 года ОС UNIX распространяется в университетах США в исходных кодах.

Версии UNIX

С самого начала распространения UNIX в американских университетах начали появляться различные версии ОС.

Для упорядочивания фирма AT&T в 1982 объединила несколько версий в одну назвала вариант ОС – System III. В 1983 году была выпущена коммерческая версия – System V. В 1993 году AT&T продала свои права на UNIX фирме Novell, которая далее консорциуму X/Open и Santa Cruz Operation (SCO).

Другая линия ОС UNIX – BSD разрабатывается в Калифорнийском университете (Беркли). Существуют бесплатные версии FreeBSD, OpenBSD.

К семейству OSF/1 – Open Software Foundation – относятся ОС консорциума IBM, DEC и Hewlett Packard. К числу ОС данного семейства относятся – HP-UX, AIX, Digital UNIX.

Бесплатные версии ОС семейства UNIX

Существует большое количество бесплатных версий UNIX.

FreeBSD, NetBSD, OpenBSD – варианты, разрабатываемые на основе ОС BSD.

Наиболее популярное семейство бесплатных UNIX-систем – это системы семейства Linux . Первый вариант Linux был разработан Линусом Торвальдсом в 1991 г. В настоящее время существует несколько вариантов Linux: Red Hat, Mandrake, Slackware, SuSE, Debian.

Общие черты UNIX-систем

Различные варианты UNIX обладают рядом общих черт:

Мультипрограммная обработка в режиме разделения времени, основанная на вытесняющей многозадачности;

Поддержка многопользовательского режима;

Использование механизмов виртуальной памяти и свопинга;

Иерархическая файловая система;

Унификация операций ввода/вывода на основе расширенного использования понятия файл;

Переносимость системы;

Наличие сетевых средств взаимодействия.

Достоинства UNIX-систем

К числу достоинств ОС семейства UNIX относят:



Переносимость;

Эффективная реализация многозадачности;

Открытость;

Наличие и строгое соблюдение стандартов;

Единая файловая система;

Мощный командный язык;

Наличие значительного числа программных продуктов;

Реализация стека протокола TCP/IP;

Возможность работы в роли сервера или рабочей станции.

Серверы на основе UNIX

Сервер – компьютер, обрабатывающий запросы других компьютеров в сети и предоставляющий собственные ресурсы для хранения, обработки и передачи данных. Сервер под управлением UNIX может выполнять следующие роли:

Файловый сервер;

Web-сервер;

Почтовый сервер;

Сервер дистанционной регистрации (аутентификации);

Вспомогательные серверы Web-служб (DNS, DHCP);

Сервер доступа к сетям Интернет

Управление компьютером под управлением UNIX

При работе с UNIX-системой в режиме сервера, как правило, используется режим удаленного доступа с помощью некоторой терминальной программы.

Сеанс работы начинается с ввода регистрационного имени и пароля доступа

Часто для решения задач управления сервером ограничиваются командным режимом работы. В этом случае, для управления используется ввод специальных команд в командную строку в специальном формате. Командная строка имеет специальное приглашение, например:

Общий вид команды:

  1. -bash-2.05b$ команда [опции] [параметры]

Например, вызов справки по ОС имеет вид:

  1. -bash-2.05b$ man [ключи] [тема]
  2. Для вызова справки по использованию команды man введите
  3. -bash-2.05b$ man man

Интерпретация командной строки

При вводе команд используются следующие соглашения:

Первое слово в командной строке является именем команды;

Остальные слова – аргументы.

Среди аргументов выделяются ключи (опции) – предопределенные для каждой команды слова (символы), начинающиеся с одной (краткий формат) или пары дефисов (длинный формат). Например:

Bash-2.05b$ tar –c –f arch.tar *.c

Bash-2.05b$ tar - -create - -file=arch.tar *.c

При задании опций они могут объединятся. Например следующие команды равноправны:

Bash-2.05b$ ls –a –l

Bash-2.05b$ ls –l –a

Bash-2.05b$ ls –al

Другие аргументы указывают на объекты, над которыми выполняются операции.

Переменные оболочки

При работе в системе существует способ передачи параметров в программы, кроме использования ключей командной оболочки, – использование переменных окружения. Для задания переменной окружения используется команда set. Формат команды:

Bash-2.05b$ set имя_переменной=значение

Удаление переменной окружения выполняется командой unset.

Для обращения к значению переменной используется обозначение $имя_переменной, например команда:

Bash-2.05b$ echo $PATH

Выведет значение переменной PATH.

Первое значение термина упирается в рассмотрение структур, в которые могут быть организованы файлы на носителях данных. Существует несколько видов таких структур: линейные, древовидные, объектные и другие, но в настоящее время широко распространены только древовидные структуры.

Каджый файл в древовидной структуре расположен в определенном хранилище файлов – каталоге , каждый каталог, в свою очередь, также расположен в некотором каталоге. Таким образом, по принципу вложения элементов файловой системы (файлов и каталогов) друг в друга строится дерево, вершинами которого являются непустые каталоги, а листьями – файлы или пустые каталоги. Корень такого дерева имеет название корневой каталог и обозначается каким-либо специальным символом или группой символов (например, «C: » в операционной системе Windows). Каждому файлу соответствует некоторое имя , отпределяющее его расположение в дереве файловой системы. Полное имя файла состоит из имен всех вершин дерева файловой системы, через которые можно пройти от корня до данного файла (каталога), записывая их слева-направо и разделяя специальными символами-разделителями.

В настоящее время существует огромное количество файловых систем, каждая из которых используется для определенной цели: для быстрого доступа к данным, для обеспечения целостности данных при сбоях системы, для простоты реализации, для компактного хранения данных, и т.д. Однако среди всего множества файловых систем можно выделить такие, которые обладают рядом схожих признаков, а именно:

Файлы и каталоги идентифицируются не по именам, а по индексным узлам (i-node) – индексам в общем массиве файлов для данной файловой системе. В этом массиве хранится информация об используемых блоках данных на носителе, а также – длина файла, владелец файла, права доступа и другая служебная информация под общим названием «метаданные о файле ». Логические же связки типа «имя–i-node » – есть ни что иное как содержимое каталогов.

Таким образом, каждый файл характеризуется одним i-node, но может быть связан с несколькими именами – в UNIX это называют жёсткими ссылками (см. Рисунок 1.22, «Пример жесткой ссылки»). При этом, удаление файла происходит тогда, когда удаляется последняя жёсткая ссылка на этот файл.

Важной особенностью таких файловых систем является то, что имена файлов зависят от регистра, другими словами файлы test.txt и TEST.txt отличаются (т.е. являются разными строками в файле директории).

В определенных (фиксированных для данной файловой системы) блоках физического носителя данных находится т.н. суперблок . Суперблок – это наиболее ответственная область файловой системы, содержащая информацию для работы файловой системы в целом, а также – для ёе идентификации. В суперблоке находится «магическое число » – идентификатор файловой системы, отличающий её от других файловых систем, список свободных блоков, список свободных i-node"ов и некоторая другая служебная информация.

  • Помимо каталогов и обычных файлов для хранения информации, ФС может содержать следующие виды файлов:

    Специальный файл устройства

    Обеспечивает доступ к физическому устройству. При создании такого устройства указывается тип устройства (блочное или символьное), старший номер – индекс драйвера в таблице драйверов операционной системы и младший номер – параметр, передаваемый драйверу, поддерживающему несколько устройств, для уточнения о каком «подустройстве » идет речь (например, о каком из нескольких IDE-устройств или COM-портов).

    Именованный канал Символическая ссылка

    Особый тип файла, содержимое которого – не данные, а имя какого-либо другого файла (см. Рисунок 1.23, «Пример символической ссылки» . Для пользователя такой файл неотличим от того, на который он ссылается.

    Символическая ссылка имеет ряд преимуществ по сравнению с жёсткой ссылкой: она может использоваться для связи файлов в разных файловых системах (ведь номера индексных узлов уникальны только в рамках одной файловой системы), а также более прозрачно удаление файлов – ссылка может удаляться совершенно независимо от отсновного файла.

    Сокет
  • Такие файловые системы наследуют особенности оригинального UNIX. К ним можно отнести, например: s5 (используемая в версиях UNIX System V), ufs (BSD UNIX), ext2, ext3, reiserfs (Linux), qnxfs (QNX). Все эти файловые системы различаются форматами внутренних структур, но совместимы с точки зрения основных концепций.

    Дерево каталогов

    Рассмотрение второго значения термина ФС приводит нас к уже обозначенной ранее совокупности процедур, осуществляющих доступ к файлам на различных носителях. Особенностью операционных систем семейства UNIX является существование единого дерева файловой системы для любого количества носителей данных с одинаковыми или разными типами файловых систем на них. Это достигается путем монтирования – временной подстановкой вместо каталога одной файловой системы дерева другой файловой системы, вследствие чего система имеет не несколько деревьев никак не связанных друг с другом, а одно большое разветвленное дерево с единым корневым каталогом.

    Файловая подсистема операционной системы UNIX имеет имеет уникальную систему обработки запросов к файлам – переключатель файловых систем или виртуальная файловая система (VFS ). VFS предоставляет пользователю стандартный набор функций (интерфейс) для работы с файлами, вне зависимости от места их расположения и принадлежности к разным файловым системам.

    В мире стандартов UNIX определено, что корневой каталог единого дерева файловой системы должен иметь имя / , как и символ-разделитель при формировании полного имени файла. Тогда полное имя файла может быть, например, /usr/share/doc/bzip2/README . Задача VFS – по полному имени файла найти его местоположение в дереве файловой системы, определить её тип в этом месте дерева и «переключить », т.е. передать файл на дальнейшую обработку драйверу конктретной файловой системы. Такой подход позволяет использовать практически неограниченое количество различных файловых систем на одном компьютере под управлением одной операционной системы, а пользователь даже не будет знать, что файлы физически находятся на разных носителях информации.

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

    Рисунок 1.24. Стандартные каталоги в файловой системе UNIX

    Приведем краткое описание основных каталогов системы, формально описываемых специальным стандартом на иерархию файловой системы (Filesystem Hierarchy Standart). Все каталоги можно разделить на две группы: для статической (редко меняющейся) информации – /bin , /usr и динамической (часто меняющейся) информации – /var , /tmp . Исходя из этого администраторы могут разместить каждый из этих каталогов на собственном носителе, обладающем соответствующими характеристиками.

    Корневой каталог

    Корневой каталог / является основой любой ФС UNIX. Все остальные каталоги и файлы располагаются в рамках струтуры (дерева), порождённой корневым каталогом, независимо от их физического местонахождения.

    /bin

    В этом каталоге находятся часто употребляемые команды и утилиты системы общего пользования. Сюда входят все базовые команды, доступные даже если была примонтирована только корневая файловая система. Примерами таких команд являются: ls , cp , sh и т.п..

    /boot

    Директория содержит всё необходимое для процесса загрузки операционной системы: программу-загрузчик, образ ядра операционной системы и т.п..

    /dev

    Каталог содержит специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Наличие такого каталога не означает, что специальные файлы устройств нельзя создавать в другом месте, просто достаточно удобно иметь один каталог для всех файлов такого типа.

    /etc

    В этом каталоге находятся системные конфигурационные файлы. В качестве примеров можно привести файлы /etc/fstab , содержащий список монтируемых файловых систем, и /etc/resolv.conf , который задаёт правила составления локальных DNS-запросов. Среди наиболее важных файлов – скрипты инифиализации и деинициализации системы. В системах, наследующих особенности UNIX System V, для них отведены каталоги с /etc/rc0.d по /etc/rc6.d и общий для всех файл описания – /etc/inittab .

    /home (необязательно)

    Директория содержит домашние директории пользователей. Её существование в корневом каталоге не обязательно и её содержимое зависит от особенностей конкретной UNIX-подобной операционной системы.

    /lib

    Каталог для статических и динамических библиотек, необходимых для запуска программ, находящихся в директориях /bin и /sbin .

    /mnt

    Стандартный каталог для временного монтирования файловых систем – например, гибких и флэш-дисков, компакт-дисков и т.п..

    /root (необязательно)

    Директория содержит домашюю директорию суперпользователя. Её существование в корневом каталоге не обязательно.

    /sbin

    В этом каталоге находятся команды и утилиты для системного администратора. Примерами таких команд являются: route , halt , init и т.п.. Для аналогичных целей применяются директории /usr/sbin и /usr/local/sbin .

    /usr

    Эта директория повторяет структуру корневой директории – содержит каталоги /usr/bin , /usr/lib , /usr/sbin , служащие для аналогичных целей.

    Каталог /usr/include содержит заголовочные файлы языка C для всевозможные библиотек, расположенных в системе.

    Каталог /usr/local является следующим уровнем повторения корневого каталога и служит для хранения программ, установленных администратором в дополнение к стандартной поставке операционной системы.

    Каталог /usr/share хранит неизменяющиеся данные для установленных программ. Особый интерес представляет каталог /usr/share/doc , в который добавляется документация ко всем установленным программам.

    /var , /tmp

    Используются для хранения временных данных процессов – системных и пользовательских соответственно.

    UNIX зародился в лаборатории Bell Labs фирмы AT&T более 20 лет назад.

    UNIX – это многопользовательская, многозадачная ОС, включает в себя достаточно мощные средства защиты программ и файлов различных пользователей. Написана на языке С и является машинно-независимой, что обеспечивает ее высокую мобильность и легкую переносимость прикладных программ на ПК различной архитектуры. Важной особенностью ОС семейства UNIX является ее модульность и обширный набор сервисных программ, которые позволяют создать благоприятную операционную обстановку для пользователей-программистов.

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

    ОС UNIX имеет следующие основные характеристики:

    Переносимость;

    - вытесняющая многозадачность на основе процессов, работающих в изолированных адресных пространствах в виртуальной памяти;

    Поддержка одновременной работы многих пользователей;

    Поддержка асинхронных процессов;

    Иерархическая файловая система;

    Поддержка независимых от устройств операций ввода-вывода (через специальные файлы устройств);

    Стандартный интерфейс для программ (программные каналы, IPC) и пользователей (командный интерпретатор, не входящий в ядро ОС);

    Встроенные средства учета использования системы.

    Архитектура ОС UNIX - многоуровневая. На нижнем уровне работает ядро операционной системы. Функции ядра (управление процессами, памятью, обработка прерываний и т.д.) доступны через интерфейс системных вызовов , образующих второй уровень. Системные вызовы обеспечивают программный интерфейс для доступа к процедурам ядра. На следующем уровне работают командные интерпретаторы , команды и утилиты системного администрирования, коммуникационные драйверы и протоколы , - все то, что обычно относят к системному программному обеспечению . Внешний уровень образуют прикладные программы пользователя, сетевые и другие коммуникационные службы, СУБД и утилиты.

    Операционная система выполняет две основные задачи: манипулирование данными и их хранение. Большинство программ в основном манипулирует данными, но, в конечном счете, они где-нибудь хранятся. В системе UNIX таким местом хранения является файловая система . Более того, в UNIX все устройства , с которыми работает операционная система, также представлены в виде специальных файлов в файловой системе.

    Логическая файловая система в ОС UNIX (или просто файловая система ) - это иерархически организованная структура всех каталогов и файлов в системе, начинающаяся с корневого каталога. Файловая система UNIX обеспечивает унифицированный интерфейс доступа к данным, расположенным на различных носителях, и к периферийным устройствам. Логическая файловая система может состоять из одной или нескольких физических файловых (под)систем , являющихся разделами физических носителей (дисков, CD-ROM или дискет).


    Файловая система контролирует права доступа к файлам, выполняет операции создания и удаления файлов, а также выполняет запись/чтение данных файла. Файловая система обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода-вывода.

    Иерархическая структура файловой системы UNIX упрощает ориентацию в ней. Каждый каталог, начиная с корневого (/ ), в свою очередь, содержит файлы и подкаталоги .

    В ОС UNIX нет теоретических ограничений на количество вложенных каталогов, но есть ограничения на максимальную длину имени файла, которое указывается в командах - 1024 символов.

    В UNIX существует несколько типов файлов, различающихся по функциональному назначению:

    Обычный файл - наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. К этим файлам относятся текстовые файлы, двоичные данные и выполняемые программы.

    Каталог- это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию, позволяющие операционной системе производить действия с этими файлами. С помощью каталогов формируется логическое дерево файловой системы.

    Специальный файл устройства - Обеспечивает доступ к физическим устройствам. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.

    FIFO - именованный канал. Этот файл используется для связи между процессами по принципу очереди.

    Сокет- позволяют представить в виде файла сетевое соединение.

    Каждый файл в ОС UNIX содержит набор прав доступа, по которому определяется, как пользователь взаимодействует с данным файлом.

    Каждый жесткий диск состоит из одной или нескольких логических частей - разделов. Расположение и размер раздела определяется при форматировании диска. В ОС UNIX разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных. В разделе может располагаться только одна физическая файловая система .

    Имеется много типов физических файловых систем, например FAT16 и NTFS, с разной структурой. Более того, имеется множество типов физических файловых систем UNIX (ufs , s5fs , ext2 , vxfs , jfs , ffs и т.д.).

    С языком высокого уровня . Примерно в 1969 году Кен Томпсон при содействии Денниса Ритчи разработал и реализовал язык Би (B), представлявший собой упрощённый (для реализации на мини-компьютерах) вариант разработанного в языка BCPL . Би, как и BCPL, был интерпретируемым языком. В 1972 году была выпущена вторая редакция Unix, переписанная на языке Би. В 1969-1973 гг. на основе Би был разработан компилируемый язык, получивший название Си (C).

    Раскол

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

    Было предложено два интерфейса программирования сетевых приложений: Berkley sockets (сокет Беркли) и интерфейс транспортного уровня TLI (англ. Transport Layer Interface ).

    Интерфейс Berkley sockets был разработан в университете Беркли и использовал стек протоколов TCP/IP , разработанный там же. TLI был создан AT&T в соответствии с определением транспортного уровня модели OSI и впервые появился в системе System V версии 3. Хотя эта версия содержала TLI и потоки, первоначально в ней не было реализации TCP/IP или других сетевых протоколов, но подобные реализации предоставлялись сторонними фирмами.

    Реализация TCP/IP официально и окончательно была включена в базовую поставку System V версии 4. Это, как и другие соображения (по большей части, рыночные), вызвало окончательное размежевание между двумя ветвями Unix - BSD (университета Беркли) и System V (коммерческая версия от AT&T). Впоследствии, многие компании, лицензировав System V у AT&T, разработали собственные коммерческие разновидности Unix, такие как AIX , CLIX, HP-UX , IRIX , Solaris .

    Современные реализации Unix, как правило, не являются системами V или BSD в чистом виде. Они реализуют возможности как System V, так и BSD.

    Свободные Unix-подобные операционные системы

    В настоящий момент GNU/Linux и представители семейства BSD быстро отвоёвывают рынок у коммерческих Unix-систем и одновременно проникают как на настольные компьютеры конечных пользователей, так и на мобильные и встраиваемые системы.

    Проприетарные системы

    После разделения компании AT&T товарный знак Unix и права на оригинальный исходный код неоднократно меняли владельцев, в частности, они длительное время принадлежали компании Novell .

    Влияние Unix на эволюцию операционных систем

    Unix-системы имеют большую историческую важность, поскольку благодаря им распространились некоторые популярные сегодня концепции и подходы в области ОС и программного обеспечения . Также, в ходе разработки Unix-систем был создан язык Си .

    Широко используемый в системном программировании язык Си , созданный изначально для разработки Unix, превзошёл Unix по популярности. Язык Си был первым «веротерпимым» языком, который не пытался навязать программисту тот или иной стиль программирования. Си был первым высокоуровневым языком, предоставляющим доступ ко всем возможностям процессора, таким как ссылки , таблицы , битовые сдвиги , инкременты и т. п. С другой стороны, свобода языка Си приводила к ошибкам переполнения буфера в таких функциях стандартной библиотеки Си, как gets и scanf. Результатом стали многие печально известные уязвимости, например, та, что эксплуатировалась в знаменитом черве Морриса .

    Первые разработчики Unix способствовали внедрению принципов модульного программирования и повторного использования в инженерную практику.

    Unix предоставлял возможность использования протоколов TCP/IP на сравнительно недорогих компьютерах, что привело к быстрому росту Интернета . Это, в свою очередь, способствовало быстрому обнаружению нескольких крупных уязвимостей в системе безопасности, архитектуре и системных утилитах Unix.

    Со временем ведущие разработчики Unix разработали культурные нормы разработки программного обеспечения, которые стали столь же важны, как и сам Unix. ( )

    Одними из самых известных примеров Unix-подобных ОС являются macOS , чьих? ] тогдашний Unix имел недостатки по сравнению с данными ОС (например, отсутствие серьёзных движков баз данных), он был: а) дешевле, а иногда и бесплатен для академических учреждений; б) был портируем с оборудования на оборудование и разработан на портируемом языке Си, что «отвязывало» разработку программ от конкретной аппаратуры. Кроме того, «отвязанным» от аппаратуры и производителя оказался и опыт пользователя - человек, работавший с Unix на VAX, легко работал с ней же и на 68xxx, и так далее.

    Производители аппаратуры в то время часто прохладно относились к Unix, считая её игрушечной, и предлагая свою проприетарную ОС для серьёзной работы - в первую очередь СУБД и основанных на них бизнес-приложений в коммерческих структурах. Известны комментарии по этому поводу от DEC по поводу её VMS . К этому прислушивались корпорации, но не академическая среда, которая имела всё для себя необходимое в Unix, зачастую не требовала официальной поддержки от производителя, справляясь своими силами, и ценила дешевизну и переносимость Unix. Таким образом, Unix была едва ли не первой переносимой на разную аппаратуру ОС.

    Вторым резким взлётом Unix было появление RISC -процессоров около 1989 года. Ещё до того существовали т. н. workstations - персональные однопользовательские компьютеры большой мощности, имеющие достаточный объём памяти, жёсткого диска и достаточно развитую ОС (многозадачность, защита памяти) для работы с серьёзными приложениями, такими как CADы. Среди производителей таких машин выделялась компания Sun Microsystems , сделавшая себе на них имя.

    До появления RISC-процессоров в этих станциях обычно использовался процессор Motorola 680x0 , тот же, что и в компьютерах фирмы Apple (хотя и под более развитой операционной системой, чем у Apple). Около 1989 года на рынке появились коммерческие реализации процессоров RISC-архитектуры. Логичным решением ряда компаний (Sun и других) был перенос Unix на эти архитектуры, что немедленно повлекло за собой и перенос всей экосистемы ПО для Unix.

    Проприетарные серьёзные ОС, такие как VMS, начали свой закат именно с этого момента (даже если и удалось перенести на RISC саму ОС, всё было намного сложнее с приложениями под неё, которые в этих экосистемах зачастую разрабатывались на ассемблере или же на проприетарных языках типа BLISS), и Unix стал ОС для самых мощных компьютеров в мире.

    Однако в это время экосистема начала переходить на GUI в лице Windows 3.0 . Огромные преимущества GUI, а также, например, унифицированная поддержка всех типов принтеров, были оценены и разработчиками, и пользователями. Это сильно подорвало позиции Unix на рынке PC - такие реализации, как SCO и Interactive UNIX, не справлялись с поддержкой Windows-приложений. Что же касается GUI для Unix, называемого X11 (были и иные реализации, много менее популярные), то он не мог полноценно работать на обычной пользовательской PC ввиду требований к памяти - для нормальной работы X11 требовалось 16 МБ, в то время как Windows 3.1 с достаточной производительностью исполняла и Word, и Excel одновременно в 8 МБ (это было стандартным размером памяти PC в то время). При высоких ценах на память это было лимитирующим фактором.

    Успех Windows дал импульс внутреннему проекту Microsoft под названием Windows NT , которая была совместима с Windows по API, но при этом имела всё те же архитектурные особенности серьёзной ОС, что и Unix - многозадачность, полноценную защиту памяти, поддержку многопроцессорных машин, права доступа к файлам и каталогам, системный журнал. Также Windows NT представила журнальную файловую систему NTFS , которая по возможностям на тот момент превышала все стандартно поставляемые с Unix файловые системы - аналоги под Unix были только отдельными коммерческими продуктами от Veritas и других.

    Хотя Windows NT и не была популярна первоначально, из-за высоких требований к памяти (те же 16 МБ), она позволила Microsoft выйти на рынок решений для серверов , например, СУБД . Многие в то время не верили в возможность Microsoft, традиционно специализирующейся на настольном ПО, быть игроком на рынке ПО масштаба предприятия, где уже были свои громкие имена, такие как Oracle и Sun. К этому сомнению добавлялся тот факт, что СУБД Microsoft - SQL Server - начинался как упрощённая версия Sybase SQL Server, лицензированная у Sybase и на 99 % совместимая по всем аспектам работы с ним.

    Во второй половине 1990-х годов Microsoft начал теснить Unix и на рынке корпоративных серверов.

    Совокупность вышеперечисленных факторов, а также обвал цен на 3D-видеоконтроллеры , ставшими из профессионального оборудования домашним, по сути убила само понятие workstation к началу 2000-х годов.

    Кроме того, системы Microsoft проще в управлении, особенно в типовых сценариях использования.

    Но в данный момент начался третий резкий взлёт Unix.

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

    В дальнейшем Linux достигал всё новых и новых высот:

    • перенос серьёзных проприетарных продуктов, таких как Oracle ;
    • серьёзный интерес IBM к этой экосистеме как основе для своих вертикальных решений;
    • появление аналогов почти всех привычных программ из мира Windows;
    • отказ некоторых производителей оборудования от обязательной предустановки Windows;
    • выпуск нетбуков с одной лишь Linux;
    • использование в качестве ядра в Android .

    На настоящий момент Linux является заслуженно популярной ОС для серверов, хотя и куда менее популярной на рабочих столах.

    UNIX - семейство переносимых, многозадачных и многопользовательских операционных систем .

    Идеи, заложенные в основу UNIX, оказали огромное влияние на развитие компьютерных операционных систем. В настоящее время UNIX-системы признаны одними из самых исторически важных ОС.

    Обзор

    Первая система UNIX была разработана в подразделении Bell Labs компании AT&T . С тех пор было создано большое количество различных UNIX-систем. Юридически право называться «UNIX» имеют лишь те операционные системы, которые прошли сертификацию на соответствие стандарту Single UNIX Specification . Остальные же, хотя и используют сходные концепции и технологии, называются UNIX-подобными операционными системами (англ. UNIX-like ). Для краткости, в данной статье под UNIX-системами подразумеваются как истинные UNIX, так и UNIX-подобные ОС .

    Особенности

    Основное отличие UNIX-подобных систем от других операционных систем заключается в том, что это изначально многопользовательские многозадачные системы. То есть в один и тот же момент времени сразу множество людей может выполнять множество вычислительных задач (процессов). Даже популярную во всём мире систему Microsoft Windows нельзя назвать полноценной многопользовательской системой, так как кроме некоторых серверных версий, в один и тот же момент за одним компьютером с Windows может работать только один человек. В Unix может работать сразу много людей, при этом каждый из них может выполнять множество различных вычислительных процессов, которые будут использовать ресурсы именно этого компьютера.

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

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

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

    Применение

    В настоящее время UNIX-системы распространены в основном среди серверов , а также как встроенные системы для различного оборудования. Среди ОС для рабочих станций и домашнего применения UNIX и UNIX-подобные ОС занимают после Microsoft Windows второе (macOS), третье (GNU/Linux) и многие последующие места по популярности.

    История

    Предшественники

    Первые версии UNIX были написаны на ассемблере и не имели встроенного компилятора с языком высокого уровня . Примерно в 1969 году Кен Томпсон при содействии Денниса Ритчи разработал и реализовал язык Би (B), представлявший собой упрощённый (для реализации на мини-компьютерах) вариант разработанного в языка BCPL . Би, как и BCPL, был интерпретируемым языком. В 1972 году была выпущена вторая редакция UNIX, переписанная на языке Би. В 1969-1973 гг. на основе Би был разработан компилируемый язык, получивший название Си (C).

    Раскол

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

    Было предложено два интерфейса программирования сетевых приложений: Berkley sockets (сокет Беркли) и интерфейс транспортного уровня TLI (англ. Transport Layer Interface ).

    Интерфейс Berkley sockets был разработан в университете Беркли и использовал стек протоколов TCP/IP , разработанный там же. TLI был создан AT&T в соответствии с определением транспортного уровня модели OSI и впервые появился в системе System V версии 3. Хотя эта версия содержала TLI и потоки, первоначально в ней не было реализации TCP/IP или других сетевых протоколов, но подобные реализации предоставлялись сторонними фирмами.

    Реализация TCP/IP официально и окончательно была включена в базовую поставку System V версии 4. Это, как и другие соображения (по большей части, рыночные), вызвало окончательное размежевание между двумя ветвями UNIX - BSD (университета Беркли) и System V (коммерческая версия от AT&T). Впоследствии, многие компании, лицензировав System V у AT&T, разработали собственные коммерческие разновидности UNIX, такие как AIX , CLIX, HP-UX , IRIX , Solaris .

    Современные реализации UNIX, как правило, не являются системами V или BSD в чистом виде. Они реализуют возможности как System V, так и BSD.

    Свободные UNIX-подобные операционные системы

    В настоящий момент GNU/Linux и представители семейства BSD быстро отвоёвывают рынок у коммерческих UNIX-систем и одновременно проникают как на настольные компьютеры конечных пользователей, так и на мобильные и встраиваемые системы.

    Проприетарные системы

    После разделения компании AT&T, товарный знак UNIX и права на оригинальный исходный код неоднократно меняли владельцев, в частности, они длительное время принадлежали компании Novell .

    Влияние UNIX на эволюцию операционных систем

    UNIX-системы имеют большую историческую важность, поскольку благодаря им распространились некоторые популярные сегодня концепции и подходы в области ОС и программного обеспечения . Также, в ходе разработки UNIX-систем был создан язык Си .

    Широко используемый в системном программировании язык Си , созданный изначально для разработки UNIX, превзошёл UNIX по популярности. Язык Си был первым «веротерпимым» языком, который не пытался навязать программисту тот или иной стиль программирования. Си был первым высокоуровневым языком, предоставляющим доступ ко всем возможностям процессора, таким как ссылки , таблицы , битовые сдвиги , инкременты и т. п. С другой стороны, свобода языка Си приводила к ошибкам переполнения буфера в таких функциях стандартной библиотеки Си, как gets и scanf. Результатом стали многие печально известные уязвимости, например, та, что эксплуатировалась в знаменитом черве Морриса .

    Первые разработчики UNIX способствовали внедрению принципов модульного программирования и повторного использования в инженерную практику.

    UNIX предоставлял возможность использования протоколов TCP/IP на сравнительно недорогих компьютерах, что привело к быстрому росту Интернета . Это, в свою очередь, способствовало быстрому обнаружению нескольких крупных уязвимостей в системе безопасности, архитектуре и системных утилитах UNIX.

    Со временем ведущие разработчики UNIX разработали культурные нормы разработки программного обеспечения, которые стали столь же важны, как и сам UNIX. ( )

    Одними из самых известных примеров UNIX-подобных ОС являются macOS , Solaris , BSD и NeXTSTEP .

    Социальная роль в сообществе ИТ-профессионалов и историческая роль

    Первоначальные UNIX работали на крупных многопользовательских компьютерах, к которым также предлагались и проприетарные ОС от производителя оборудования, такие как RSX-11 и её потомок VMS . Невзирая на то, что по ряду мнений [чьих? ] тогдашний UNIX имел недостатки по сравнению с данными ОС (например, отсутствие серьёзных движков баз данных), он был: а) дешевле, а иногда и бесплатен для академических учреждений б) был портируем с оборудования на оборудование, и разработан на портируемом языке Си, что «отвязывало» разработку программ от конкретной аппаратуры. Кроме того, «отвязанным» от аппаратуры и производителя оказался и опыт пользователя - человек, работавший с UNIX на VAX, легко работал с ней же и на 68xxx, и так далее.

    Производители аппаратуры в то время часто прохладно относились к UNIX, считая её игрушечной, и предлагая свою проприетарную ОС для серьёзной работы - в первую очередь СУБД и основанных на них бизнес-приложений в коммерческих структурах. Известны комментарии по этому поводу от DEC по поводу её VMS . К этому прислушивались корпорации, но не академическая среда, которая имела все для себя необходимое в UNIX, зачастую не требовала официальной поддержки от производителя, справляясь своими силами, и ценила дешевизну и переносимость UNIX. Таким образом, UNIX была едва ли не первой переносимой на разную аппаратуру ОС.

    Вторым резким взлётом UNIX было появление RISC -процессоров около 1989 года. Ещё до того существовали т. н. workstations - персональные однопользовательские компьютеры большой мощности, имеющие достаточный объём памяти, жесткого диска и достаточно развитую ОС (многозадачность, защита памяти) для работы с серьёзными приложениями, такими, как CADы. Среди производителей таких машин выделялась компания Sun Microsystems , сделавшая себе на них имя.

    До появления RISC-процессоров в этих станциях обычно использовался процессор Motorola 680x0 , тот же, что и в компьютерах фирмы Apple (хотя и под более развитой операционной системой, чем у Apple). Около 1989 года на рынке появились коммерческие реализации процессоров RISC-архитектуры. Логичным решением ряда компаний (Sun и других) был перенос UNIX на эти архитектуры, что немедленно повлекло за собой и перенос всей экосистемы ПО для UNIX.

    Проприетарные серьёзные ОС, такие как VMS, начали свой закат именно с этого момента (даже если и удалось перенести на RISC саму ОС, всё было намного сложнее с приложениями под неё, которые в этих экосистемах зачастую разрабатывались на ассемблере или же на проприетарных языках типа BLISS), и UNIX стал ОС для самых мощных компьютеров в мире.

    Однако в это время экосистема начала переходить на GUI в лице Windows 3.0 . Огромные преимущества GUI, а также, например, унифицированная поддержка всех типов принтеров, были оценены и разработчиками, и пользователями. Это сильно подорвало позиции UNIX на рынке PC - реализации такие, как SCO и Interactive UNIX, не справлялись с поддержкой Windows-приложений. Что же касается GUI для UNIX, называемого X11 (были и иные реализации, много менее популярные), то он не мог полноценно работать на обычной пользовательской PC ввиду требований к памяти - для нормальной работы X11 требовалось 16 МБ, в то время как Windows 3.1 с достаточной производительностью исполняла и Word, и Excel одновременно в 8 МБ (это было стандартным размером памяти PC в то время). При высоких ценах на память это было лимитирующим фактором.

    Успех Windows дал импульс внутреннему проекту Microsoft под названием Windows NT , которая была совместима с Windows по API, но при этом имела все те же архитектурные особенности серьёзной ОС, что и UNIX - многозадачность, полноценную защиту памяти, поддержку многопроцессорных машин, права доступа к файлам и директориям, системный журнал. Также Windows NT представила журнальную файловую систему NTFS , которая по возможностям на тот момент превышала все стандартно поставляемые с UNIX файловые системы - аналоги под UNIX были только отдельными коммерческими продуктами от Veritas и других.

    Хотя Windows NT и не была популярна первоначально, из-за высоких требований к памяти (те же 16 МБ), она позволила Microsoft выйти на рынок решений для серверов , например, СУБД . Многие в то время не верили в возможность Microsoft, традиционно специализирующейся на настольном ПО, быть игроком на рынке ПО масштаба предприятия, где уже были свои громкие имена, такие как Oracle и Sun. К этому сомнению добавлялся тот факт, что СУБД Microsoft - SQL Server - начинался как упрощенная версия Sybase SQL Server, лицензированная у Sybase и на 99 % совместимая по всем аспектам работы с ним.

    Во второй половине 1990-х годов Microsoft начал теснить UNIX и на рынке корпоративных серверов.

    Совокупность вышеперечисленных факторов, а также обвал цен на 3D-видеоконтроллеры , ставшими из профессионального оборудования домашним, по сути убила само понятие workstation к началу 2000-х годов.

    Кроме того, системы Microsoft проще в управлении, особенно в типовых сценариях использования.

    Но в данный момент начался третий резкий взлёт UNIX.

    Кроме того, Столлман и его товарищи, прекрасно понимая, что для успеха не завязанного на корпорации программного обеспечения необходимы не проприетарные средства разработки, разработал набор компиляторов для различных языков программирования (gcc), что вместе с разработанными ранее утилитами GNU (замена стандартных утилит UNIX) составило необходимый и достаточно мощный пакет программ для разработчика.

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

    В дальнейшем Linux достигал всё новых и новых высот:

    • перенос серьёзных проприетарных продуктов, таких как Oracle ;
    • серьёзный интерес IBM к этой экосистеме как основе для своих вертикальных решений;
    • появление аналогов почти всех привычных программ из мира Windows;
    • отказ некоторых производителей оборудования от обязательной предустановки Windows;
    • выпуск нетбуков с одной лишь Linux;
    • использование в качестве ядра в Android .

    На настоящий момент Linux является заслуженно популярной ОС для серверов, хотя и куда менее популярной на рабочих столах.

    Некоторые архитектурные особенности ОС 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.

    Стандарты

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

    С этой целью ещё в 1980 году была создана пользовательская группа /usr/group. Первые стандарты были разработаны в 1984-1985 гг.

    Одним из самых первых стандартов стала спецификация System V Interface Definition (SVID), выпущенная UNIX System Laboratories (USL) одновременно с UNIX System V Release 4. Этот документ, однако, не стал официальным.

    Наряду с версиями UNIX System V существовало направление UNIX BSD . Для того, чтобы обеспечить совместимость System V и BSD , были созданы рабочие группы POSIX (P ortable O perating S ystem I nterface for UNIX ). Существует много стандартов POSIX, однако наиболее известным является стандарт POSIX 1003.1-1988, определяющий программный интерфейс приложений (API, Application Programming Interface). Он используется не только в UNIX, но и в других операционных системах. (