Журнал LinuxFormat - перейти на главную

LXF126:Plan 9

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Все идет по Плану

Каким получился бы Unix, если бы его придумали лет на двадцать позже? Ответ на этот вопрос попытается найти Роман Ярыженко.


Plan 9 из открытого косм... Ой, простите! Plan 9 из Bell Labs. Да-да, той самой Bell Laboratories, из которой вышли языки С/C++, Unix и многое другое, без чего современные компьютерные науки были бы не совсем науками или совсем не науками. Но, оказывается, из стен BellLabs вышел не только Unix. Были разработаны еще две ОС, одна из которых, Plan 9, послужила причиной для написания данной статьи. На территории России, да и у себя на родине, в Соединенных Штатах, Plan 9 не пользуется широкой известностью, и мы решили попытаться исправить этот недостаток хотя бы среди читателей LXF.

Немного истории

В 80‑х годах сотрудникам Bell Labs, а именно Брайану Кернигану [Brian Kernigan], Робу Пайку [Rob Pike] и некоторым другим, показалось, что система Unix... недостаточно подходит для рабочих станций! Доводы были весомыми. Во-первых, Unix – старая система, разработанная для мэйнфреймов и плохо приспособленная для концепций, появившихся после них (таких, например, как сети или графическая система). Во-вторых, Unix с некоторых пор стал закрытым, и это вызвало некоторые затруднения (например, стало сложнее писать драйверы) Ну, а главное – у компьютеров появилась приставка «персональные», и, соответственно, сетями стало нелегко управлять централизованно.

В середине 80‑х в Bell Laboratories началась работа над проектом, устранявшим вышеперечисленные недостатки, которым был подвержен Unix. В 1989 году система стабилизировалась настолько, что стала использоваться в Bell Labs в качестве единственной. Первая публичная версия (доступная для вузов США) вышла в 1992 и получила название Plan 9, в честь некогда популярного в Америке фильма «Plan 9 from Outer Space» («План 9 из открытого космоса»).

Изначально Plan 9 поддерживал платформы Sun SPARC, SGI Power и Magnum с NeXT в качестве CPU-серверов (см. ниже), а также PC в виде терминалов. Первая версия включала такие вещи, как текстовый редактор sam, язык Alef и оконная система , и самое главное – в Plan 9 первыми сумели реализовать поддержку UTF-8; при этом, в отличие от многих современных ОС, Unicode в нем был основным набором символов, и вся внутренняя обработка осуществлялась на нем!

Вторая версия Plan 9 вышла под именем Brazil в 1995 году; в 1999 исходное название вернулось. Она была доступна в двух вариантах: коробочном с CD ($350), содержащем, кроме дистрибутива, исходные коды и печатные руководства, и бесплатном, на четырех дискетах, но без исходников. В Plan 9 добавили среду разработки acme и несколько утилит. был переписан на Alef.

Третья версия, бесплатная для некоммерческого применения и распространявшаяся вместе с исходными текстами, появилась в 2000 году. В ней произошел отказ от Alef, так как расходы на поддержку сразу нескольких языков оказались обременительными. Появились порты на несколько новых платформ. Систему , переписав с Alef на C, немного усовершенствовали и переименовали в Rio. Появилась поддержка устройств PCI и PCMCIA.

Четвертая, последняя полная версия – она была выпущена Bell Labs/Lucent – появилась в 2002 году. Она распространялась по свободной лицензии Lucent Public License 1.02, одобренной OSI и FSF. Изменения претерпел файловый сервер: в частности, он стал понимать длинные имена. Обновился и агент безопасности – factotum.

После четвертой версии разработчики перешли на инкрементальное версионирование, но далее в статье будет рассматриваться «каноническая» четвертая версия; к тому же большинство сборок для конечного пользователя являются абсолютно одинаковыми.

Но, по-видимому, читателю уже наскучило нудное перечисление дат и особенностей релизов? Тогда – вперед, будем ставить Plan 9!

Поехали!

