Обзоры
Plan9 – гость из другого мира
18

Plan9 – гость из другого мира

У классического метода борьбы со сложностью ПО, 30 лет успешно доказывающего свою состоятельность легендарной и неувядающей популярностью идей ОС Unix, похоже, появился достойный последователь. К сожалению, факт его приобщения к миру бесплатных и открытых программ остался практически незамеченным в тени побед на пути к "альтернативному десктопу".

Чужой в чужой стране

Некоторые читатели уже, вероятно, догадались, что речь пойдет об ОС Plan9, "освобожденной" Bell Labs 7 июня. Говорить о революционности самого этого факта достаточно трудно — дистрибутив системы еще недавно продавался со всеми исходными текстами, но при его стоимости ($350) и абсолютной уникальности ОС такое приобретение большинству потенциально заинтересованных пользователей не казалось слишком выгодным. И вот ситуация изменилась — любой желающий может без регистрации загрузить полный дистрибутив Plan9 с сайта plan9.bell-labs.com/plan9dist. Условия, на которых распространяется ОС, более чем либеральны, но запрещают ее эксплуатацию "правительственным конечным пользователям", к коим относятся органы центральной или региональной власти, государственные НИИ и корпорации военной направленности, попадающие под ограничения Вессинаарского соглашения (www.wessinaar.org). К слову, размер дистрибутива ОС вполне приемлем для Internet-распространения (около 60 MB в обновленном релизе от 17 июня).

И вот здесь наступает самый ответственный момент: а стоит ли вообще уделять внимание "еще одной" ОС, когда и без того выбирать есть из чего (Linux, *BSD, BeOS, Solaris…)? Ответить на этот вопрос весьма непросто, как и получить исчерпывающую информацию из традиционных источников: сообщество пользователей Plan9 малочисленно, их активность в конференциях (точнее, в одной конференции comp.os.plan9) невысока…

Сложности у потенциального неамериканского пользователя Plan9 начинаются с… названий. По большому счету, это даже и не сложности, а принципиальные различия в культурах. В далеком 1959 г. ветеран Второй мировой войны, военный моряк, носивший в боях под формой женское белье, впоследствии не скрывавший "девиаций" трансвестит Эдвард Вуд мл. (Edward Wood Jr.) снял фильм, ставший суперпопулярным в Америке — "Plan 9 from outer space". Популярность киноверсии Plan9 была и остается под стать странной личности Вуда: по мнению критиков, "если это не самый худший фильм, который был снят, то уж точно — самое дурацкое развлекательное зрелище", но зрителям он нравился (и все больше нравится) или благодаря странностям сюжета и убогости "эффектов", или из-за участия звезды тех времен Бэла Лугоши (Bela Lugosi, знаменитый первый киноДракула). На исторические "корни" творчества Вуда и Лугоши в Plan9-программе "натыкаешься" буквально всюду — например, в свежеустановленной ОС идентификатор автоматически создаваемого в ходе инсталляции пользователя (glenda) заимствован из их совместного фильма 1953 г. "Glen or Glenda", ряд названий программ также связаны с обширным перечнем кичевых "ужастиков" Вуда. Трудно сказать, помогает ли просмотр этих фильмов в освоении ОС Plan9, но, вероятно, он не помешает…

После такого экстравагантного исторического отступления история самой Plan9 и люди, причастные к ее разработке, казалось бы, удивить уже ничем не могут. Но и здесь не все так просто — без ярких личностей не обошлось. Во-первых, Plan9 "вышла" из Bell Labs — "колыбели" ОС Unix, языков программирования C и C++, во-вторых, создана она практически той же группой разработчиков, которым принадлежит авторство этих общепризнанных, но, как и фильмы Вуда неоднозначных, шедевров. В-третьих, среди лидеров проекта Plan9 появляются "новые лица", заслуживающие самого пристального внимания наряду с великими гуру (такими, как Кэрниган, Ричи, Томпсон, Пресотто). Так, Роб Пайк (Rob Pike) — ведущий разработчик последнего релиза Plan9, известен не только как гениальный программист, написавший первую растровую оконную систему для ОС Unix, создавший ПО первых растровых графических терминалов Blit (серийное название — AT&T 5620) и еще около десяти графических подсистем для Unix и Plan9, но и как автор замечательных культовых книг "Инструментальная ОС Unix" (The Unix Programming Environment) и "Практика программирования" (The Practice of Programming). И это еще не все — Plan9, скорее всего, не была бы такой эксцентричной ОС, если бы Пайк не был… серебряным призером Олимпиады 1980 г. по стрельбе из лука, и вообще, если бы ее назвали как-то иначе.

