Эволюция UNIX
Операционная система UNIX давно побила все мыслимые рекорды долголетия. Пожалуй, ни одна другая ОС, за исключением разве что двадцатилетней VAX/VMS (OpenVMS), не имела такой счастливой судьбы.
Четверть века в компьютерной индустрии - более чем солидный возраст. За эти годы UNIX не только сумела стать стандартом де-факто для профессиональных рабочих станций, но и фундаментом для крупных корпоративных систем и серьезных ответственных комплексов. После относительных неудач Xenix и Minix, реализованных на платформах Intel x86, Atari, Amiga, Macintosh (M68xxx), сейчас UNIX на ПК в облике Linux обретает новую популярность. Да и другие бесплатные диалекты ОС UNIX, работающие прежде всего на наиболее распространенной платформе Intel x86 (FreeBSD, NetBSD, OpenBSD), сумели доказать свою практическую ценность. Несмотря на ряд изъянов, есть целый ряд задач, при решении которых они могут в полной мере реализовать свой богатый потенциал.
В несомненную заслугу UNIX стоит поставить не только формирование идеологии открытых систем и активную роль в распространении глобальных сетей (прежде всего, Internet), но и создание целой культуры, воспитание не одного поколения профессионалов. Ее архитектура до сих пор остается ключевым звеном в познании законов программного мира. Классическая ОС UNIX дала жизнь многочисленным своим потомкам, число которых превышает несколько десятков. Эволюция UNIX, взаимная ассимиляция операционных систем и выработка стандартов, определяющих программные интерфейсы (POSIX, X/Open), привели к тому, что сегодня крайне трудно провести водораздел между UNIX и другими ОС. Сможете ли вы с уверенностью сказать, что QNX - это UNIX? А Linux, а Windows NT? Что это - "подделки" или настоящие "самоцветы"? Несмотря на кажущуюся абсурдность этих вопросов, их разрешение может дать нам ключ к пониманию нынешнего этапа эволюции UNIX.
Корни UNIX
"UNIX - это универсальная ОС с разделением времени (time-sharing)". Такое незатейливое определение дал ей Деннис Ритчи (Dennis M. Ritchie), один из авторов UNIX. К сожалению, из этих слов трудно понять, в чем же особенности ОС UNIX и что она собой представляет. Время в значительной мере исказило истинные черты первоначального замысла, а потому за основу изложения я возьму тот самый первый доклад Кена Томпсона (Ken Thompson) и Денниса Ритчи, с которого и началась публичная известность UNIX.
Но прежде несколько слов о рождении UNIX. Отсчет жизни UNIX ведется с конца 1969 г., а 1 января 1970 г. называют даже датой начала "новой эры" - эры UNIX. Неудивительно, что официальное празднование 25-летия состоялось в 1994 г. Однако у ОС, как и у человека, есть не только дата рождения, но и дата совершеннолетия. Ею можно считать дату первого публичного представления (или публикации). Она известна с точностью до двух дней - 15 октября 1973 г. Именно тогда, на Четвертом симпозиуме по принципам ОС, проводимом ассоциацией ACM в крупнейшем исследовательском центре IBM (4th ACM Symposium on Operating Systems Principles, IBM Thomas J. Watson Research Center, Yorktown Heights, New York, October 15-17, 1973), и был сделан доклад, который назывался "The UNIX Time-Sharing System". Первая статья Томпсона и Ритчи носила то же название и была опубликована в июльском номере журнала "Communications of the ACM" за 1974 г. Так что настоящее 25-летие UNIX следовало бы отмечать в октябре этого года.
Катализатором рождения UNIX явилась система Multics (Multiplexed Information and Computing Service, как и UNIX, используется и по сей день). Multics возникла в результате проекта MAC (Multiple Access Computers), стартовавшего в ноябре 1962 г. в Массачусетсском технологическом институте (MIT). В конце 1964 г. к MIT присоединились General Electric и AT&T Bell Labs. Неудовлетворенность руководства Bell Labs темпами работ привела к решению выйти из проекта. В апреле 1969 г. разрыв состоялся, и небольшой коллектив, в который, помимо Томпсона и Ритчи, входили Джо Оссанна (Joe Ossanna), Дуг Макилрой (Doug McIlroy), Боб Моррис (Bob Morris) и Ричард Кенедей (Richard Canaday), оказался не у дел. Все попытки убедить руководство в необходимости приобретения подходящих аппаратных средств для реализации идей по созданию новой ОС (речь тогда шла о мэйнфреймах DEC PDP-10 и SDS Sigma 7) ни к чему не привели. Вооружившись мелом и пером, Томпсон, Ритчи и Кенедей стали проектировать новую иерархическую файловую систему, которая явилась, по словам Ритчи, сердцем UNIX. Все остальное строилось именно на ее основе. Если проводить параллель со строительным делом, то Томпсон был главным архитектором проекта, а Ритчи - главным инженером.
До сих пор не стихают споры о том, как же на самом деле правильно писать: "Unix" или "UNIX". По словам Денниса Ритчи, название "UNIX" предложил Брайан Керниган (Brian Kernighan), ставший, таким образом, "крестным отцом" этой легендарной ОС. При этом существуют две версии образования имени UNIX. По одной - это просто трансформация названия Multics ("multi" заменяется на "uni", а "cs" - на "x"). По другой - видоизмененная аббревиатура UNiplexed Information and Computing System (UNICS). Если вспомнить, что название Multics тоже является аббревиатурой, то обе трактовки сливаются в одну. Как бы там ни было, разбирая старые магнитные ленты с одной из самых первых версий UNIX, датированной 15 февраля 1972 г., Деннис Ритчи обнаружил сопроводительные файлы ("notes1" и "notes2"). Там название UNIX было написано заглавными буквами. Думаю, это дает полное основание использовать только такое обозначение. К тому же товарный знак UNIX записывается именно так и принадлежит сейчас X/Open Company.
Имея под руками лишь скромный 18-разрядный компьютер PDP-7 с памятью 8 Кслов, команда Томпсона приступила к работе. В первой же версии, написанной на ассемблере, было реализовано ключевое понятие процесса (их было, по крайней мере, по одному на каждый из двух рабочих терминалов). Чуть позже появились системные вызовы fork, wait, exec и exit. В начале 1970 г. UNIX заработала и на PDP-9. Однако добиться настоящего прорыва удалось только с появлением очень удачно спроектированной 16-разрядной машины PDP-11, ставшей одним из лучших творений корпорации Digital Equipment. Операционная система UNIX для PDP-11 была написана в период с января по март 1971 г.
Каждый процесс в ОС UNIX рассматривался как последовательное исполнение программного кода в рамках автономного адресного пространства. Для организации взаимодействия процессов в 1972 г. в дополнение к сигналам были введены каналы (pipes), которые позволили обеспечить конвейерную обработку данных. Вместе с ними появилась идея перенаправления ввода/вывода. Работа с устройствами трактовалась как работа с файлами. Для решения системных задач на основе идей BCPL был реализован язык B, а в 1971 г. Ритчи начал работы уже над его потомком - языком C. Самой важной вехой стал 1973 г., когда ядро в четвертой версии UNIX было переписано на C (табл. 1). С этого момента началось восхождение UNIX прежде всего как переносимой ОС, способной работать на разных аппаратных платформах.
В 1983 г. при вручении Кену Томпсону и Деннису Ритчи за создание UNIX престижной премии Тьюринга (в области компьютеров она приравнивается к Нобелевской премии), Томпсон подчеркнул, что обязан этой наградой не только техническим достоинствам UNIX, но и тому, что система появилась в очень удачный момент - при переходе от мэйнфреймов к мини-компьютерам. С точки зрения Денниса Ритчи, ОС UNIX повезло в том, что она имела необычайно длинный инкубационный период (1969 - 1979 гг.) и все это время находилась под полным контролем своих создателей.
Разветвление UNIX
С того момента, как AT&T решила дать коммерческую жизнь ОС UNIX, ведут свой отсчет две независимо развиваемые ветви: одна получила название System V, а другая - Berkeley (табл. 2). Все последующие диалекты UNIX и UNIX-подобные системы стали формироваться на основе именно этих ветвей (табл. 3).
После выхода UNIX V7 в AT&T была создана группа поддержки UNIX (USG, UNIX Support Group). Некоторое время спустя она была преобразована в UNIX System Laboratories (USL). Основной задачей USL было превращение UNIX в коммерческий продукт. В 1982 - 1983 гг. USL выпустила System III и System V. Они и стали точкой отсчета для коммерческих диалектов UNIX.
Несколько упреждая работы USL, специалисты исследовательской группы по компьютерным системам в Калифорнийском университете в Беркли (CSRG, Computer Systems Research Group) приобрели у AT&T лицензию на исходные тексты UNIX V6. К 1977 г. вышла BSD 1.0. Далее обе ветви развивались независимо. Если взглянуть на табл. 3, то несложно заметить, что некоммерческие диалекты UNIX создавались на базе BSD, тогда как большинство коммерческих в основе своей использовали UNIX System V. Во многом это связано с чисто лицензионными проблемами. Для их решения довольно большую часть кода многие разработчики вынуждены были переписывать практически с нуля (в частности, это имело место при создании ОС Linux).
Если взглянуть на UNIX сквозь призму передачи технологий, нетрудно заметить, что традиционная цепочка "университет - лаборатория - фирма" была трансформирована:
лаборатория - университет - фирма (BSD/OS);
лаборатория - фирма (AT&T UNIX System V) - фирма (HP-UX);
лаборатория - университет - энтузиасты (Linux);
лаборатория - университет (FreeBSD).
В начале 1993 г. AT&T продала права на UNIX вместе с лабораторией USL компании Novell, которая на базе System V разработала ОС UNIXWare. В настоящее время этот диалект продан фирме Santa Cruz Operation (SCO UNIXWare), а товарный знак UNIX - компании X/Open Company, занимающейся наряду с IEEE (спецификации POSIX) стандартизацией UNIX.
UNIX в нашей стране
Корни практически всех ранних отечественных диалектов ОС UNIX ведут к UNIX V6. В начале 80-х годов начались работы в Институте атомной энергии им. И. В. Курчатова (КИАЭ). В шутку диалект КИАЭ получил название УНАС (в противовес UNIX). В состав разработчиков входили Алексей Руднев, Валерий Бардин, Сергей Аншуков. В 1982 - 1983гг. другой коллектив из Института прикладной кибернетики (ИПК) Минавтопрома стал заниматься иным диалектом - МНОС (Машинно-независимая операционная система). Руководителем работ был Михаил Давидов, а костяк команды составили Вадим Антонов, Дмитрий Володин, Сергей Леонтьев.
Результатом объединения коллективов стало рождение ОС ДЕМОС (Диалоговой единой мобильной операционной системы), которая, помимо отечественных аналогов PDP-11 (СМ-4, СМ-1420), была перенесена на ЕС ЭВМ и Эльбрус. В 1987 г. был образован кооператив "Демос". Через пять лет, в 1992 г., коллектив раскололся и появились на свет известные сейчас компании "РЕЛКОМ" и "ДЕМОС".
В середине 80-х годов параллельно с командами КИАЭ - ИПК в Институте электронных управляющих машин (ИНЭУМ), позднее переименованном в ИПИ АН (Институт проблем информатики АН СССР), велись работы над еще одним диалектом UNIX, получившим название ИНМОС (Интерактивная мобильная операционная система). В ее разработке принимали участие Михаил Беляков, Александр Фридман, Игорь Куницкий, Юрий Рабовер.
Стоит также упомянуть несколько менее известную ОС Excelsior iV, разработанную в 1985 - 1986 гг. в Новосибирском Академгородке (ВЦ СО АН СССР) в рамках проекта Кронос. Она была реализована на языке Modula-2 и базировалась на UNIX System V.
UNIX в нашей стране - это в первую очередь сетевые службы, а также единая операционная среда для разных компьютерных платформ. Если быть крайне лаконичным, то следует отметить, что ОС UNIX явилась прежде всего катализатором развертывания глобальных сетей и становления российской инфраструктуры Internet.
Переносимость как важное достоинство UNIX
Переносимость (portability), или мобильность, системного и прикладного ПО до сих пор остается одной из актуальных проблем, от эффективного решения которой зависит дальнейшее развитие программной индустрии. На заре эры мини-компьютеров ОС UNIX продемонстрировала один из возможных путей ее решения: это унификация архитектуры ОС и использование единой языковой среды. Созданный в AT&T Bell Labs язык C сумел стать связующим звеном между аппаратной платформой и операционной средой.
Переносимость может опираться по крайней мере на четыре механизма: настройку, адаптивность (эмуляцию), унификацию операционной среды, инвариантность исполняемого кода. Ранее при переносе программ с одной компьютерной платформы на другую занимались в основном настройкой (статической или динамической). ОС UNIX позволила здесь решить многие проблемы за счет единого программного и пользовательского интерфейса. Правда, в силу наличия многочисленных диалектов UNIX возникли нюансы согласования различий. В настоящее время унификация интерфейсов UNIX находится в компетенции двух организаций: комитета IEEE по стандартам переносимых приложений (PASC, Portable Applications Standards Committee) и X/Open Company (The Open Group). В отношении UNIX комитет IEEE PASC продолжает сопровождение стандартов серии POSIX 1003, а X/Open - Common API (UNIX 93, UNIX 95), трансформировавшихся в Single UNIX Specification. Такой подход позволил снивелировать (в том числе и на уровне системных вызовов) различия реализаций UNIX. В то же время он обеспечил почву для интеграции разнородных ОС, вообще не имеющих отношения к UNIX. Так, в частности, POSIX-совместимыми являются OpenVMS, Windows NT, OS/2. Даже IBM OS/400 (для AS/400) на 80% удовлетворяет спецификациям POSIX 1003.
Другой подход к переносимости - адаптивность (динамическая реконфигурация кода), активно используемая, например, в исполняемых файлах Mac OS (fat binary), в которых содержится код и для процессоров M68xxx, и для PowerPC.
Унификация операционной среды способна решить проблему переносимости лишь при наличии единого исполняемого кода. Однако, даже если рассматривать этот код как нечто неизменное в рамках единой аппаратной платформы, польза может быть немалая. В качестве примеров приведем инициативу "86open", цель которой - обеспечение бинарной совместимости разных диалектов UNIX на платформе Intel (BSD/OS, Linux, FreeBSD, NetBSD, Solaris, SCO OpenServer, SCO UNIXWare), а также формат ANDF (Architecture Neutral Distribution Format), разработанный Агентством по военным исследованиям Великобритании (DRA, Defence Research Agency). Унификация среды может быть выполнена не только на уровне стандартных библиотек, но и в рамках технологически независимых машинных интерфейсов, вроде TIMI (решение IBM для компьютеров AS/400, которое позволяет подменять реальный процессор).
Наконец, инвариантность исполняемого кода с появлением виртуальных машин (Pascal, Smalltalk, Forth, LISP, Prolog и др.) стала набирать популярность, а с выходом Java затмила собой другие решения. Сюда же можно отнести технологию ETH OMI (синтаксические деревья с отложенной генерацией машинного кода при загрузке программ) и динамическую рекомпиляцию (например, решение фирмы Digital для исполнения программ VAX/VMS на процессорах Alpha в среде ОС OpenVMS и компилятор FX!32 для динамического преобразования машинного кода Intel x86 в код Alpha в рамках Windows NT). Другим примером инвариантности кода могут служить всевозможные эмуляторы исполнения, скажем, Windows-программ в UNIX и наоборот: SoftWindows (фирмы Insignia Solutions), VP/ix (Interactive Systems). Следует упомянуть и WABI (Windows Application Binary Interface) фирмы Sun Microsystems - бинарный интерфейс с Windows, обеспечивающий эмуляцию в рамках архитектуры SPARC команд процессора Intel x86 с преобразованием системных вызовов (своего рода микрокод ОС). Вообще говоря, все чаще и чаще звучат высказывания о потенциальной возможности использования единого машинного кода (например, для Merced) с последующей динамической компиляцией его в код конкретного процессора. В этом смысле он будет выполнять практически такую же роль, как теперь язык C.
Несколько особняком на фоне остальных стоит решение фирмы Softway Systems по "жесткой" привязке ОС UNIX к Windows NT. В рамках своей ОС OpenNT, создаваемой при участии Intergraph Software, компания Softway Systems обеспечивает полноценную (NFS, DCE, X Window, Motif, CDE и др.) совместную работу UNIX- и Windows-приложений. Во избежание падения производительности интеграция системных служб осуществляется в рамках ядра Windows NT. Это стало возможным благодаря лицензии на исходные тексты Windows NT, полученной от Microsoft. Операционная система OpenNT способна работать и на Intel x86, и на Alpha.
А нужна ли вообще переносимость? В некоторых случаях куда эффективнее становятся решения, когда за счет разделения клиентской и серверной частей программной системы возникает возможность нивелировать проблемы на промежуточном уровне. Именно здесь удобнее всего осуществлять "коммутацию" интерфейсов. В этом смысле настало время пересматривать отношение к связующему ПО (middleware). Если раньше его роль сводилась к организации связи между разнородными средами (примером служат менеджеры транзакций), то теперь уже вполне можно говорить о согласующем ПО, задача которого сглаживать как на уровне программ, так и на уровне пользователей различия между разными операционными средами. Появление брокеров объектов, брокеров приложений и программных терминалов (X-терминалы, Windows-терминалы и пр.) обозначило основные направления дальнейшего развития системного ПО.
Напрямую с вопросами переносимости связана и характерная для мира UNIX практика максимального раскрытия исходных текстов. Своей популярности ОС Linux и другие некоммерческие диалекты UNIX, созданные на основе ветви BSD, обязаны прежде всего возможности полного контроля системного ПО. В случае создания специализированных и экспериментальных систем с особыми требованиями, предъявляемыми, в частности, к производительности и безопасности, важность наличия подконтрольного исходного текста трудно переоценить. В контексте разговора о UNIX здесь необходимо отметить и знаменитую инициативу GNU (Gnu's not UNIX), идейным вдохновителем которой стал Ричард Столлман (Richard Stallman). Программные продукты, созданные в рамках GNU, оказали (и продолжают оказывать) огромное благотворное воздействие на UNIX и другие ОС.
UNIX и микроядерная архитектура
Поскольку UNIX в отличие от ОС для мэйнфреймов ориентировалась на широкий спектр аппаратных платформ, у ее создателей поневоле возникла задача обеспечения модульности, иными словами, четкой декомпозиции всей структуры системы. Особая роль в этом смысле отводилась ядру, ведь именно оно и драйверы внешних устройств являются наиболее критичными при переходе на разные платформы. Первоначально ядро UNIX строилось по принципу макроядра - максимально достаточного монолитного ядра, отвечающего за диспетчеризацию процессов, распределение памяти, работу с файловой системой, поддержку драйверов внешних устройств, сетевых средств и средств обеспечения безопасности.
В ходе эволюции ОС UNIX (а огромное значение здесь имели прежде всего университетские разработки) возникла вполне естественная идея выделения из традиционного ядра минимально необходимого набора средств. Так возникло понятие микроядра (microkernel), роль которого в каком-то смысле схожа с той, что сыграла RISC-архитектура по отношению к доминирующим CISC-системам. Термин "микроядро" в 1989 г. предложили Айра Голдштейн (Ira Goldstein) и Поль Дейл (Paul Dale). Из наиболее известных реализаций можно отметить Amoeba, Chorus, QNX (бывшая Thoth). QNX сейчас развивается канадской компанией QNX Software Systems, а микроядро Chorus недавно было приобретено Sun Microsystems. Для любителей количественных оценок отмечу, что микроядро Chorus занимает 60 Кбайт, тогда как ядро UNIX V7 занимало 40 Кбайт. Наиболее компактным, пожалуй, является микроядро QNX - его размер 8 Кбайт и оно способно полностью помещаться во внутреннем кэше. Дальнейшим развитием QNX стал проект Neutrino, позволивший получить POSIX-совместимое микроядро с приемлемыми размерами (менее 30 Кбайт). Но самым популярным микроядром, на котором строится не только UNIX, но и другие ОС, оказалось микроядро Mach.
Оно разработано в Университете Карнеги - Меллона (CMU, Carnegie Mellon University) в 1985 г. и было использовано в таких ОС, как NeXT OS (NeXT), MachTen (Mac), OS/2, AIX (для IBM RS/6000), OSF/1 и Digital UNIX (для Alpha), Windows NT и BeOS.
Таким образом, многие современные ОС унифицируются сверху (POSIX) и снизу (Mach), поэтому нередко трудно разобраться, принадлежит ли та или иная система к семейству ОС UNIX.
Противостояние ОС UNIX и Windows NT
Если проводить аналогии с реальной жизнью, то трем важным понятиям программного мира - языку программирования (определяющему характер мышления), ОС (образующей контекст исполнения программ) и стандартам взаимодействия (описывающим регламент совместной работы компонентов) - можно поставить в соответствие национальный язык, культуру и законодательство. Приняв за основу такую "одушевленную" модель, несложно прийти к выводу, что до той поры, пока с программами будут общаться люди, не удастся избежать многовариантности и в отношении языка, и в отношении ОС. Более того, в силу консервативности человеческого мышления очень важное значение приобретают опыт и традиции, закладываемые той или иной ОС на протяжении длительного периода. В этом смысле борьба за доминирование ОС есть не что иное, как борьба за умы.
Вопреки предсказаниям специалистов, ОС UNIX так и не удалось стать полноправной властительницей всех аппаратных платформ. По крайней мере, область ПК оказалась почти полностью поглощенной семейством Windows компании Microsoft. Ослабленная чередой неудач Apple Computer пока лишь на пути к своему возрождению. Многие возлагали большие надежды на OS/2 компании IBM как на форпост, позволяющий преградить дорогу агрессивно развивающемуся семейству Windows. Но IBM, тяжело переживая падение интереса к OS/2, ушла в тень, сосредоточившись на серверной редакции Warp (Hawk), а также на дальнейшем совершенствовании AIX и OS/400.
За какие-то пять лет своего существования ОС Windows NT выросла в реального конкурента, способного всерьез угрожать господству UNIX в области корпоративных систем. Теперь UNIX осталась практически один на один с Windows NT. Казалось бы, в этом нет ничего страшного - добротность HP-UX (Hewlett-Packard), AIX (IBM), Solaris (Sun), IRIX (Silicon Graphics), Digital UNIX (Digital) выглядит залогом успешной обороны. Но интуиция и данные статистики говорят о том, что ситуация довольно тревожная (если, конечно, считать, что безоговорочное господство той или иной коммерческой ОС - это беда, а не благо). Новую атаку на позиции UNIX компания Microsoft начала в рамках сотрудничества с Digital (программа AllConnect for UNIX) и с Softway Systems (ОС OpenNT). Очевидно, что передача ею лицензии на исходные тексты Windows NT малоизвестной фирме Softway Systems преследует вполне конкретные стратегические цели - постепенную миграцию систем и разработчиков из UNIX в среду Windows NT.
Любое неподготовленное наступление лишь способствует укреплению позиций противника. Лихая кавалерийская атака Sun Microsystems, попытавшейся бросить в бой незрелую JavaOS, похоже, потерпела фиаско. И теперь перспективы Java выглядят не такими радужными, как прежде. Усилия, вкладываемые в развитие JavaOS, пока не дают должной отдачи. К сожалению, Sun Microsystems нередко лишь генерирует идеи. Возможно, она надеется на помощь с "флангов", но согласованного наступления еще нет. Каждый из союзников (IBM, Novell, Oracle) действует сам по себе на свой страх и риск.
Рынок ОС реального времени и встроенных систем еще не успел пасть жертвой Windows. Однако та скорость, с которой развивается Windows CE, впечатляет (на очереди процессоры StrongARM). Позиции QNX, OS-9, VxWorks теперь уже выглядят не столь незыблемыми, как раньше. И даже появление Inferno (Lucent Technologies) и Portos (Oberon microsystems) пока лишь не более чем зачатки перспективных технологий, на доведение которых нужны время и ресурсы.
Будущее UNIX
Дальнейшие события могут развиваться разными путями. Скорее всего, UNIX будет вытесняться в область ответственных систем (mission-critical systems) с высокой степенью масштабируемости и отказоусточивости (где Windows NT заметно уступает). С другой стороны, опираясь на благодатную почву UNIX, постепенно на свет появляются ростки новых ОС, которые, выступая пока в роли ПО клиента, на самом деле со временем вполне могут быть трансформированы и в серверную среду. За примерами далеко ходить не надо, достаточно упомянуть хотя бы Rhapsody (создаваемую на основе полузабытой NeXT OS) и BeOS.
Что касается традиционной ОС UNIX, то сейчас здесь можно выделить две основные магистрали дальнейшего совершенствования: масштабирование на базе кластеризации и переход на 64-разрядную архитектуру Merced (IA-64). Первооткрывателем принципа кластеризации была компания Digital, реализовавшая эту идею еще в VAX/VMS. В 1991 г. на ее основе успешно работала СУБД Oracle Parallel Server. Операционная система UNIX была нацелена на решение подобных задач лишь в 1993 г., но при этом добилась определенных успехов, которыми Windows NT похвастать пока не может (технология Wolfpack пребывает еще в зачаточном состоянии).
Еще одно важное направление - это повышение надежности ОС UNIX. В связи с этим стоит упомянуть о соглашении между Hewlett-Packard, NEC и Hitachi, связанном с переносом в новое поколение ОС HP-UX технологии 3DA, которая обеспечивает самовосстановление системного ПО после ошибок и сбоев. Полным ходом идет подготовка нового поколения диалектов UNIX для платформы Merced. В преддверии ее появления на рынке (в 1999 г.) уже сформировались альянсы Digital-Sequent-Intel, Sun-NCR-Intel, HP-NEC-Hitachi-Intel, SCO-Intel. В них задействованы все основные производители промышленных диалектов UNIX, кроме IBM (развивающей свою 64-разрядную платформу).
Подобное развитие событий может привести к еще более резкому размежеванию трех ныне существующих категорий UNIX - "легкой" UNIX (QNX, Linux и т. п.), "тяжелой" UNIX (AIX, UNICOS и т. п.) и "скрытой" UNIX (Rhapsody и т. п.). Возможно, это пойдет только на пользу миру системного ПО.
Столкновение принципиально разных по своей культуре миров Windows NT и UNIX может вызвать неудовлетворенность пользователей и привести к вторжению на рынок ОС совершенно иной архитектуры. В этой связи мне хотелось бы обратить внимание читателя на три не очень известные ОС, так или иначе связанные с UNIX, - Spring, Grail и BeOS. Степень их зрелости и специализация сильно разнятся, что, впрочем, позволяет точнее обрисовать контуры перспектив развития ОС на ближайшие несколько лет.
ОС Spring достаточно давно (как минимум с 1993 г.) создается в исследовательских лабораториях Sun (Sun Labs). Она опирается на объектный подход, реализованный с помощью известного по архитектуре CORBA языка описания интерфейсов IDL. Именно в этом контексте и строится объектная архитектура. Spring базируется на микроядре (оно здесь называется Nucleus). Ее важной особенностью является (как и у Amoeba, Chorus) ориентация на распределенную среду. К настоящему времени в Spring реализован сервер UNIX-процессов. Spring опирается на файловую систему UNIX и позволяет исполнять в режиме эмуляции бинарные файлы ОС Solaris. Расширяемость системы обеспечивается за счет IDL и особого механизма именования объектов.
Другая ОС (точнее, микроядро) - Grail - находится пока еще на стадии проектирования. Ее автор Вадим Антонов - один из тех, кто стоял у истоков МНОС и ДЕМОС. В начале 90-х годов он уехал в Berkeley Software Design и принял участие в реализации нескольких крупных коммуникационных и системных проектов, среди которых следует выделить Plan 9 (Bell Labs). Сейчас Вадим Антонов является вице-президентом американской компании Pluris и занимается разработкой технологий коммутации, альтернативных ATM. Его система Grail также оперирует объектами, но при этом работает не с процессами, а с автоматами, обладающими собственным контекстом. При этом автомат рассматривается как виртуальный процессор, порождающий внешние клиент-серверные объекты и исполняющий программные потоки (threads). Система Grail в отличие от Mach, Chorus, QNX не опирается на механизм передачи сообщений, который является ахиллесовой пятой подобной архитектуры. Вместо этого используются иные средства взаимодействия, в том числе и специальные транзакции.
Наконец, третьей в этом ряду стоит BeOS, лишь недавно ставшая коммерческим продуктом на платформе PowerPC. Она способна исполняться на Intel x86 и обеспечивать эмуляцию Mac OS. Ее идеологом является Жан-Луи Гассе (Jean-Louis Gassoe), бывший президент Apple Products Division, а ныне глава фирмы Be. Главной особенностью BeOS стало развитие идеи Media OS - объектно-ориентированной ОС, настроенной на эффективное исполнение мультимедиа-приложений. Ее отличают "тотальный" параллелизм (распараллеливание операций на уровне программных потоков), многопроцессорная масштабируемость и непривычно высокая реактивность (время отклика на внешние воздействия даже при большой загрузке очень мало). BeOS построена на микроядре Mach и использует ряд утилит и UNIX-подобный интерфейс shell. Эта система настолько интересна, что заслуживает отдельного разговора.
В завершение рассказа об эволюции UNIX стоит еще раз вспомнить об авторах этой легендарной ОС - Кене Томпсоне и Деннисе Ритчи. Они по-прежнему работают в Bell Labs (теперь уже формально принадлежащей Lucent Technologies). Причем Ритчи принимает самое активное участие в развитии весьма интересной и компактной ОС Inferno, идеи которой были заложены в ходе работ Bell Labs над проектами Plan 9 и Brazil.
Закончить мне хотелось бы словами Денниса Ритчи: "Если мы сможем остаться достаточно открытыми для восприятия новых идей, сохранить свободу общения и достаточно терпения, чтобы позволить развиваться новому, то, возможно, будущий Кен Томпсон найдет покрытый пылью CRAY/1 и спроектирует новую систему, столь же блестящую и новаторскую, как UNIX".
Р.Богатырев
СomputerWeekly, N5, 1998, c.21-23,26