Перед установкой хотелось бы дать несколько советов. Во-первых, Plan 9 может испытывать проблемы с запуском в ряде современных виртуальных машин (VMware, VirtualBox). Мы для знакомства с ним воспользовались старым компьютером, но если у вас под рукой такого нет, возьмите QEMU. Во-вторых (как бы странно это ни звучало), Plan 9 не является еще одним вариантом Unix. Да, некоторые вещи похожи, но пусть это не вводит вас в заблуждение. А посему – забудьте на время многое из того, что вы знаете о Unix/Linux. Ну, и в-третьих – ничего не бойтесь. Ах, да! Еще очень рекомендуется трехкнопочная мышь.

Непосредственно процесс установки иллюстрирован ниже. Внимательно пройдите все шаги, следуя инструкциям инсталлятора. Вопросы здесь может вызвать только деление на разделы и подразделы, напоминающее слайсы во FreeBSD. Для этого используются программы disk/fdisk и disk/prep, вызываемые в процессе установки автоматически. В обеих программах выход с сохранением – w, затем q, как в Vi.

Шаг за шагом: Устанавливаем Plan 9

Шаг 1

1 Загрузка

Этот экран вы увидите сразу после загрузки. Выберите первый пункт, если хотите установить Plan 9. Остальные опции предназначены длястарта в режиме LiveCD.

Шаг 2

2 Разбиение диска

Для установки Plan 9 необходимо создать первичный раздел командой t pN plan9, где N – номер раздела от 1 до 4, plan9 – тип раздела. Внутри него создаются подразделы.

Шаг 3

3 Копирование файлов

Пока происходит копирование файлов дистрибутива, можно по традиции откинуться на спинку кресла и выпить чашечку кофе.

Шаг 4

4 Готово!

Все! Установка завершена. Теперь можно извлечь диск из виртуального или реального привода и перезагрузить компьютер.


Давайте познакомимся?

Загрузчик в Plan 9 чем-то похож на старый добрый LILO, за одним приятным исключением – его не надо обновлять после изменения конфигурационного файла. Он, как и ядро, размещается на отдельном разделе, который называется 9fat и, по сути, является обычным разделом FAT16. Кстати, ядро в Plan 9 монолитное и реализует несколько десятков системных вызовов.

После старта ядра нужно ответить на вопрос, откуда загружаться дальше – по сети или с локального компьютера. По умолчанию выбрана малопонятная запись: «local!#S/sdC0/fossil». Расшифруем: local – локальный компьютер, #S – внутреннее название каталога с жесткими дисками (используется, когда еще не сформировано единое пространство имен), sdC0 – обозначение диска (sdNY, где N = C, D, ... – первичный, вторичный, … , ATA-контроллеры, Y = 0,1 – ведущий/master или ведомый/slave), fossil – имя раздела. Непосредственно диски в Plan 9 являются каталогами, файлы же в этих каталогах – за исключением нескольких – это разделы. К «сырым» данным всего диска тоже можно обратиться, для чего в каталогах есть файл по имени data.

Нажав Enter, вы увидите запрос имени пользователя. Не пытайтесь ответить ‘root’: в Linux это не рекомендуется по соображениям безопасности, а в Plan 9 такого просто нет! Теперь вас зовут glenda (в честь талисмана Plan 9). Кстати, Plan 9 на автономном компьютере фактически является однопользовательской ОС.

Чтобы использовать все преимущества многопользовательского Plan 9, нужны как минимум два соединенных компьютера; на одном из них будет запущен сервер аутентификации (его часто объединяют с файловым сервером, но последнее не обязательно).

Итак, вы вошли в систему. Спустя пару секунд запустится Rio (см. рисунок). Вы увидите несколько окон. На переднем плане – терминал. Вверху справа – stats, местный системный монитор. На заднем плане – acme, аналог Emacs.

