Применительно к человеку сорокалетие – это возраст, когда наступает момент самого серьезного и не всегда лицеприятного переосмысления жизненного пути, не случайно его называют кризисом среднего возраста. На будущее возможны два варианта: либо можно пойти «вперед и выше», либо наоборот. Если перенести это наблюдение на операционные системы, то и здесь можно задаться вопросом: с каким же багажом пришла ОС Unix к этому важному моменту в своей истории и куда в дальнейшем будет направлен вектор ее развития, верх или вниз?
Кто вы, мистер Unix?
Сегодня чего-то единого и неделимого, называемого Unix, в природе не существует, а есть витающий в умах некий обобщенный образ плюс торговая марка Unix, принадлежащая общественной организации The Open Group, которая признает за Unix любую операционную систему, если она соответствует спецификации Single Unix Specification (SUS). Содержащееся в SUS определение того, что можно считать Unix, настолько универсально, что под него попадают, что естественно, не только так называемые Unix-подобные системы (IBM AIX, Solaris, HP-UX), но также не афиширующие своего родства с Unix операционная системы Mac OS X Leopard, уходящая корнями в BSD Unix, и IBM z/OS, являющаяся производной MVS. Обе последние системы поддерживают прикладной интерфейс SUS API, а то, какими кодами это обеспечивается, с точки зрения определения Open Group не имеет значения. Такое положение вещей, когда слово есть, а предмета нет, стало прямым следствием всей драматической истории Unix вообще и известной войны (Unix War) между двумя группами юниксоидов, растянувшейся на всю вторую половину 80-х и начало 90-х годов. В этом сражении никто особенно не пострадал, но, что примечательно, никто, кроме Microsoft, взиравшей на битву со стороны, ничего и не выиграл. К появлению обеих противоборствующих сторон причастен один человек – Кен Томпсон, который более других способствовал созданию Unix в Bell Labs и стимулировал работы в этом направлении в Калифорнийском университете Беркли.
Кто знает, как бы сложилась судьба Unix, если бы не влияние анархо-коммунистических настроений, до сих пор существующих в Беркли. Может быть, все было бы вполне традиционно, если бы эта система развивалась обычным порядком как коммерческий продукт Bell Labs. Но случилось то, что случилось, и стартовой точкой в судьбе Unix стал визит профессора Боба Фарли на конференцию, посвященную принципам операционных систем (Symposium on Operating Systems Principles at Purdue University, ноябрь 1973 года). Здесь Томпсон впервые представил свой проект, а Фарли смог получить дистрибутив системы. Привезенный в Беркли, первый вариант Unix попал на благодатную почву, после чего развернулась цепь событий, приведшая к современному состоянию. Даже в том несовершенном виде новая ОС нашла своих приверженцев в лице молодых профессоров Майкла Стоунбрейкера и Юджина Вонга, ставших в последующем великими компьютерными гуру и создателями первой реляционной СУБД Ingres, и Ричарда Фейтмана, автора таких пакетов для вычислений, как Macsyma, Mathematica, Maple и др.
То, что местом первого никому не подконтрольного развития стал именно Беркли, а не Массачусетский технологический, Стэнфорд или Калтех, не случайно – его бунтарствующие обитатели стремились программировать, но не желали уподобиться людям в белых халатах, работающим в пакетном режиме на мэйнфреймах. В лице Unix у них появился шанс реализовать свои устремления, получив PDP-11, – открытые коды Unix оказались им ближе, чем закрытые OC RSTS/E или RSX-11, несмотря на то что для разработки и выполнения приложений эти системы были практичнее. Обитателям Беркли интереснее было создавать свою ОС, за которую они с энтузиазмом и взялись. Работа оказалась настолько успешной, что через пару лет, когда университет получил старшую модель семейства PDP-11/70, Томпсон решил провести положенный ему годичный академический отпуск в Беркли. Вообще в судьбе Unix 1975 год оказался плодотворным, главной удачей можно признать то, что в команду Томпсона вошел Билл Джой, в будущем один из основателей Sun Microsystems. Итак, с этого момента началось формирование альтернативной Bell Labs ветви в развитии Unix и, что немаловажно, особой культуры сообщества юниксоидов.
Тем временем Bell Labs последовательно выпускала версии Unix System III, затем Unix System V в релизах от SVR1 до SVR4.2. Близкие по названию версии SVR5 и SVR6 выпустила компания Santa Cruz Operation (SCO), купившая коды SVR4.2 и первой разработавшая версию для x86. А в Беркли параллельно создавались свои версии Berkeley Software Distribution (BSD), или Berkeley Unix, в трех разновидностях – Free BSD, Net BSD и Open BSD. Помимо технической стороны два направления отличались еще и тем, что первое было коммерческим, а второе стало почвой, из которой под лозунгом леваков из Беркли «Живи свободным или умри» выросло все современное программирование в открытых кодах. Попытками коммерциализировать BSD было создание операционных системы SunOS и AIX I,которыми непродолжительное время комплектовались рабочие станции Sun и IBM соответственно. Отдельно стоит Mac OS X,также выросшая из BSD, а из SVR4.2 выросли следующие версии IBM AIX, Sun Solaris и HP-UX.
Таким образом Unix оказалась без няньки. По причине раздробленности сообщества операционная система потеряла целостность и, будучи намного более сильной, во всяком случае на тот момент, чем Windows, уступила последней свои позиции. Что самое лучшее в Unix? Сообщество. Что самое плохое в Unix? То, что сообществ много.
Unix для юниксоидов
В не меньшей степени тому, что Unix уступила позиции ОС с куда менее скромной родословной, способствовала своеобразная культура юниксоидов. Ни один из коллективов, разрабатывавших свои версии, не думал о конечном пользователе – настоящий юниксоид настолько не любит пользователя, что невольно возникает желание продолжить перечисление Михаила Жванецкого: «Пароход – для команды, столовая – для поваров, магазин – для продавцов… Нет и не может быть выхода из этих предприятий – настолько увлекательный процесс внутри». А Unix – для юниксоидов. То обстоятельство, что ОС не самоцель, а всего лишь средство для поддержки пользовательских приложений, ими всерьез не воспринималось. Возможно, открытость кодов дает такую пищу для ума, что на остальное не хватает сил, возможно, что-то иное, но бесспорно то, что она объективно существует и особенно этим качеством отличались первые отечественные юниксоиды начала 80-х. Приверженцам Unix пользователь с его проблемами оставался глубоко неинтересен, в итоге из десятков версий выжили только три, и те только за счет их плотной интеграции с RISC-серверами, для которых они были адаптированы.
Сравнению культур Windows и Unix посвящена статья «Две культуры» (Biculturalism) известного автора Джоэля Спольски, считающего, что в современных условиях по своей функциональности Windows и Unix имеют больше общего, чем различий, их отличает культура. И различие это подобно культурному различию двух этносов – культура Unix ценит коды, полезные для программиста, а культура Windows – коды, полезные для не программиста. Самоизоляция юниксоидов привела даже к созданию книги «The UNIX-HATERS Handbook» (Пособие для ненавидящих Unix), собранной из списков рассылки UNIX-HATERS.
Нельзя отрицать и позитивную сторону в ориентации «Unix для юниксоидов» – на Unix держится Internet и WWW, а клоны этой ОС работают в серьезных корпоративных системах, бесперебойно работающих в режиме 24/7, но не стоит забывать, что за стенами машинных залов находится меньшая часть современных компьютеров. Только создатели Maс OS смогли совместить достоинства Unix с великолепным пользовательским интерфейсом, а в остальном, несмотря на проекты, подобные GNOME и KDE, массовый пользователь был оставлен без Unix. Может быть, дешевые нетбуки под Linux добавят популярности Unix, хотя даже Мэтью Зулик, президент Red Hat, признал, что для рядового пользователя все же предпочтительнее Windows.
Не Unix, но Linux
К концу 80-х вместе с распространением Unix-серверов свободная жизнь большинства сообществ закончилась, и они переключились на работающие на этих машинах версии Unix-систем, являющиеся коммерческими версиями исходных дистрибутивов, каждая со своими специфическими особенностями: Solaris, HP-UX и AIX, имеющие свои собственные уникальные элементы и фундаментальные решения. Но свято место, в данном случае свободная разработка, пусто не бывает, его заняла система Linux – удачная попытка Линуса Торвальдса создать бесплатную альтернативу коммерческим Unix-средам. Далее произошел перелив сил в сообществе, и нет ничего удивительного в том, что энтузиасты, не желающие, как когда-то студенты и преподаватели Беркли, работать на компании, отдали свое предпочтение Linux. Только Sun Microsystems совсем недавно поняла это и выпустила версию Open Solaris, пообещав поддержку сообществу, но остается посмотреть, как она будет реализована в изменившихся обстоятельствах. В одиночку Торвальдс решился на то, что не могут позволить себе производители, – он переписал ядро, а в остальном у Linux и Unix общие исторические корни, ряд инструментов, утилит и приложений, изначально задумывавшихся как бесплатная альтернатива программам для Unix.
Принципиальное отличие коммерческих дистрибутивов Unix от Linux можно свести к нескольким пунктам.
Ориентация Unix на определенный круг приложений и на фирменную серверную платформу. Производители предполагают многолетнюю работу пользователей на своих платформах, поэтому прилагают максимум усилий для обеспечения стандартизации ОС и совместимости между различными версиями. Напротив, разработка GNU/Linux являет собой пример вольницы, где отсутствует какая бы то ни было ориентация на конкретные платформы и круг клиентов, где все разработчики могут иметь свои воззрения. Попытка стандартизации в форме Linux Standard Base (LSB) почти не дала результатов, и в итоге происходит то, что мягко можно назвать отсутствием согласованности.
Любой новый релиз коммерческой Unix-системы тщательно документируется. Предпринимаются особые усилия для сохранения преемственности команд и инструментов, а если происходят значительные изменения, то создаются специальные оболочки для сохранения совместимости с ранними версиями. Как следствие, известные утилиты и приложения могут использоваться на новых версиях операционных систем без проверки и без модернизации исходных кодов. Поэтому переход на новую версию Unix требует меньших усилий, чем переход с одного дистрибутива Linux на другой.
Каждая из коммерческих версий Unix создается под конкретную архитектуру аппаратного обеспечения. Имеется возможность доводить код до полного соответствия именно этой архитектуре и в максимальной степени использовать ее преимущества при высоком качестве поддержки работы аппаратуры. Этим, например, объясняется то, что и без виртуализации коэффициент полезного действия Unix-серверов составляет 25-30 %, а серверов на платформе х86 не превышает 5%. Напротив, Linux разрабатывался для обеспечения максимальной совместимости с различными архитектурами, его разработчики не могут заранее знать, какое конкретное оборудование будет установлено в компьютере, и часто не могут обеспечить его эффективное использование.
Эволюция коммерческих версий Unix дошла до создания модульного ядра, а исполняемый код ядра поставляется в закрытом виде. Этот код может быть монолитным или модульным, его обновление осуществляется с помощью тщательно проверенных на обратную совместимость бинарных заплат. Открытая модульная архитектура Linux гибче, однако гибкость и адаптируемость Linux приводят к постоянным изменениям. Открытость кода Linux приводит к тому, что он может быть изменен кем угодно, и требуется процедура компиляции. Патчи в исходных текстах проверены, но не так тщательно, как заплаты от поставщиков коммерческих ОС Unix.
Linux поддерживает большинство современных файловых систем. Коммерческие дистрибутивы поддерживают максимум две системы: AIX (jfs и gpfs), Solaris (ufs и zfs) и HP-UX (hfs и vxfs), но инструменты и методики работы с ними более стандартизованы.
Коммерческие версии Unix поддерживают многочисленные корпоративные приложения. Это возможно, поскольку от релиза к релизу изменений немного, и на этом фоне Linux сильно проигрывает из-за трудности сертификации больших приложений – производителю программного обеспечения трудно понять, в какой именно среде будет использоваться их приложение. Однако существует большое количество бесплатного программного обеспечения.
Современные Unix-клоны
Фактически на сегодняшний день из существовавших нескольких десятков коммерческих вариантов Unix осталось всего три. Во-первых, операционная система Solaris, созданная в 1992 году совместно с AT&T путем объединения Sun System V и BSD в один релиз SVR4 и сменившая SunOS. Основными вехами в ее развитии были: версия Solaris 2.4, работавшая на процессорах SPARC и x86; Solaris 7, поддерживавшая 64-разрядный процессор UltraSPARC; в Solaris 9 появилась поддержка менеджера томов Solaris Volume Manager, а в Solaris 10 была добавлена новая файловая система ZFS, признанная лучшей среди всех Unix-клонов, технология виртуализации Solaris Containers и Logical Domains, а затем паравиртуализация в стиле Xen. В Solaris сохранена характерная для Unix работа с командными строками, в нем нет средства, подобного System Administration Manager (SAM), как в HP-UX, или System Management Interface Tool (SMIT), как в AIX.
Во-вторых, HP-UX, которая впервые была выпущена в 1984 году на основе System V rel. 3 для платформы PA-RISC. В Version 9 появился графический интерфейс и средство SAM, предназначенное для администрирования. Значительные изменения, внесенные в Version 10, приблизили ее к SVR4, а с Version 11 началась поддержка 64-разрядной адресации. Выпущенная 2001 Version 11.20 смогла поддерживать процессор Itanium. Операционная система HP-UX одной из первых стала поддерживать менеджер томов Logical Volume Manager, использует файловую систему Veritas, поддерживает несколько форм виртуализации (nPars, vPars, Integrity Virtual Machines) и способна управлять 128 процессорными ядрами.
И наконец, система AIX, которая своими корнями связана и с Unix System V, и с BSD, а впервые была перенесена на платформу RS/6000 в 1989 году. Преимущество AIX в традиционной для IBM подсистеме виртуализации PowerVM, разработанной на основе технологий, заимствованных из классических мэйнфреймов. Хотя AIX работает исключительно на процессорах IBM Power, это единственная Unix-система, которая смогла увеличить свою долю рынка за последние годы.
Из OpenSource-клонов, кроме Linux, наиболее известны BSD, OpenSolaris и Minix. Последняя старше всех, но широкое внимание привлекла к себе недавно. Своим появлением она обязана тому, что, поработав некоторое время в Беркли, профессор Эндрю Таненбаум переехал в Нидерланды и здесь продолжил свою педагогическую деятельность в Амстердамском свободном университете. Он великий педагог, по его книгам учатся во всем мире все, получающие серьезное компьютерное образование, в том числе и Линус Торвальдс, вдохновившийся созданием ядра Linux после изучения работы Operating Systems: Design and Implementation (в русском переводе, «Операционные системы: разработка и реализация»). Хотя Торвальдс не был студентом Таненбаума, последний считает Линуса своим учеником. При этом их связывают сложные отношения: полемика по поводу того, каким должно быть ядро, монолитным или состоящим из микроядер вошла в историю как выдающийся пример «войны во флеймах» (flame war), то есть в дискуссии, разворачиваемой в Сети. Таненбаум, в отличие от большинства авторов, не просто писал свои учебники, но к тому же на основании опыта, полученного в Беркли, он с середины 80-х годов разрабатывал свою собственную операционную систему MINIX (Minimal Unix) в качестве учебного пособия, а его книги снабжались дисками с кодами ОС.
На протяжении всех прошедших лет система совершенствовалась, но оставалась приложением к учебникам, и только в 2005 году Таненбаум признал версию MINIX 3 готовой для использования в тех случаях, когда нужна надежная ОС, работающая на специализированных аппаратных ресурсах, например во встроенных системах. Сегодня MINIX успешно развивается, и в 2007 году вышел нынешний действующий релиз 3.1.3a, а в этом году – предварительный релиз 3.1.4-pre. Система продвигается небольшим интернациональным коллективом, в составе которого Роман Игнатов, поддерживающий сайт www.minix3.ru. История MINIX имеет счастливое продолжение, после более чем двадцати лет пребывания в тени она получила признание – грант от Европейского исследовательского совета.
Единого дистрибутива BSD сегодня тоже нет, и этот предок современных программ с открытым кодом продолжает свое существование в трех основных ипостасях. Наиболее распространена версия FreeBSD, вдвое меньше приверженцев у OpenBSD и еще вдвое – у NetBSD. Версия NetBSD с большей степени ориентирована на строгость дизайна и переносимость, а производная от нее OpenBSD – на безопасность и криптографию. Из BSD, помимо Mac OSX, выросли несколько универсальных ОС, наиболее известна Tru64 Unix для архитектуры Alpha, называвшаяся прежде как Digital Unix или DEC OSF/1 AXP. На базе BSD выпускается ряд специализированных систем: Juniper JUNOS, Check Point IPSO (Nokia IPSO), NetApp Data ONTAP. Отдельного упоминания заслуживает проект DragonFly BSD, которым руководит ветеран BSD Мэттью Диллон, начавший проект шесть лет назад, исходя из стремления адаптировать Unix к работе с потоками и в SMP-средах, что особенно актуально сейчас, с появлением многоядерных и многопотоковых процессоров.
OpenSolaris представляет собой пример перевода программного обеспечения из разряда коммерческого в открытый код. Хотя эта еще не до конца завершенная процедура началась относительно недавно, в 2004 году, сегодня с этой ОС работают до 10% всех пользователей Unix. Открытие происходит по частям, первой была Solaris Dynamic Tracing facility (DTrace), обеспечивающая возможность оптимизации. В 2009 году начались поставки компьютеров Toshiba с предустановленной системой OpenSolaris, а в июне была выпущена версия OpenSolaris 2009 для платформы SPARC.
Будущее близкое и, возможно, далекое
О нынешнем положении дел и ближайшем будущем Unix можно судить по результатам опроса, проведенного редакцией Computerworld накануне юбилея. Основной вывод состоит в том, что коммерческим версиям Unix ничего не угрожает, еще в конце 90-х приверженцы Windows NT предрекали закат Unix, а ОС жива и ничего фатального в ее судьбе не предвидится.
Несмотря на привлекательность свободного ПО (Linux, BSD), подавляющая часть пользователей сейчас и впредь намеревается сохранить верность AIX, HP-UX, Solaris и Mac OS X Server. Главный аргумент в пользу современной ОС Unix – надежность. Среди других достоинств: актуальность, безопасность, поддержка унаследованных приложений. Только около 10% рассматривает возможность отказа от Unix, причем главным образом в связи с переходом на серверы стандартной архитектуры.
Этот опрос и другие материалы заставляют прийти к выводу, что, за исключением ограниченного числа энтузиастов, основная масса пользователей рассматривает Unix в естественном единстве с аппаратными платформами, на которых работает эта ОС. Стабильное положение Unix может укрепиться в связи с появлением нового поколения многопотоковых и многоядерных процессоров IBM Power7 и Sun Microsystems Rainbow Falls, которые можно считать очередным шагом в развитии RISC-процессоров, являющихся основной аппаратной базой для ОС Unix. Реакция аналитиков на появление обоих выражается одной фразой: «Подобного масштабирования мы еще не видели», что как раз на руку Unix.
Надежные и защищенные операционные системы?
По мнению Эндрю Таненбаума, микроядра, от которых давно отказались из-за их слишком низкой производительности по сравнению с монолитными ядрами, могут снова вернуться в ОС, поскольку потенциально обеспечивают более высокую надежность.
Расти рынку программного обеспечения с открытым кодом помогает поддержка со стороны венчурных капиталистов и ведущих ИТ-игроков, в частности компании Sun Microsystems, в команду которой влился Ян Мердок – одна из наиболее ярких фигур движения Open Source.