Семейство операционных систем UNIX
UNIX имеет долгую и интересную
историю. Начавшись как несерьезный
и почти "игрушечный" проект
молодых исследователей, UNIX стал
многомиллионной индустрией,
включив в свою орбиту университеты,
многонациональные корпорации,
правительства и международные
организации стандартизации.
UNIX зародился в лаборатории Bell Labs
фирмы AT&T более 20 лет назад. В то
время Bell Labs занималась разработкой
многопользовательской системы
разделения времени MULTICS (Multiplexed
Information and Computing Service) совместно с MIT и
General Electric, но эта система потерпела
неудачу, отчасти из-за слишком
амбициозных целей, не
соответствовавших уровню
компьютеров того времени, а отчасти
и из-за того, что она
разрабатывалась на языке PL/1, а
компилятор PL/1 задерживался и
вообще плохо работал после своего
запоздалого появления. Поэтому Bell
Labs вообще отказалась от участия в
проекте MULTICS, что дало возможность
одному из ее исследователей, Кену
Томпсону, заняться поисковой
работой в направлении улучшения
операционной среды Bell Labs. Томпсон, а
также сотрудник Bell Labs Денис Ритчи и
некоторые другие разрабатывали
новую файловую систему, многие
черты которой вели свое
происхождение от MULTICS. Для проверки
новой файловой системы Томпсон
написал ядро ОС и некоторые
программы для компьютера GE-645,
который работал под управлением
мультипрограммной системы
разделения времени GECOS. У Кена
Томпсона была написанная им еще во
времена работы над MULTICS игра "Space
Travel" - "Космическое
путешествие". Он запускал ее на
компьютере GE-645, но она работала на
нем не очень хорошо из-за невысокой
эффективности разделения времени.
Кроме этого, машинное время GE-645
стоило слишком дорого. В результате
Томпсон и Ритчи решили перенести
игру на стоящую в углу без дела
машину PDP-7 фирмы DEC, имеющую 4096
18-битных слов, телетайп и хороший
графический дисплей. Но у PDP-7 было
неважное программное обеспечение,
и, закончив перенос игры, Томпсон
решил реализовать на PDP-7 ту
файловую систему, над который он
работал на GE-645. Из этой работы и
возникла первая версия UNIX, хотя она
и не имела в то время никакого
названия. Но она уже включала
характерную для UNIX файловую
систему, основанную на индексных
дескрипторах inode, имела подсистему
управления процессами и памятью, а
также позволяла двум пользователям
работать в режиме разделения
времени. Система была написана на
ассемблере. Имя UNIX (Uniplex Information and
Computing Services) было дано ей еще одним
сотрудником Bell Labs, Брайаном
Керниганом, который первоначально
назвал ее UNICS, подчеркивая ее
отличие от многопользовательской
MULTICS. Вскоре UNICS начали называть UNIX.
Первыми пользователями UNIX'а стали
сотрудники отдела патентов Bell Labs,
которые нашли ее удобной средой для
создания текстов.
Большое влияние на судьбу UNIX
оказала перепись ее на языке
высокого уровня С, разработанного
Денисом Ритчи специально для этих
целей. Это произошло в 1973 году, UNIX
насчитывал к этому времени уже 25
инсталляций, и в Bell Labs была создана
специальная группа поддержки UNIX.
Широкое распространение UNIX
получил с 1974 года, после описания
этой системы Томпсоном и Ритчи в
компьютерном журнале CACM. UNIX получил
широкое распространение в
университетах, так как для них он
поставлялся бесплатно вместе с
исходными кодами на С. Широкое
распространение эффективных
C-компиляторов сделало UNIX
уникальной для того времени ОС
из-за возможности переноса на
различные компьютеры. Университеты
внесли значительный вклад в
улучшение UNIX и дальнейшую его
популяризацию. Еще одним шагом на
пути получения признания UNIX как
стандартизованной среды стала
разработка Денисом Ритчи
библиотеки ввода-вывода stdio.
Благодаря использованию этой
библиотеки для компилятора С,
программы для UNIX стали легко
переносимыми.
Рис. 5.1. История развития
UNIX
Широкое распространение UNIX
породило проблему несовместимости
его многочисленных версий.
Очевидно, что для пользователя
весьма неприятен тот факт, что
пакет, купленный для одной версии
UNIX, отказывается работать на другой
версии UNIX. Периодически делались и
делаются попытки стандартизации
UNIX, но они пока имели ограниченный
успех. Процесс сближения различных
версий UNIX и их расхождения носит
циклический характер. Перед лицом
новой угрозы со стороны какой-либо
другой операционной системы
различные производители UNIX-версий
сближают свои продукты, но затем
конкурентная борьба вынуждает их
делать оригинальные улучшения и
версии снова расходятся. В этом
процессе есть и положительная
сторона - появление новых идей и
средств, улучшающих как UNIX, так и
многие другие операционные
системы, перенявшие у него за
долгие годы его существования
много полезного.
На рисунке 5.1 показана упрощенная
картина развития UNIX, которая
учитывает преемственность
различных версий и влияние на них
принимаемых стандартов. Наибольшее
распространение получили две
весьма несовместимые линии версий
UNIX: линия AT&T - UNIX System V, и линия
университета Berkeley-BSD. Многие фирмы
на основе этих версий разработали и
поддерживают свои версии UNIX: SunOS и
Solaris фирмы Sun Microsystems, UX фирмы
Hewlett-Packard, XENIX фирмы Microsoft, AIX фирмы IBM,
UnixWare фирмы Novell (проданный теперь
компании SCO), и список этот можно еще
долго продолжать.
Наибольшее влияние на унификацию
версий UNIX оказали такие стандарты
как SVID фирмы AT&T, POSIX, созданный под
эгидой IEEE, и XPG4 консорциума X/Open. В
этих стандартах сформулированы
требования к интерфейсу между
приложениями и ОС, что дает
возможность приложениям успешно
работать под управлением различных
версий UNIX.
Независимо от версии, общими для
UNIX чертами являются:
- многопользовательский режим
со средствами защиты данных от
несанкционированного доступа,
- реализация мультипрограммной
обработки в режиме разделения
времени, основанная на
использовании алгоритмов
вытесняющей многозадачности
(preemptive multitasking),
- использование механизмов
виртуальной памяти и свопинга
для повышения уровня
мультипрограммирования,
- унификация операций
ввода-вывода на основе
расширенного использования
понятия "файл",
- иерархическая файловая
система, образующая единое
дерево каталогов независимо от
количества физических
устройств, используемых для
размещения файлов,
- переносимость системы за счет
написания ее основной части на
языке C,
- разнообразные средства
взаимодействия процессов, в
том числе и через сеть,
- кэширование диска для
уменьшения среднего времени
доступа к файлам.
Далее мы подробно остановимся на
основных концепциях версии UNIX System V
Release 4, которая вобрала в себя лучшие
черты линий UNIX System V и UNIX BSD.
Версия UNIX System V Release 4 - это
незаконченная коммерческая версия
операционной системы, т.к. в ее
кодах отсутствуют многие системные
утилиты, необходимые для успешной
эксплуатации ОС, например утилиты
администрирования или менеджер
графического интерфейса. Версия SVR4
является скорее стандартной
реализацией кода ядра, вобравшая в
себя наиболее популярные и
эффективные решения из различных
версий ядра UNIX, такие как
виртуальная файловая система VFS,
отображаемые в память файлы и т.п.
Код SVR4 (частично доработанный) лег в
основу многих современных
коммерческих версий UNIX, таких как
HP-UX, Solaris, AIX и т.д.
Предыдущая
глава || Оглавление
|| Следующая глава
|