В Plan 9 используются все три кнопки мыши. Первая нужна для выделения текста, вторая – для выполнения операций над ним (вырезать, вставить, …), третья – для управления окном (создать, скрыть, удалить, ...). Если нет второй, средней, кнопки, ее можно имитировать нажатием Shift + третья. Инициация и подтверждение действий выполняются одной и той же кнопкой: например, чтобы закрыть окно, надо щелкнуть правой кнопкой посвободному (серому) фону, выбрать Delete, отпустить кнопку, навести курсор на окно и щелкнуть той же самой правой (не левой!) кнопкой мыши.

В Plan 9 все есть файл. Нас с вами этим не удивишь, но здесь знакомая концепция доведена до предела: сокеты, ioctl(3), fcntl(3) и прочие «сложности» банально отсутствуют. За все надо платить, и ценой за простоту программирования в Plan 9 является несовместимость со стандартом POSIX. Есть, конечно, так называемая «среда ANSI/POSIX» (ANSI/POSIX Environment, APE), есть даже порты некоторых Unix-приложений (Vi, X11) под нее но сомнительно, что здесь удастся скомпилировать сколько-нибудь современную программу.


В полной мере возможности Plan 9 раскрываются в распределенной сети. Рассмотрим вкратце ее иерархию:

  • CPU-сервер – используется для запуска неинтерактивных программ и приложений, требующих вычислительной мощности.
  • Сервер аутентификации – предназначен для регистрации с терминалов пользователей, обычно объединен с файловым сервером.
  • Файловый сервер – машина для хранения файлов пользователей. В Bell Labs в качестве устройств хранения использовались WORM-накопители.
  • Терминалы – пользовательские компьютеры.

Кроме того, в качестве необходимого «довеска» к вышеперечисленному, в Plan 9 есть пространства имен, придающие несколько иной смысл стандартной утилите mount, и команда bind.

Пространством имен в Plan 9 называется вся древовидная структура файлов (не забывайте, что файлом в этой ОС может быть что угодно), видимая пользователем. Таким образом, оно может охватывать несколько компьютеров.

Команда mount подключает к каталогу файловый сервис. У нее есть параметр, определяющий способ подключения: либо заменить текущее содержимое каталога новым, либо появиться перед текущим содержимым, либо после него. Команда bind объединяет два каталога в один. Параметры (и даже man-страница) с командой mount у нее общие.

Наше мнение

Plan 9 – так вполне мог бы выглядеть Unix, будь он создан немного позже. Но история не терпит сослагательного наклонения, и Unix в таком виде, в каком он появился, влияет на существующее положение вещей и поныне. Конечно, с тех пор в нем много чего изменилось и добавилось, однако ничего революционного за протекшие лет 20 в его развитии не произошло (трехмерные рабочие столы не в счет: мы говорим о фундаментальных вещах). Исходя из вышесказанного, можно подумать, что вся компьютерная эволюция застряла в 80‑х. Тем не менее, это не так. Plan 9 содержит много нововведений, которые даже сейчас, спустя более чем 20 лет с момента его появления, кажутся удивительными. И это при том, что многие из них очень просты и изящны.

Plan 9 – одна из немногих операционных систем, не только вышедших за стены лабораторий, но и используемых в коммерческих целях (скажем, в той же Alcatel-Lucent). Это доказывает, что он весьма практичен и зрел.

Слово Vita Nuova

Мы посчитали, что знакомство с Plan 9 будет неполным без обмена мнениями с «живым разработчиком».


