3. Операционная система UNIX в многопроцессорной конфигурации
В середине 60-х годов сотрудники компании General Electrics, AT&T Bell Laboratories и Масачусетского института написали операционную систему Multics, в которой было реализовано то, о чем даже и не задумывались другие разработчики программных продуктов. Проект, из-за слабой развитости и отсутствия поддержки других разработчиков, был закрыт в конце 60-х годов.
После Multics был разработан UNIX, который, в отличии от предшественницы, поддерживал не только многозадачность, но и работал на разных платформах, включая предков современных ПК, которых тогда называли как мини-компьютеры. В основе создания операционной системы лежит игра Space Travel, которая была разработана программистом Кеном Томпсоном. Так уж получилось, что игра не смогла заработать на компьютере того времени Honeywell 635, и поэтому Кен Томпсон ожидал выхода более мощного компьютера. В конце концов для того, чтобы игра заработала, пришлось в буквальном смысле этого слова создать для нее операционную систему. Пришлось усовершенствовать файловую систему для ускорения работоспособности системы, добавить функции управления системными устройствами, процессором, памятью. Управление всеми функциональными возможностями занимался мощный командный процессор Bourne Again Shell, в народе просто Bash. UNIX стал одной из первых POSIX-совместимых операционных систем. (POSIX - Portable Opereating System Interface for computer environments, интерфейс переносимой операционной системы.)
За весьма короткий срок операционная система превратилась в мощную многозадачную и многопользовательскую операционную систему, которую некто Браян Керниган предложил назвать Unics, название походило от системы Multics, а уже позже Unics назвали короче - UNIX. Первой официальной версией системы является выпущенная в ноябре 1971 года система UNIX 1.0. Операционная система UNIX была написана на ассемблере. Кена Томпсона Деннис Ритчи предложил внести в исходный код операционной системы некоторые изменения, вплоть до того, что исходный код системы был позже написан с использованием языка программирования C.
Неофициально UNIX стал продаваемым программным продуктом уже с 1972 года. Лицензию на владение системой покупали многие компании, включая IBM, Nowell и даже сама Microsoft. В 1975 году Калифорнийский университет в Беркли купил права на Unix и выпустил свою систему - Berkeley Software Distribution, BSD. позже последовали различные выпуски Unix BSD, BSD 4 и так далее, из которых до сегодняшнего дня сохранилась только FreeBSD - сетевая многозадачная и многопользовательская операционная система, ныне основной конкурент Linux.
В 1980 году компания Microsoft, по велению моды, купила Unix и себе, создав на ее основе операционную систему Xenix. На основе данной операционной системы был выпущен MS DOS. Система была однозадачной и однопользовательской и не поддерживала многозадачность. Многие удивляются, почему команды DOS похожи на команды интерпретатора Unix? Просто потому что DOS - это сильно модифицированный UNIX.
В конце 80-х годов UNIX был полноправным владельцем компьютерного рынка. К этому времени в системе уже был реализован четкий графический интерфейс пользователя (GUI, Graphic User Interface), их в составе системы обычно было два, которые частично сохранились и до наших времен: Motiff и Open Look. Позже эти два стандарта были объеденены в один: CDE - Common Desktop Environment, еще позже - KDE.
За время своего существования проект UNIX стал коммерческим и широкопродаваемым. На его основе была создана операционная система Minix (своего рода мини Unix). Распрастранялась система бесплатно, на основе общедоступной лицензии GPL (General Public Licence). Уже на основе Minix был создан гигант Linux, создатель которого Линус Торвальдс.
3.1 Общий обзор особенностей системы UNIX
За время, прошедшее с момента ее появления в 1969 году, система UNIX стала довольно популярной и получила распространение на машинах с различной мощностью обработки, от микропроцессоров до больших ЭВМ, обеспечивая на них общие условия выполнения программ. Система делится на две части. Одну часть составляют программы и сервисные функции, то, что делает операционную среду UNIX такой популярной; эта часть легко доступна пользователям, она включает такие программы, как командный процессор, обмен сообщениями, пакеты обработки текстов и системы обработки исходных текстов программ. Другая часть включает в себя собственно операционную систему, поддерживающую эти программы и функции.
Особенности UNIX, отличающие данное семейство от других ОС:
■ Файловая система древовидная, чувствительная к регистру символов в именах, очень слабые ограничения на длину имён.
■ Нет поддержки структурированных файлов ядром ОС, на уровне системных вызовов файл есть поток байт.
■ Командная строка находится в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора.
■ Ввод/вывод только через дескрипторы файлов.
■ Традиционно крайне слабая поддержка асинхронного ввода/вывода, по сравнению с VMS и Windows NT.
■ Интерпретатор команд есть обыкновенное приложение, общающееся с ядром обыкновенными системными вызовами (в RSX-11 и VMS интерпретатор команд выполнялся как специальное приложение, специальным образом размещенное в памяти, пользующееся специальными системными вызовами, поддерживались также системные вызовы, дающие возможность приложению обращаться к своему родительскому интерпретатору команд).
■ Команда командной строки есть не более чем имя файла программы, не требуется специальная регистрация и специальная разработка программ как команд (что являлось обычной практикой в RSX-11, RT-11).
■ Не принят подход с программой, задающей пользователю вопросы о режимах своей работы, вместо этого используются параметры командной строки (в VMS, RSX-11, RT-11 программы работали также с командной строкой, но при её отсутствии выдавали запрос на ввод команд).
■ Пространство имён устройств на диске в каталоге /dev, поддающееся управлению администратором, в отличие от подхода Windows, где это пространство имен размещается в памяти ядра, и администрирование этого пространства (например, задание прав доступа) крайне затруднено из-за отсутствия его постоянного хранения на дисках (строится каждый раз при загрузке).
■ Широкое использование текстовых файлов для хранения настроек, в отличие от двоичной базы данных настроек, как, например, в Windows.
■ Широкое использование утилит обработки текста для выполнения повседневных задач под управлением скриптов.
■ «Раскрутка» ОС после загрузки ядра путём исполнения скриптов стандартным интерпретатором команд.
■ Адресное пространство делится на глобальное для всех процессов ядро и на локальную для процесса части, нет «групповой» части адресного пространства, как в VMS и Windows NT, как и возможности загрузки туда кода и его исполнения там.
■ Использование двух уровней привилегий процессора вместо четырёх в VMS.
■ Отказ от использования оверлеев в пользу деления программы на несколько программ поменьше, общающихся через конвейеры или временные файлы.
■ Отсутствие APC и аналогов, то есть произвольных (а не жестко перечисленных в стандартном множестве) сигналов, не доставляемых до явного пожелания процесса их получить (Windows, VMS).
Концепция сигнала уникальна для UNIX, и крайне сложна в переносе на другие ОС, такие, как Windows.
3.1.1 Преимущества операционная система UNIX
UNIX завоевала высокую степень популярности. Одной из главных причин успеха являлся способ распространения системы. Корпорация AT&T, ограниченная законами в своих возможностях, продавала лицензии и исходные коды системы по достаточно низкой цене, поэтому UNIX стала популярной среди многих пользователей по всему миру. Так как в комплект поставки входили и исходные коды, пользователи имели возможность экспериментировать с ними, улучшать их, а также обмениваться друг с другом созданными изменениями. Корпорация AT&T встраивала многие из новшеств в следующие версии системы.
Развитие системы UNIX оказалось очень открытым процессом. Добавления поступали из учебных заведений, коммерческих организаций и от хакеров-энтузиастов из разных континентов и стран мира. Даже после коммерциализации UNIX многие производители ОС поддержали концепцию открытых систем и сделали свои разработки доступными для других, создавая спецификации открытых систем, такие как NFS.
Оригинальная версия UNIX имела хороший дизайн, который являлся базисом последующего успеха более поздних реализаций и вариантов системы. Одну из сильнейших сторон системы можно охарактеризовать выражением «красота в краткости». Ядро небольшого размера имело минимальный набор основных служб. Утилиты небольшого размера производили малый объем манипуляций с данными. Механизм конвейера совместно с программируемой оболочкой позволял пользователям комбинировать эти утилиты различными способами, создавая мощные, производительные инструменты.
Файловая система UNIX является примером вышеописанного подхода. В отличие от других операционных систем, обладающих сложными методами доступа к файлам система UNIX интерпретирует файлы как простую последовательность байтов. Приложения могут записывать в содержимое файлов любую структуру и использовать различные собственные методы доступа, не ставя об этом в известность операционную систему.
Многие системные приложения используют для представления своих данных символьные строки. Возможно, что структурированное хранение информации в двоичном формате представляется более эффективным, однако представление в виде текста позволило пользователям легко просматривать и производить манипуляции с этими файлами без применения специальных инструментов. Текст является общей, универсальной и обладающей высокой степенью переносимости формой данных, которые можно легко обрабатывать множеством различных утилит.