четверг, 30 апреля 2009 г.

Ссылка: оригинальная документация от Alcatel-Lucent

На страничке Индийского Института Наук опубликовано несколько редких документов, посвященных ОС Inferno. Из интересного можно отметить:

1. Средства поддержки баз данных (Database Support in Inferno).
2. Поддержка реального времени (Inferno Real-time Support).
3. Пространства имен (Inferno Namespaces).
4. Реализация агента SNMP в Inferno (Implementation of SNMP Agent by Inferno).

Документы Inferno Security, Security in Inferno и A comparison of Inferno and Java уже устарели.

вторник, 28 апреля 2009 г.

wiki: Новые материалы на ru.inferno-os.wikia.com

Рад сообщить, что работа по накоплению багажа русскоязычной документации об Inferno идет полным ходом. На нашей wiki-страничке уже опубликовано более пятнадцати статей и заметок, направленность которых простирается от введения в операционную систему до программирования на языке Limbo. Сейчас мы заняты переводом официального руководства программиста, первые две главы которого уже опубликованы. За каждым разделом wiki (использование, безопасность, програмирование) закреплен документ "Часто Задаваемые Вопросы" (ЧаВо), в котором вы можете оставлять свои вопросы (форматирование не обязательно, мы все исправим).

К сожалению, не всегда хватает времени на своевременную окончательную редакцию материалов, поэтому незаконченные или содержащие ошибки документы помечены словом WIP (Work In Progress).

среда, 22 апреля 2009 г.

Google Summer of Code 2009

Стали известны проекты, учавствующие в мероприятии GSoC 2009. К сожалению Inferno-проектов среди них нет, зато сообщество Plan9 получило в свое распоряжение семь студентов, которые должны заняться следующим:

1. Отправить 9load в /dev/null. В рамках проекта планируется перенести функциональность загрузчика 9load в ядро ОС.
2. Портировать интерпретатор Scheme.
3. Реализовать поддержку пространства имен в Glendix (Plan9 на ядре Linux).
4. Создать более производительную версию почтовой системы upas.
5. Портировать vx32 на платформу Windows.
6. Реализовать полноценный брэндмауэр.
7. Релизовать GitFS, файловый сервер для прозрачной работы с репозиториями git.

среда, 15 апреля 2009 г.

Сообщество пользователей Inferno на conference@jabber.ru

Заходите в комнату inferno и присоединяйтесь к общению. Категорически приветствуются любые вопросы, связанные с использование Inferno, а также истории об успешном применении Inferno в реальных боевых задачах.

Вся русскоязычная документация об Inferno в одном месте

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

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

Inferno на Soekris Net4501 и Net5501

Frederic Bonfanti подготовил каркас для сборки Inferno для мини-компьютеров Soekris Net4501 и Net5501. Конфигурационный файл, необходимый для сборки порта, можно найти в его письме.



Интересные факты о 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, оставляйте комментарий.