И поэтому отыскали в Сети д-ра Чарльза Форсита [Dr Charles Forsyth], одного из основателей и технического директора компании Vita Nuova (http://www.vitanuova.com), а также убежденного сторонника Plan 9, использующего его с начала 90‑х годов. Он любезно согласился ответить на все наши вопросы.

LXF: Доктор Форсит, чем занимается ваша компания и как она связана с Plan 9?

Д-р Чарльз Форсит (ЧФ): Vita Nuova была основана в середине 1996‑го года для работ в области сетей и распределенных вычислений; при этом использовался «младший брат» Plan 9 – Inferno. Конечно, и Plan 9, и Inferno тогда были платными; тем не менее, они мне нравились, и я перешел из Йоркского университета, где работал в то время, в Vita Nuova.

LXF: А Vita Nuova — единственный лицензиар Plan 9?

ЧФ: Нет. Plan 9 из Bell Labs был выпущен под лицензией Lucent Public License, и его лицензиарами были сначала AT&T, затем Lucent, а сегодня его лицензирует Alcatel-Lucent. Мы распространяем печатную документацию для четвертой версии Plan 9. Данная версия является последней полной: после был переход на инкрементальное версионирование, как это сделано во многих других свободных/открытых проектах. Раньше мы распространяли и CD, но потом нужда в этом отпала; сейчас пользователям проще скачать продукт с сайта. Вначале в Vita Nuova использовали Plan 9 для внутренних нужд, потом, доработав, мы начали его продавать.

LXF: А какую, по-вашему, цель преследовало создание Plan 9?

ЧФ: ОС Plan 9 готовилась Bell Labs в качестве новой платформы, объединяющей в себе как программную, так и аппаратную части. Система разрабатывалась «с нуля» с упором на распределенность и параллелизм.

В Plan 9 применены как старые, так и новые идеи в сфере распределенных вычислений. Это отличает его от его предшественника, Unix (включая и его потомков, BSD и Linux), модель которого представляет собой одиночную замкнутую машину с локальным хранилищем данных.

LXF: Наш журнал пропагандирует открытое и свободное ПО, и потому мы не можем не спросить: что вы думаете по этому поводу? Как в связи с Plan 9, так и в целом.

ЧФ: В моем понимании, свободное ПО было придумано еще до FSF. Во времена моей молодости было свободное распространение полезных программ от DECUS (Digital Equipment Computer Users Society) и от подобных организаций для других платформ. Это было похоже на обмен ПО между университетами: дружественная атмосфера, обширное распространение ПО в виде исходных кодов, без искусственных ограничений – как для использования, так и для экспериментов.

Современное изобилие свободного ПО, конечно же, затрудняет зарабатывание денег на продаже программных пакетов. Даже «нишевые» приложения теснятся под напором свободного ПО. Альтернатива – предоставление поддержки продуктов.

Vita Nuova зарабатывает деньги на технических сервисах, а не на продаже ПО или документации. Мы, кроме того, заботимся не только о своем, но и о чужом открытом ПО, отчасти потому, что успели адаптироваться раньше других.

Свободное ПО кажется сейчас хорошим выбором для рабочей среды. С другой стороны, несмотря на то, что некоторые люди из СПО считают себя радикальными, многое из используемого мной в Ubuntu не является революционно новым с точки зрения архитектуры (некоторые дополнительные пакеты все же отражают больше инноваций). Одной из захватывающих вещей в Unix 70‑х была его простота по сравнению со сложными и раздутыми операционными системами того времени. Сейчас же, переключаясь с Plan 9 на программирование под Linux/BSD, я дивлюсь, как они консервативны и избыточно сложны.

LXF: Если не секрет, кто (и где) использует Plan 9?

ЧФ: В списке рассылки 9fans есть много энтузиастов, которые экспериментируют с Plan 9, и некоторые из них используют его в качестве основной среды разработки, в том числе и в коммерческих организациях. Не секрет, что Vita Nuova многие годы тоже применяет его как платформу для разработки ПО.

Чего стоит одна файловая система dump! Она автоматически сохраняет состояние целой системы, дополнительно записывая изменения в службу архивов Venti. Она предшествовала Apple Time Machine, но является более качественной – об этом мне говорили люди, которые используют обе ФС.

Более интересны группы, использующие Plan 9 в коммерческих приложениях. Вы правы насчет того, что некоторые коммерческие пользователи не говорят, что именно они применяют (мы знаем о них только потому, что они заключают с нами договор о предоставлении услуг). Но я все же могу привести пару примеров нетривиального коммерческого использования нашей системы.

  • Компания Coraid (http://www.coraid.com) эффективно применяет урезанную и доработанную ею версию Plan 9 в популярных сетевых хранилищах данных.
  • Alcatel-Lucent сама использует Plan 9 (и его возможности операционной системы реального времени) в коммуникационной сфере, например, в беспроводных базовых станциях.

LXF: Вы упомянули операционные системы реального времени...

ЧФ: Да, все верно: в Plan 9 есть планировщик реального времени и еще некоторые другие специальные механизмы RTOS, такие как неблокирующие семафоры и очереди, не требующие ожидания (используя их, процессы реального времени могут предотвращать бессмысленные блокировки в обычных процессах). Под «процессами реального времени» я имею в виду процессы, имеющие жестко заданный срок окончания работы, а не только быстрые или высокоприоритетные.

Примитивы реального времени присутствуют в Plan 9 для поддержки некоторых специализированных коммуникационных приложений, но с успехом могут использоваться, например, для мультимедиа-проигрывателя. Если вас всерьез интересует данный вопрос, советую обратиться к статье Сэйджа Маллендера [Sage Mullender] и Джима Мак-Ки [Jim McKie], касающейся большинства перечисленных выше вопросов (http://lsub.org/iwp9/cready/realtime.pdf).

LXF: Возможно ли использование Plan 9 во встраиваемых системах?

ЧФ: Да. Более того, это, вероятно, одно из самых частых его применений. Он удобен и как компьютер разработчика, но, к примеру, не слишком полезен в традиционной офисной среде.

LXF: Можно ли собрать ядро Plan 9 таким образом, чтобы появилась возможность подключать/отключать драйверы «на лету»?

ЧФ: Многие вещи, которые в большинстве других операционных системах реализованы в ядре, в Plan 9 являются приложениями режима пользователя. Многие сервисы в Plan 9 предоставляются файл-серверами, которые являются обыкновенными пользовательскими программами, реализующими протокол 9P.

LXF: Мы несколько раз упомянули, что в основе Plan 9 заложены оригинальные архитектурные решения. А какие именно?

ЧФ: Plan 9 является достаточно стандартной системой с примерно 38 системными вызовами [согласно заголовочным файлам – чуть более 50, – прим. LXF], что может показаться излишним, но некоторые из них (например, управление сегментацией памяти) довольно специализированы и применяются не очень широко. Основой параллелизма является процесс, и процессы, как с разделяемой памятью, так и без нее, создаются с помощью примитива rfork, который позволяет управлять также разделением других ресурсов, таких как файловые дескрипторы и пространства имен. Еще один примитив, rendezvous, используется для синхронизации. Все остальное – спин-блокировки, блокирующие очереди и каналы – реализованы в библиотеках режима пользователя через rendezvous. Большая часть остальных системных вызовов – операции над файловыми дескрипторами (read, write, seek и close) и операции над иерархическим пространством имен (open, create, chdir, stat, wstat, remove, bind, mount и unmount). В Plan 9 есть только один тип процесса (то есть система не делает различия между легковесными «потоками», которые разделяют память, и тяжеловесными «процессами», которые этого не делают).

Plan 9 необычен тем, что системные сервисы представляются и доступны как файлы в иерархическом пространстве имен. Все сосредоточено с помощью единого протокола разделения файлов, 9P.

LXF: Ну и напоследок позвольте спросить, какие у Vita Nuova планы относительно будущего Plan 9?

ЧФ: Сейчас мы очень тесно связаны со многими другими компаниями (скажем, Bell Labs, IBM Research и Sandia National Labs) в проекте для использования Plan 9 в суперкомпьютере IBM BlueGene, который включает адаптирование системы для поддержки приложений на так называемых «системах петамасштаба».

Мы ожидаем, что это скажется и на применении Plan 9 в «обычном мире» – в частности, для работы в сети и на файловых хранилищах.

Персональные инструменты
купить
подписаться
Яндекс.Метрика