Наследники Unix: Plan9 и Inferno
МОЖНО ЛИ СОЗДАТЬ ОПЕРАЦИОННУЮ СИСТЕМУ, БОЛЕЕ ИЗЯЩНУЮ, ЧЕМ UNIX? МОЖНО ЛИ
СДЕЛАТЬ UNIX СОВЕРШЕННЫМ? МОЖНО ЛИ СОЗДАТЬ ОПЕРАЦИОННУЮ СИСТЕМУ, ОПЕРЕДИВШУЮ
ВРЕМЯ? ВПОЛНЕ!
Немного истории
В конце 80-х годов отцы UNIX Кен Томпсон и Роб Пайк вместе с группой других
программистов из Bell Labs начали работу над новой операционной системой,
получившей в последствии имя Plan9. Поводом к изобретению совершенно новой ОС
послужил факт морального устаревания UNIX и идей, заложенных в нее. Реалии
современного мира IT требовали операционной системы, прозрачно интегрируемой в
распределенную сеть из недорогих рабочих станций, чего не могла в полной мере
предложить UNIX, спроектированная для работы на больших мэйнфреймах.
Первый публичный релиз увидел свет в 1992 году и был распространен между
несколькими университетами. Второй релиз появился в 1995 году, но на этот раз
распространялся по коммерческой лицензии. В конце 90-х Bell Labs потеряла
интерес к проекту и в 2000 году выпустила третий релиз Plan9 под некоммерческой,
open source-лицензией. Четвертый и последний релиз ОС вышел в 2002 году.
Но сложившаяся еще в те времена группа поклонников и разработчиков ОС до сих
пор продолжает выпускать ежедневные снапшоты Plan9, которые любой желающий может
получить с веб-ресурса Bell Labs:
http://plan9.bell-labs.com/plan9/.
В конце девяностых от Plan9 отпочковался дочерний проект под названием
Inferno, который позднее был приобретен британской компанией Vita Nuova и вплоть
до 2005 года распространялся под коммерческой лицензией. Сегодня исходные тексты
этой ОС открыты для ознакомления и модификации всем желающим.
В чем же уникальность Plan9? Чем Inferno так привлекла Vita Nuova? Почему
вокруг этих ОС сформировался стабильный круг фанатичных поклонников? Попробуем
разобраться в этих вопросах.
Plan9
Можно смело утверждать, что Plan9 поистине уникальная, инновационная во всех
отношениях операционная система, на многие годы опередившая свое время. Кен
Томпсон, Роб Пайк и Денис Ритчи уже неоднократно демонстрировали свое
незаурядное конструкторское мышление, выпустив самую долгоживущую и популярную
операционную систему, а также язык, породивший множество эпигонов и остающийся
одним из самых популярных и по сей день. Но работая над Plan9, они превзошли
сами себя, - на свет появилась ОС, вобравшая все лучшее от идей UNIX и
оставившая далеко позади другие исследовательские проекты ОС.
В основу Plan9 легло три главных конструкторских решения:
- Все является файлом в широком смысле слова.
- Единый протокол доступа к ресурсам.
- Пространства имен.
Идея представления в виде файлов всего, чего только возможно, начиная от
аппаратных устройств и заканчивая сетевыми сокетами, была реализована еще в UNIX.
Но в Plan9 она достигла своего логического триумфа. Разработчики Plan9 не просто
расширили каноническую трактовку понятия «файл», как это было сделано в UNIX, но
и вообще отказались от нее в пользу совершенно новой системы понятий. В Plan9
файлом является и интерфейс сетевой коммуникации, и переменные окружения, и
процессы, и даже окна графического интерфейса. «Обычный» файл, предполагающий
наличие выделенного пространства на диске, является всего лишь разновидностью
обобщенного понятия «файл».
Главной инновацией, позволившей сделать файлы логическим центром всей
операционной системы, стал низкоуровневый протокол доступа к ресурсам, названный
9P. Протокол 9P, как и NFS, - файловый, но в отличие от последнего
разрабатывался он с упором на простоту и прозрачную работу как с файлами
локальной, так и любой другой машины, доступной через сетевое соединение. Именно
протокол 9P стал тем недостающим связующим звеном, позволившим разработчикам
реализовать совершенно новую концепцию организации ОС. Как известно, в UNIX
специальные файлы, предоставляющие доступ к аппаратному обеспечению ПК и другим
ресурсам, были всего лишь обычными файлами, хранящимися в реальной файловой
системе. При обращении к такому файлу ядро проверяло один из его атрибутов и,
если файл оказывался специальным, запускало на выполнение особую процедуру,
обрабатывающую операции с этим файлом. Plan9 организована совершенно иначе.
Здесь вообще нет понятия специальных файлов, но есть понятие файловых серверов.
Файловым сервером в Plan9 называется любая программа, экспортирующая по
протоколу 9P свои ресурсы. Благодаря протоколу 9P пользователь и другие
программы видят эти ресурсы как файловое дерево и могут обращаться к этим файлам
для коммуникации с программой. Самым ярким примером, иллюстрирующим мощь такой
концепции, является графическая оконная система Plan9. Это типичный файловый
сервер, экспортирующий всего несколько файлов. Программа, пожелавшая распечатать
текст в своем окне, должна записать его в файл /dev/cons. Программы, работающие
с графикой, могут помещать изображение в файл /dev/bitblt. О текущем положении
мыши они узнают, читая файл /dev/mouse. Обратите внимание, что приложение,
запущенное в окне графического интерфейса, вообще не прибегает к каким-либо
функциям: все, что от нее требуется, это писать и читать данные из нескольких
файлов.
Файловые серверы в Plan9 являются основными строительными элементами, в
совокупности составляющими цельную операционную систему. Главный файловый сервер
— ядро ОС, экспортирующее ресурсы операционной системы. Каждый драйвер также
является файловым сервером, экспортирующим ресурсы определенного аппаратного
элемента ПК. Файловые серверы, реализующие различные файловые системы,
экспортируют их содержимое как дерево файлов, которое может быть подключено к
любой точке текущего файлового дерева. Файловый сервер протокола FTP позволяет
подключить к текущему файловому дереву содержимое удаленного FTP-сервера.
Файловый сервер протокола DNS экспортирует ресурс /net/dns. Программа,
пожелавшая узнать IP-адрес сервера www.host.ru, может записать его имя в этот
файл, а затем прочитать из него 32-битное число. В теории, любая корректно
написанная программа Plan9 должна быть файловым сервером.
Благодаря тому, что протокол 9P прозрачен для сети, любой из ресурсов ОС
может находиться на удаленной машине. Файл устройства /dev/mouse может быть
привязан к мыши, подключенной к другому компьютеру в сети, а файлы каталога /bin
могут находиться по другую строну океана. Благодаря протоколу P9 и представлению
всех ресурсов как файлов, организация распределенных вычислительных сетей
превращается в элементарную задачу. Достаточно лишь подключить файловую иерархию
нужного ресурса к дереву локальной файловой системы.
Единый протокол 9P также решает одну из насущных проблем современности —
проблему защиты информации. Так как доступ к любым ресурсам (как локальным, так
и сетевым) осуществляется через единый протокол, то в системе остается только
одно узкое место в безопасности — сам протокол, который может быть зашифрован.
Более того, разработчики Plan9 отказались от устаревшей и небезопасной концепции
аутентификации на основе пароля в пользу открытых ключей, которые подписываются
службой сертификации Plan9.
В Plan9 каждый процесс имеет пространство имен, в которое могут быть помещены
файловые иерархии различных ресурсов. Это позволяет любому пользователю создать
свою собственную среду, объединив необходимые элементы ОС в одну большую
файловую иерархию. Причем любой из элементов этой иерархии может находиться на
удаленном ПК. Например, пользователь маломощного ПК может импортировать
некоторые каталоги с удаленной машины (файлового сервера), чтобы хранить свои
личные файлы. А еще он может запускать программы на другом удаленном ПК и
работать с ними так, как будто они исполняются на локальном. Пространства имен
позволяют создать виртуальный ПК, позаимствовав некоторые его элементы у других.
Некоторые файловые серверы тоже активно используют пространства имен. Оконная
система с их помощью мультиплексирует доступ клиентов к окнам, поэтому каждая
программа, работающая с графикой, «видит» только собственные версии ресурсов /dev/cons,
/dev/bitblt и /dev/mouse.
Inferno
Примерно в 1996 году от работы над Plan9 отказались несколько человек в
пользу новой ОС Inferno, построенной на базе Plan9, но рассчитанной на
применение в несколько иной сфере. Plan9 задумывалась создателями как
операционная система, способная прозрачно и легко работать на компьютерах,
организованных в распределенную вычислительную сеть. Протокол 9P, представление
всех ресурсов ПК в виде файлов, - все это проектировалось с оглядкой на
прозрачную масштабируемость. Поэтому Plan9 также хорошо подходил для применения
в гетерогенных сетях, отдельные элементы которых построены на разных аппаратных
платформах (в наши дни это означает возможность легкого обмена информацией между
ПК, КПК, смартфонами, цифровыми камерами). Но Plan9 не доставало одной важной
конструкторской особенности — возможности запускать пользовательские приложения
на разной аппаратуре без модификации. Этот недостаток и решили устранить
создатели Inferno.
Inferno — это ядро Plan9, поверх которого расположена виртуальная машина,
исполняющая переносимый процессорно-независимый байткод и исполняющая роль
распределителя ресурсов ПК между приложениями. Ядро ОС и виртуальная машина
написаны на языке C и исполняются на процессоре, то есть являются
аппаратно-зависимыми. Пользовательские приложения написаны на языке Limbo и
предварительно транслированы в переносимый байткод, который виртуальная машина
посредством JIT-компиляции переводит в машинный код целевого процессора (так же,
как это делает Java). В результате мы имеем следующую картину: независимо от
того, на каком процессоре и аппаратной платформе исполняется ядро ОС,
пользовательские приложения остаются неизменными и могут без модификации и
перекомпиляции переноситься на другой экземпляр ОС, работающий на иной
аппаратной платформе. Что и требуется в случае с гетерогенной сетью.
Язык Limbo, специально спроектированный для Inferno, предназначен для
создания пользовательских приложений, исполняемых виртуальной машиной Dis. Его
синтаксис схож с синтаксисом Cи с некоторыми заимствованиями из Pascal. Это
высокоуровневый безопасный язык с жесткой типизацией и управляемым кодом. В
Limbo встроены мощные средства работы со строками, создания и синхронизации
потоков и обмена сообщениями между процессами.
Виртуальная машина Dis, выступающая в роли среды исполнения для программ,
написанных на Limbo, также обладает несколькими интересными характеристиками. В
частности, она позволяет загружать динамические модули (аналог разделяемых
библиотек) во время исполнения и только тогда, когда в них возникает
необходимость, при этом гарантируется, что модули не будут дублироваться в
памяти. Ставший уже традиционным для виртуальных машин сборщик мусора не
допустит растрат памяти.
В отличие от Plan9, Inferno не использует аппаратный блок MMU и работает в
режиме процессора. Изоляцию процессов и защиту памяти выполняет виртуальная
машина. Эта особенность выгодно отличает ее от среды исполнения Java, которая
требует запуска отдельной виртуальной машины для каждого приложения.
Ядро Inferno портировано на процессоры Intel x86, Intel XScale, IBM PowerPC,
ARM StrongARM и Sun SPARC. Кроме того, Inferno может работать как
пользовательское приложение в следующих ОС: Windows NT/2000/XP, Irix, Linux,
MacOS X, FreeBSD, Solaris и Plan9. Также доступен вариант Inferno, выполненный в
виде плагина для Internet Explorer.
Выводы
Модель представления любого ресурса как файла чрезвычайно прозрачна и понятна
любому человеку, работающему за настольным ПК, будь то рядовой пользователь,
программист или системный администратор. Благодаря этой концепции, доступ к
ресурсам приобретает универсальный характер и не требует создания дополнительных
интерфейсов, загромождающих API. Пользователи получают в распоряжение мощный
инструмент, позволяющий использовать стандартные команды типа cat и echo для
обращения к любым ресурсам (там, где в другой ОС необходима специальная
программа, в Plan9 обычно достаточно простой записи нужной строки в файл).
Plan9 создает свой, простой в понимании изящный мир. Здесь нет нагромождения
интерфейсов, различных несовместимых и устаревших технологий. В этой ОС все
вращается вокруг единой концепции. Plan9 — это своего рода произведение
искусства, каждая деталь которого хорошо продумана и находится на своем месте.
Крах иллюзий
Казалось бы, почему такие инновационные, универсальные и в каком-то смысле
революционные ОС как Plan9 и Inferno потерпели фиаско на собственном же поле,
уступив место куда менее привлекательным продуктам? Ведь кроме самой Bell Labs и
Google никто больше всерьез ими не заинтересовался. Ответ на вопрос, почему
провалилась Plan9, дал Эрик Реймонд. По его мнению, Plan9 стала жертвой
пресловутой «второй системы». Ведь несмотря на то, что UNIX «скрипит и трещит по
швам», она исполняет свою задачу достаточно хорошо, а большего и не требуется.
Низкая популярность Inferno, наверное, связана с тем, что особенности ее
архитектуры не позволяют легко портировать существующие приложения, написанные
на популярных языках программирования. Inferno просто исчезла в тени куда более
разрекламированного конкурента Java.
WWW
plan9.bell-labs.com/plan9/ - официальный сайт Plan9
plan9.darkflame.ru -
русскоязычный ресурс о Plan9
www.vitanuova.com/inferno/ - официальный сайт Inferno
code.google.com/p/inferno-os/ - исходные тексты Inferno, доступные через
Subversion
canto.hopto.org/wiki/
- Wiki-страница Inferno
www.cs.bell-labs.com/who/dmr/ - cтраница Дениса
Ритчи
www.cs.bell-labs.com/who/ken/ - cтраница Кена
Томпсона
|
Обсуждение статьи
|
|
|
|
RE: Наследники Unix: Plan9 и Inferno Cool! |
|
RE: Наследники Unix: Plan9 и Inferno видимо еще не пришло время для План9, но возможности принципов работы безграничны. возможно распределенные вычисления, в будущем, будут использоваться даже мобильными телефонами 2х прохожих, на улице или всемирной сетью |
|
RE: Наследники Unix: Plan9 и Inferno With the development of science and technology, home theater has become the general population, dvd box set market more active, DVD and CD look similar, they are the diameter of 120 millimeter, usually used to broadcast TV film, the standard definition of high quality music with great capacity data storage usage. |
|
|
Keywords: zPOSTz zSOFTWAREz z10041z
Для Авторов: edit delete
Автор: Евгений Зобнин Дата: 16.12.2008 12:40:10©
|