Последнее (в перечислении, но не по значимости) лицо, в какой-то мере причастное к судьбе Plan9, не слишком выделяющееся недостатком экстравагантности из этого списка — естественно, великий идеолог FSF Ричард Стэллмэн, поспешивший призвать всех, кому дорога судьба открытого ПО… не использовать Plan9 ни за что и никогда из-за несовместимости лицензии Bell Labs с "единственно правильной" лицензией GNU.

Все же не стоит пугаться исторической эксцентричности Plan9 и того, что американцы емко называют "background". За сегодняшней версией ОС стоят почти 20 лет развития, одни из самых ярких программистов, известных своим высочайшим профессионализмом, и мощная исследовательская база Bell Labs.

Мотивы

Знание мотивации разработчиков всегда интересно само по себе и помогает лучше понять результаты их работы. В случае с Plan9 можно говорить о "двух этапах" мотивации — созидательном и освободительном. Действительно, после того как антимонопольное законодательство США запретило AT&T продавать Unix (что предопределило немеркнущую популярность ОС), после Unix-бума первой волны, который был очевиден в 1980 г., зачем и без того прославленным авторам этой системы понадобилось разрабатывать что-либо новое? И зачем, собственно, это было нужно Bell Labs? К счастью, на эти вопросы есть ответы самих авторов. В 1995 г. в журнале "Computer System" (vol. 8, # 3) в коллективной статье, подписанной Кэрниганом, Пайком, Пресотто и другими, прозвучала… жуткая крамола о Unix. Впрочем, лучше процитировать:

"В середине 80-х годов стало очевидным смещение интересов от централизованных, бюрократических коллективных систем с разделением времени к сетям из небольших компьютеров, обычно "рабочих станций" под управлением ОС Unix. Люди выбирали свободу и даже соглашались с потерей производительности. В ходе этого смещения выявились все недостатки персональных рабочих станций. Во-первых, их операционная система Unix — старая разработка, ориентированная на разделение времени и плохо приспособленная к адаптации идей, появившихся после нее. Графика и сетевая поддержка добавлялись в Unix в ходе развития системы и оказались недостаточно интегрированными и трудно администрируемыми. Но что самое главное, — ранняя тенденция перехода на отдельные, приватные компьютеры привела к основной проблеме — недостижимости удобства администрирования централизованной системы в большой сети из персональных рабочих станций.

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

Эту цитату можно считать коротким отчетом о мотивации в созидательный период. Но серьезные ученые последовательны, и буквально за несколько месяцев до "освобождения" Plan9 Пайк публикует на своем сайте документ "Systems Software Research is Irrelevant" (SSRI, "Исследования в области системного ПО нерелевантны"). Олимпийский чемпион опять попал в цель, и несмотря на скандально-пессимистический и субъективный характер этого "цитатника" многие утверждения автора бесспорно верны. Итак, ключевые моменты SSRI:

с 1979 г. на игровом поле операционных систем количество "игроков" постоянно сокращалось и в конце концов свелось к двум ("настольная" Windows и Unix во всех реинкарнациях);

исследования в области системного ПО проводятся ведущими университетами, каждый день появляются новые документы и отчеты о НИР, но на них никто уже не обращает внимания — новая ОС никому не нужна;

динамики развития аппаратных средств и ПО несопоставимы, хорошая рабочая станция 1990 г. обладала 33-мегагерцевым процессором MIPS R3000 и 32 MB ОЗУ, хорошая рабочая станция 2000 г. оснащается процессором Pentium III 900 MHz или Alpha 700 MHz и 512 MB ОЗУ, при этом обе используют Unix 30-летней давности, графическую систему X-Window и редактор Emacs;

релевантность исследований в области системного ПО означает, что в 70—80-е гг. мы бы были свидетелями появления новых ОС, инструментальных средств программирования, чего не случилось, вместо инноваций мы наблюдаем программную индустрию, игнорирующую результаты исследований, и исследователей, которые пишут больше бумаг, чем программ;

искусство программирования ушло в прошлое, но системное программирование не может быть только индустрией, это и инженерия, и проектирование, и искусство;

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

Причины пессимизма понятны из такого высказывания Кэрнигана в середине 90-х годов: "Нам нужна была система с открытыми исходными текстами… для которой просто разрабатывать и системное ПО (драйверы), и прикладные программы… доступность Unix в форме исходных текстов уже никто не мог гарантировать даже для ее разработчиков из Bell Labs" (перевод не дословный). Достаточно вспомнить, что именно в период создания и становления ОС Plan9 первое знаменитое детище AT&T Unix проходила пик периода коммерциализации, в ходе которой больше совершенствовалась маркетинговая политика корпораций, владеющих правами на распространение ОС, чем сама система.

С чего начать

Итак, если вы любитель Unix, Plan9 несомненно вас заинтересует. Тем более что размер системы сегодня уже никого не пугает и вообще кажется смешным. Если вы приняли решение установить эту ОС на своем компьютере, минимальный перечень советов, по личному опыту автора, вам пригодится. Во-первых, не устанавливайте Plan9 на слишком "модерный" ПК — эта ОС вообще не использует BIOS (sic!), хорошо работает только с ограниченным перечнем видеокарт и очень требовательна к качеству… мыши (без нее в Plan9 делать нечего). Наилучший выбор "железа" — дешевый видеоакселератор ATI (у автора не было проблем со стареньким Rage IIC), материнская плата и процессор некритичны (единственное исключение — чипы AMD-K6-2, с которыми возникает ряд сложностей). После вынужденного "коллекционирования" чуть ли не десятка мышей (она обязательно должна быть трехкнопочной!), единственной, удовлетворяющей требованиям Plan9, оказалась Logitech. Звуковая карта SB 16 не вызывает у системы нареканий, а вот с копеечными сетевыми платами серии NE2000 горя не оберешься. Поэтому, если у вас есть старенькая 3C509 — установите ее.

Процесс инсталляции ОС при соблюдении этих правил примитивен и очень дружественен. Подготовительных операций требуется минимум — создать дискету с загрузочным образом системы (с помощью DOS- или Unix-утилит rawrite или dd соответственно) и разместить файл дистрибутива (plan9.9gz) в одном из понимаемых Plan9 разделе жесткого диска FAT 16 (DOS) или ext2fs (Linux).

Теперь достаточно загрузить компьютер с созданной дискеты и… все. Установка проходит в графическом режиме (на дискете умещается фактически полнофункциональная минимально работоспособная терминальная Plan9), вам придется ответить на три-четыре вопроса о конфигурации машины, типе монитора и выбрать/создать раздел жесткого диска для инсталляции.

Нестрашный "чужой"

Теперь осталось ответить на главный вопрос: что же такое Plan9? Увы, без установки ОС и возможности хотя бы несколько дней "поиграть" с ней, оценить ее очень трудно. Пользователям, незнакомым с Unix-культурой, система покажется более чем непривычной, но это еще не самое неприятное — и прошедшие серьезную Unix-школу в Plan9 почувствуют себя новичками. Поэтому сначала поговорим о вещах поверхностных, с которыми придется столкнуться при первом общении с Plan9.

Во-первых, Plan9 — система распределенная, и то, что вы установили на свой компьютер, является… реинкарнацией терминала. Эволюция и талант Пайка превратили алфавитно-цифровой терминал в графическую рабочую станцию, обладающую собственной вычислительной мощностью и локальной файловой системой. Естественно, что работать на терминальной Plan9 можно, но полнофункциональная система предполагает наличие как минимум двух дополнительных компьютеров — CPU-сервера и файлового сервера (это серьезное препятствие на пути распространения Plan9, но есть способы его обойти).

Во-вторых, "юниксизм" в системе все же присутствует, и знакомство с основными командами Unix и командным языком (shell) окажет неоценимую помощь в освоении Plan9.

В-третьих, воспитанным на WIMP-удобствах (Windows, Icons, Menus, Pointer — окна, пиктограммы, меню, курсор) не следует обольщаться графическим характером Plan9: система фактически полностью текст-ориентированная, хотя почти все необходимые для разработки графических программ инструментальные средства присутствуют.

В-четвертых, в отличие от MS Windows и Unix, Plan9 наконец-то освобождает нас от проблем с локализацией системы. Сквозная поддержка Unicode (точнее, UTF-8) во всех утилитах, библиотеках, оконной системе и т. д. — один из самых важных доводов в пользу Plan9. С другой стороны, в текущем релизе ОС недостает механизма переключения пользовательского ввода (который, к слову, был в прошлой, коммерческой версии), позволяющего удобно набирать текст на национальных языках. Вероятнее всего, этот недостаток будет устранен в ближайшее время.

В-пятых, сегодняшняя Plan9 совершенно непригодна для "конечных пользователей" даже по сравнению с современными бесплатными версиями Unix. Если Linux, например, можно привести к весьма WIndows-подобному состоянию, то в Plan9 это невозможно (ни пока, ни в будущем). Здесь свой мир, и с ним надо считаться (или просто забыть о его существовании). Программисту же Plan9 неизбежно понравится — по сравнению с Unix система абсолютно минимальна, обладает ярко выраженной индивидуальностью и мощной инструментальной поддержкой.

После такого вступления можно уверенно говорить, что если вы приняли решение установить Plan9, значит, отдаете себе отчет в том, с чем имеете дело. Теперь пора поговорить о вещах куда более серьезных — об уникальной архитектуре этой ОС.

Инновации

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

Главная и основная концепция — файлы. В отличие от Unix, где файлы являются достаточно высокоуровневыми абстракциями, представляющими, например, физические устройства в системе, и от Windows, где роль файлов сводится лишь к хранению информации, Plan9 предлагает радикально новый подход. Здесь файлы — это основа основ всей информационной и программной инфраструктуры системы. Собственно, вся ОС является набором сервисов, интерфейсы которых отображены на файлы, а любая правильно (в терминах Plan9, естественно) спроектированная программа является… файловым сервером. Лучше всего это можно понять на простых примерах. Так, чтобы перезагрузить систему, можно воспользоваться командой "echo reboot > /dev/reboot". Что это означает? Команда echo выдает переданную ей строку (в данном случае слово reboot) в стандартный поток ввода/вывода, символ ">" вызывает перенаправление этого потока в файл, а "/dev/reboot" указывает путь и имя существующего в файловой системе файла… интерфейса команды reboot. Зачем такие сложности? Не проще ли сделать программу с "кнопкой Reboot"? На самом деле, не проще, по крайней мере без использования подобного механизма. Еще ярче выглядит пример с созданием экранной копии окна в Plan9. "Традиционные" системы требуют для этого отдельной специальной программы, в Plan9 достаточно скопировать общесистемной командной cat содержимое файла, появившегося в файловой системе при открытии окна, в необходимый вам файл. Кроме того, в файл окна можно направлять теми же командами cat или echo текст, и он будет отображен в окне. Такие возможности смело назовем уникальными, и обеспечиваются они именно единой концепцией прикладной программы как файлового сервера.

С точки зрения программиста, файл-центрический характер Plan9 значительно сокращает объем информации, необходимой для изучения системы, — все программные интерфейсы сведены к примитивным операциям "открыть_файл, читать_из_файла", "писать_в_файл", "закрыть_файл" (данное утверждение не совсем точно, но обладает достаточной степенью общности). С точки зрения пользователя — это хотя и непривычно, но просто в освоении и очень эффективно.

Вторая концепция — выполнение всех операций с файлами посредством специально разработанного сетевого протокола, получившего название 9P. Что это означает на практике? Если все программы — файловые серверы (включая, по большому счету, ядро ОС), если все управление этими программами осуществляется с помощью простых операций над файлами интерфейсов, и, наконец, если все эти операции выполняются посредством сетевого протокола, значит… действительно, Plan9 является идеальной распределенной ОС, не требующей дополнительного ПО (системного или прикладного) для построения мощных кластерных вычислительных систем. Протокол 9P предельно прост, очень эффективен (в некоторых случаях объем дополнительной информации, передаваемой по сети с помощью 9P, может составлять несколько байтов) и содержит фактически всего 16 групп запросно-подтверждающих операций типа Tsession/Rsession (запрос_сессии/подтверждение_сессии). 9P не зависит от протоколов нижнего уровня, требуя от них только гарантии надежной доставки сообщений, и хорошо согласуется с уже распространенными сетевыми протоколами.

Третья концепция — пространства имен (namespace). Отображение интерфейсов программ и устройств (драйверы устройств — тоже файловые серверы) на файлы позволяет создавать управляемый пользователем образ "виртуального" компьютера из распределенных в Plan9-сети ресурсов. Причем форма представления этого "компьютера" остается неизменной — файловая иерархия. Где в данный момент выполняется задача, представленная каталогом "…/circuit-test/", к какой машине физически подключен сканер "…/hewlett-packard/" или, что намного веселее, сетевая карта "…/arcnet/" — с точки зрения пользователя совершенно несущественно. Соответственно и механизм доступа к ресурсам этих программ-устройств-серверов остается прежним: если надо прочитать сканированный Бог знает где файл со сканера, достаточно прочесть содержимое представляющего интерфейс чтения файла "…/hewlett-packard/scan_read" с помощью все той же единственной команды cat. Для образования пространств имен используется минимальный набор команд (bind и mount), а автоматизация этого процесса осуществляется с помощью скриптов на командном языке shell.

Четвертая концепция — аутентификация. Она в Plan9 совершенно необычна: здесь, несмотря на принципиально многопользовательский характер системы, нет суперпользователя. Так как терминал в терминах Plan9 — самостоятельная вычислительная единица, единственное доступное понятие — владелец терминала. Автономность подразумевает и еще одно принципиальное свойство — Plan9 не нужны дополнительные программные подсистемы (аналогичные, например, ssh) для безопасной криптозащищенной работы в сети. Здесь все передается в зашифрованном виде с помощью практически аналогичной Kerberos криптографической подсистемы, ориентированной на обмен надежно защищенными пакетами-талонами (talon). Но и это еще не все: пользователь, садящийся за чужой "терминал", введя свой идентификатор и пароль, автоматически получает… свою машину (вспомните концепцию пространств имен).

Пятая концепция касается пользовательского интерфейса. В Plan9 он графический текст-ориентированный (это несколько неожиданное сочетание хорошо знакомо любителям системы Oberon). Два основных пользовательских инструмента — текстовые редакторы-интеграторы sam и acme — позволяют применять любой фрагмент текста в качестве команды и ориентированы исключительно на операции с управлением мышью. Важнейший элемент пользовательского интерфейса — механизм динамического связывания одновременно выполняющихся интерактивных программ, позволяющий управлять обменом сообщениями и получивший название "плюмбинга" (plumbing). Несмотря на внешнее сходство с привычными операциями "выделить-вырезать-вставить" (select-cut-paste), плюмбинг является действительно новым словом в технике передачи сообщений между программами — его реализация (сервис plumber) позволяет хранить, осуществлять диспетчеризацию и обработку сообщений, причем обработчики программируются с помощью специального несложного языка. Для любителей Unix: плюмбинг имеет непосредственное отношение к механизмам межпроцессного взаимодействия (IPC) и фактически является реализацией диспетчера и обработчика IPC с удобным пользовательским интерфейсом.

Шестая концепция латентна и широко не афишируется. Речь идет об объектно-ориентированном характере ПО Plan9. Несмотря на то что вся система реализована на исключительно прозрачном подмножестве стандартного языка C (сокращению подвергся только препроцессор этого языка), и отсутствуют привычные явно декларируемые объектно-ориентированные технологические средства, Plan9 предлагает свое видение ООП. Здесь царствуют бинарные исполняемые объекты, общесистемными способами осуществляется динамическое наследование их свойств (namespace) и в явной форме присутствует обмен сообщениями (plumbing). Впрочем, почувствовать это можно только после приобретения некоторого опыта в программировании системы.

К сожалению, ограниченный объем статьи не позволяет остановиться на всех интересных особенностях Plan9, которые можно назвать и замечательными, и спорными. Так, в Plan9 не существует поддержки разделяемых библиотек (shared libraries, аналогичных DLL) — авторы системы считают, что их реализация ведет к загрязнению и утяжелению кода программ (code bloat), Plan9 поддерживает свой собственный "Internet"- протокол IL — куда более легковесный и быстрый, чем TCP (не следует пугаться — IP/TCP также реализованы).

Оснащение системы можно назвать достаточным для квалифицированного программиста (редактор sam, интегрированная (в терминах Plan9!) среда acme, отладчик, мощная и очень интересная система моделирования и верификации программ Spin, сервис просмотра файлов в формате PostScript и некоторых графических форматах, классические Unix-утилиты), но здесь отсутствуют броузер, высокоуровневые средства проектирования и т. д.

Впечатления

Автор ни в коем случае не хотел бы, чтобы эта статья выглядела "агиткой". Plan9 — очень красивая система, концептуально куда более современная, чем ее предшественница Unix (не зря ее называют "Unix на стероидах"). Система очень простая (правда, это вы выясните не сразу, не при первом знакомстве), удобная и, по большому счету, совершенная. Программирование в ней доставляет эстетическое удовольствие, но… о материальном, вероятнее всего, говорить не приходится и не придется. Несмотря на то что ряд компаний используют достаточно мощные Plan9-сети (в частности, Bell Labs) для решения серьезных задач (в первую очередь — верификации программ для встраиваемых систем), невзирая на концептуальное совершенство и прекрасную реализацию, Plan9 пока остается "гадким утенком в мире очень больших и очень жирных гусей". Этой ОС нужны другие компьютеры (главное, совсем дешевые), другие сети (опять же дешевые и производительные), другие программисты — с классической подготовкой (а не со знанием той или иной библиотеки классов), и другие пользователи (те, кто не боится напрягать себя постоянной учебой). Произойдет ли такая революция, при которой все настолько изменится, что Plan9 станет массовой системой? Трудно сказать, но, вероятнее всего, или никогда, или очень нескоро. Хотя настоящему любителю красивых программ эта система доставит настоящее удовольствие.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: