пятница, 10 апреля 2009 г.

Интересные факты о Plan9

1. "Plan 9 from outer space" - это название американского фантастического фильма 1956 года, который считается одним из худших фильмов, снятых за всю историю кинематографии.

2. Роб Пайк известен не только как активный разработчик UNIX и Plan9 и соавтор нескольких книг, посвященных программированию в среде UNIX, но и как серебряный призер олимпиады 1980-го года по стрельбе из лука.

3. Plan9 не делает различия между процессами и потоками. Системный вызов rfork(), предназначенный для разветвления процесса принимает аргумент, который указывает ядру, какие ресурсы должен разделять потомок с родителем.

4. Инженерные изыскания разработчиков Plan9 не ограничились концептуально новой операционной системой. Специально для передачи сообщений 9P они разработали новый транспортный протокол IL (Internet Link), более легкий и адаптируемый, нежели TCP.

5. Plan9 стала первой операционной системой, прозрачно работающей с Unicode. Популярная ныне кодировка UTF-8 вышла из
стен Bell Labs и была спроектирована специально для Plan9.

6. Идеи неперекрывающихся окон и запускаемых откуда угодно команд, реализованные в редакторе acme, принадлежат известному деятелю компьютерных наук и создателю языков программирования Pascal, Modula и Oberon Никлаусу Вирту, который реализовал на их основе интерфейс операционной системы Oberon.

7. Для Plan9 был разработан собственный язык программирования Alef, который представлял собой расширенный Си с некоторыми высокоуровневыми конструкциями и средствами создания и синхронизации потоков. Впоследствии от него отказались из-за сложности в поддержке компилятора для всех аппаратных платформ, на которых могла исполнятся операционная система. Сегодня упоминания об этом языке можно встретить в официальной документации Inferno, где Alef изображается как предок Limbo.

8. Plan9 был почти закончен, когда Линус Торвальдс только начал писать свою операционную систему.

Plan9 from Bell Labs

В конце 80-х годов отцы UNIX Кен Томпсон и Роб Пайк вместе с группой других программистов из Bell Labs начали работу над операционной системой, получившей в последствии имя Plan9. Поводом к изобретению совершенно новой ОС послужил факт морального устаревания UNIX и идей, заложенных в нее. Реалии современного мира IT требовали операционной системы, прозрачно интегрируемой в распределенную сеть из недорогих рабочих станций, чего не могла в полной мере предложить UNIX, спроектированная для работы на больших мэйнфреймах.

Впервые ОС увидела свет в 1992 году и была распространена между несколькими университетами. В 1995 году появилась вторая редакция, распространяемая на коммерческих условиях. В конце 90-х Bell Labs потеряла интерес к проекту и отпустила третью редакцию ОС (2000 год) в свободное плаванье, разрешив всем желающим как угодно модифицировать и распространять измененный код. Четвертая и последняя редакция Plan9 вышла в 2002 году.

Сложившаяся еще в те времена группа поклонников и разработчиков ОС до сих пор продолжает выпускать ежедневные снапшоты Plan9, которые любой желающий может получить с веб-ресурса Bell Labs: http://plan9.bell-labs.com/plan9/.

Можно смело утверждать, что Plan9 поистине уникальная, инновационная во всех отношениях операционная система, на многие годы опередившая свое время. Кен Томпсон, Роб Пайк и Денис Ритчи уже неоднократно демонстрировали свое незаурядное конструкторское мышление, выпустив самую долгоживущую и популярную операционную систему, а также язык, породивший множество эпигонов и остающийся одним из самых популярных и по сей день. Но работая над Plan9, они превзошли сами себя, - на свет появилась ОС, вобравшая все лучшее от идей UNIX и оставившая далеко позади другие исследовательские проекты ОС.

В основу Plan9 легло три главных конструкторских решения:

1. Все является файлом в широком смысле слова.
2. Единый протокол доступа к ресурсам.
3. Пространства имен.

Идея представления в виде файлов всего, чего только возможно, начиная от аппаратных устройств и заканчивая сетевыми сокетами, была реализована еще в UNIX. Но только в Plan9 она достигла своего логического триумфа. Разработчики Plan9 не просто расширили каноническую трактовку понятия "файл", как это было сделано в UNIX, а вообще отказались от нее в пользу совершенно новой системы понятий. В Plan9 файлом является и интерфейс сетевой коммуникации, и переменные окружения, и процессы, и даже окна графического интерфейса. "Обычный" файл, предполагающий наличие выделенного пространства на диске, является всего лишь разновидностью обобщенного понятия "файл".

Главной инновацией, позволившей сделать файлы логическим центром всей операционной системы, стал низкоуровневый протокол доступа к ресурсам, названный 9P. Протокол 9P, как и NFS, - файловый, но в отличие от последнего разрабатывался он с упором на простоту и прозрачную работу как с файлами локальной, так и любой другой машины, доступной через сетевое соединение. Именно протокол 9P стал тем недостающим связующим звеном, позволившим разработчикам реализовать новую концепцию организации ОС. Как известно, в UNIX специальные файлы, предоставляющие доступ к аппаратному обеспечению ПК и другим ресурсам, были всего лишь обычными файлами, хранящимися в реальной файловой системе. При обращении к такому файлу ядро проверяло один из его атрибутов и, если файл оказывался специальным, запускало на выполнение особую процедуру, обрабатывающую операции с этим файлом. Plan9 организована совершенно иначе. Здесь вообще нет понятия специальных файлов, но есть понятие файловых серверов.

Файловым сервером в Plan9 называется любая программа, экспортирующая по протоколу 9P свои ресурсы. Благодаря протоколу 9P пользователь и другие программы видят эти ресурсы как файловое дерево и могут обращаться к нему для коммуникации с программой. Самым ярким примером, иллюстрирующим мощь такой концепции, является графическая оконная система Plan9. Это типичный файловый сервер, экспортирующий всего несколько файлов. Программа, пожелавшая распечатать текст в своем окне, должна записать его в файл /dev/cons. Программы, работающие с графикой, могут записывать специальные команды в файл /dev/draw. О текущем положении мыши они узнают, читая файл /dev/mouse. Обратите внимание, что приложение, запущенное в окне графического интерфейса, вообще не прибегает к каким-либо функциям: все, что от нее требуется, это писать и читать данные из нескольких файлов.

Файловые серверы в Plan9 являются основными строительными элементами, в совокупности составляющими цельную операционную систему. Главный файловый сервер - ядро ОС, экспортирующее ресурсы операционной системы. Каждый драйвер также является файловым сервером, экспортирующим ресурсы определенного аппаратного элемента ПК. Файловые серверы, реализующие различные файловые системы, экспортируют их содержимое как дерево файлов, которое может быть подключено к любой точке текущего файлового дерева. Файловый сервер протокола FTP позволяет подключить к текущему файловому дереву содержимое удаленного FTP-сервера. Файловый сервер протокола DNS экспортирует ресурс /net/dns. Программа, пожелавшая узнать IP-адрес сервера  может записать его имя в этот файл, а затем прочитать из него 32-битное число. В теории, любая корректно написанная программа Plan9 должна быть файловым сервером.

Протокол 9P прозрачен для сети, поэтому любой из ресурсов ОС может находиться на удаленной машине. Файл устройства /dev/mouse может быть привязан к мыши, подключенной к соседнему компьютеру, а файлы каталога /bin - находиться по другую строну океана. Благодаря протоколу 9P и представлению всех ресурсов как файлов, организация распределенных вычислительных сетей превращается в элементарную задачу. Достаточно лишь смонтировать файловую иерархию нужного ресурса к дереву локальной файловой системы.

В Plan9 каждый процесс имеет пространство имен, в которое могут быть помещены файловые иерархии различных ресурсов. Это позволяет любому пользователю создать свою собственную среду, объединив необходимые элементы ОС в одну большую иерархию, эдакий виртуальный ПК, многие компоненты которого позаимствованы у других компьютеров.

Модель представления любого ресурса как файла чрезвычайно прозрачна и понятна любому человеку, работающему за настольным ПК, будь то рядовой пользователь, программист или системный администратор. Благодаря этой концепции, доступ к ресурсам приобретает универсальный характер и не требует создания дополнительных интерфейсов, загромождающих API. Пользователи получают в распоряжение мощный инструмент, позволяющий использовать стандартные команды типа cat и echo для обращения к любым ресурсам (там, где в другой ОС необходима специальная программа, в Plan9 обычно достаточно простой записи нужной строки в файл).

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


Блог жив!

В скором времени в блоге появятся две относительно большие вводные статьи о Plan9 и Inferno. Затем я планирую сделать цикл статей (или заметок) об устройстве Inferno, языке Limbo и программировании на нем. Кроме того, будет материал об Octopus и поднятии http-сервера на основе Inferno и идей синтетической файловой системы. Точных сроков не знаю, основная работа тоже требует к себе внимания (иногда постоянного). Так что не отписывайтесь, приводите знакомых, комментируйте. Если кто-то из подписчиков хотел бы опубликовать свою заметку о Plan9/Inferno, оставляйте комментарий.

понедельник, 30 марта 2009 г.

У "Plan 9 from Outer Space" будет продолжение

В этом году выйдет продолжение одного из худших фильмов, снятых за всю историю существования кинематографии. Поклонники Plan9 ждут конца света... :)
P.S. Plan9, предок Inferno, получил свое название именно благодаря этому фильму.

четверг, 26 марта 2009 г.

Inferno на GSoC

Inferno и Plan9 в очередной раз учавствуют в Google Summer Of Code. С возможными проектами можно ознакомиться здесь и здесь. Напомню, что Inferno и Plan9 уже были на GSoC 2007, но не попали на мероприятие в 2008-ом. Причем все три Inferno-проекта 2007-го были закончены, а два попали в официальную ветку (реализация venti/vac и расширенный механизм SPKI-аутентификации). Порт ОС на Nintendo DS до сих пор живет и развивается в рамках обособленного проекта (inferno-ds.googlecode.com).

Ссылка: Principles of Operating Systems в pdf

Благодаря rapidfx at volgograd.ru, который скачал таки книгу с Google, мы теперь имеем доступ к pdf-версии (почти полной, за исключением примерно 60 страниц), которую можно взять здесь или здесь. Спасибо!

вторник, 17 марта 2009 г.

Ссылка: Principles of Operating Systems

Онлайн-версия книги "Principles of Operating Systems: Design and Applications" (Brian L. Stuart) в библиотеке Google. Вы не сможете сохранить ее на жесткий диск и потратите много трафика на чтение. Но она стоит того. Не потому что написана легендарным человеком или способна сделать Вас гуру в области архитектуры операционных систем. Просто это единственная книга, дающая описание ОС Inferno изнутри. Читая ее Вы узнаете как в Inferno реализованы система инициализации, управление процессами, памятью, устройствами ввода-вывода и файлами. Вам не нужны какие-то особенные знания чтобы приступить к чтению, перед описанием каждой из подсистем дается изрядная доля теории. Единственное что нужно - знание двух языков: английского и Си.