Не так давно Cinap Lenrek, автор Linux-эмулятора linuxemu, SMB-сервера cifsd, newboot и кучи другого p9-софта, создал форк Plan 9 под названием plan9front.
Это не было бы столь интересно, если бы автор не успевал "строчить" по 10-20 коммитов ежедневно, а список изменений не был бы таким занимательным:
* 9load заменен на более развитый 9boot.
* Файловая система fossil заменена на cwfs.
* Язык программирования и среда исполнения языка Go.
* Новый файловый сервер kbdfs.
* Возможность установки с USB CD-ROM, USB HDD и USB FLASH.
* SMB-сервер cifsd в комплекте.
* Python и Mercurial.
* Эмулятор tty.
* Эмулятор /dev/realmode realemu, позволяющий активировать графический режим на ранее не поддерживаемых видео-картах.
* Драйвера для следующих устройств: сетевая карта Broadcom BCM57xx, SATA-контроллеры Intel 82801FBM SATA, ntel 82801HB/HR/HH/HO SATA IDE, ntel 82801HBM SATA (ICH8-M), видео-карты AMD Geode LX, планшетов Wacom WACF004 и WACF008.
Показаны сообщения с ярлыком plan9. Показать все сообщения
Показаны сообщения с ярлыком plan9. Показать все сообщения
вторник, 10 мая 2011 г.
пятница, 15 апреля 2011 г.
Интервью с Расом Коксом (Russ Cox)
Здесь можно прочитать перевод интервью с Расом Коксом, одним из разработчиков Plan 9, Inferno, Go и создателем Plan 9 from User Space.
среда, 16 марта 2011 г.
Google Summer Of Code 2011
Опубликован список идей для SoC 2011, касающихся Plan 9 и всех связанных с ней технологий. Выглядит он примерно так:
1. Переписать механизм генерации html-кода в wikifs(4).
2. Научить wikifs производить аутентификацию с помощью auth-сервера.
3. Портировать BSD NDISulator (для работы сетевых Windows-драйверов).
4. Научить компилятор kencc генерировать объектные файлы для Windows (как я понял это нужно, чтобы портировать некоторые компоненты Plan 9 в Windows).
5. Библиотека для декодирования asn.1 DER (часть проекта по портированию LDAP).
6. Реализовать NAT (уже не первый раз в GSoC, видимо никому не нужно).
7. Научить libdraw/libframe работать со шрифтами разной высоты.
8. x2apic и msi interrupts (в двух словах: улучшение работы Plan 9 в кластерах).
9. Работа над /sys/src/libc/amd64 (часть затянувшегося проекта по портированию на amd64).
10. Научить 9load-e820 переходить в 64-битный режим до загрузки ядра.
11 Файл-сервер SVGdraw на JavaScript (Очень интересная идея, суть которой в том, чтобы реализовать draw-сервер в браузере и позволить Plan 9/Inferno использовать его вместо нативного. Это позволит выводить всю графику на web-страницу без каких-либо костылей. Так же планируется добавить поддержку websockets к текущей реализации Styx на js.)
12 Реализовать клавиатурный файл-сервер.
13 Создать альтернативный менеджер окон (давно пора).
14 Поднять аналог kernel.org для Plan 9.
15 Закончить ratrace (аналог strace).
16 Драйвера для поддержи KVM/Virtio (для улучшения производительности Plan 9 в qemu).
Более подробную информацию можно получить пройдя по приведенной в начале поста ссылке.
1. Переписать механизм генерации html-кода в wikifs(4).
2. Научить wikifs производить аутентификацию с помощью auth-сервера.
3. Портировать BSD NDISulator (для работы сетевых Windows-драйверов).
4. Научить компилятор kencc генерировать объектные файлы для Windows (как я понял это нужно, чтобы портировать некоторые компоненты Plan 9 в Windows).
5. Библиотека для декодирования asn.1 DER (часть проекта по портированию LDAP).
6. Реализовать NAT (уже не первый раз в GSoC, видимо никому не нужно).
7. Научить libdraw/libframe работать со шрифтами разной высоты.
8. x2apic и msi interrupts (в двух словах: улучшение работы Plan 9 в кластерах).
9. Работа над /sys/src/libc/amd64 (часть затянувшегося проекта по портированию на amd64).
10. Научить 9load-e820 переходить в 64-битный режим до загрузки ядра.
11 Файл-сервер SVGdraw на JavaScript (Очень интересная идея, суть которой в том, чтобы реализовать draw-сервер в браузере и позволить Plan 9/Inferno использовать его вместо нативного. Это позволит выводить всю графику на web-страницу без каких-либо костылей. Так же планируется добавить поддержку websockets к текущей реализации Styx на js.)
12 Реализовать клавиатурный файл-сервер.
13 Создать альтернативный менеджер окон (давно пора).
14 Поднять аналог kernel.org для Plan 9.
15 Закончить ratrace (аналог strace).
16 Драйвера для поддержи KVM/Virtio (для улучшения производительности Plan 9 в qemu).
Более подробную информацию можно получить пройдя по приведенной в начале поста ссылке.
суббота, 31 июля 2010 г.
9buntu - Ubuntu с лицом Plan 9

Наткнулся на ISO-образ 9buntu, распространяемый широко известными в узких кругах ребятами с сайта suckless.org. Как можете видеть скриншот очень красноречив, однако что это, 9vx или доработанный p9p пока не ясно.
четверг, 27 мая 2010 г.
SoC 2010
Нынешний Summer of Code вновь обошел Inferno стороной, в то время как Plan 9 удостоился шести проектов. В этом году:
1. Venkatesh Srinivas работает над улучшением менеджера виртуальной памяти.
2. Jesus Galan совершенствует 9vx.
3. John David работает над реализацией Heirarchical Patch Dynamics (9hpd).
4. Michael Block собирается внедрить систему методов ввода (для ввода не-английских символов).
5. Andre Guenther планирует портировать DrawTerm на IPhone.
6. Per Odlund портирует Plan 9 на arm-платформу IGEPv2.
PS Результаты первого проекта скорее всего будут портированы в Inferno.
PPS Подробности.
1. Venkatesh Srinivas работает над улучшением менеджера виртуальной памяти.
2. Jesus Galan совершенствует 9vx.
3. John David работает над реализацией Heirarchical Patch Dynamics (9hpd).
4. Michael Block собирается внедрить систему методов ввода (для ввода не-английских символов).
5. Andre Guenther планирует портировать DrawTerm на IPhone.
6. Per Odlund портирует Plan 9 на arm-платформу IGEPv2.
PS Результаты первого проекта скорее всего будут портированы в Inferno.
PPS Подробности.
воскресенье, 23 мая 2010 г.
Plan 9 LiveUSB
Для тех кто хочет иметь Plan 9 всегда под рукой Balwinder S Dheeman подготовил LiveUSB на базе FreeBSD 7.2, xorg-minimal и 9vx. Образ содержит в себе все приложения, исходные коды и документацию из последнего plan9.iso. Размер архива: 262 Мб.
четверг, 21 января 2010 г.
Среда acme на видео
Всем, кто хотел познать красоту acme, но не мог это сделать, посвящена целая серия видеоуроков, опубликованных в блоге http://thenewsh.blogspot.com. Ссылка.
понедельник, 14 декабря 2009 г.
суббота, 31 октября 2009 г.
[iwp9] Четвертый съезд поклонников Plan 9 и Inferno

21, 22 и 23 числа октября были выбраны днями проведения четвертого съезда поклонников Plan 9 и Inferno (4th International Workshop on Plan 9). Местом встречи был выбран университет Джорджии, США. Конференция прошла, а все прозвучавшие на ней доклады были выложены в сеть, среди которых есть и множество документов, посвященных или косвенно относящихся к Inferno.
Plan 9's Universial Serial Bus. Francisco J. Ballesteros, известный под ником nemo, рассказывает о том, как в Plan 9 была добавлена поддержка USB 2.0 и что для этого пришлось сделать.
Styx Caching via Journal Callbacks. Nathaniel W. Filardo и Venkatesh Srinivas рассказывают системе кэширования Styx-запросов и ответов на стороне клиента (исходные коды которой можно получить здесь).
A New Boot Process for Plan 9. Iruatã Souza о новом способе загрузки Plan 9.
Btfs — a Bittorrent Client. Mathieu Lonjaret о btfs, Bittorrent-клиенте для Plan 9, реализованном в виде файлового
сервера.
Ircfs and Wm/irc. Mechiel Lukkien, известный читателям блога под ником mjl, рассказывает о своем файловом сервере для работы с IRC-сетями и графическом интерфейсе для него.
Two Enhancements for Native Inferno. Brian L. Stuart рассказывает о том, как он портировал USB2.0-драйвера из Plan 9 в Inferno и о новом VGA-драйвере для Inferno.
Inferno for the Sheevaplug. Mechiel Lukkien о процессе портирования Inferno на Sheevaplug.
Torrent. Mechiel Lukkien о BitTorrent-клиенте для Inferno, реализованном в виде файлового сервера и GUI-фронтенда.
Ssh 2 Client. Mechiel Lukkien о ssh-клиенте для Inferno.
Другие документы конференции вы можете скачать пройдя по ссылке в начале поста.
пятница, 24 июля 2009 г.
События за месяц
Ровно месяц прошел с момента публикации последнего поста. И это ужасно. Извиняюсь перед всеми подписчиками, и впредь постараюсь избегать подобных ситуаций. А теперь ближе к топику.
За месяц в Inferno-комьюнити не произошло каких-то особенных изменений. Лето - время затишья, поэтому дайджест новостей получился скромный:
Офциальные репозитории исходных текстов inferno-os и acme-sac переехали на систему контроля версий Mercurial, поэтому все, кто подписан на RSS-фид с изменениями в репозитории, должны изменить адрес подписки в ридере.
Порт Inferno на SoC Kirkwood (созданный mjl и salva) созрел до полноценного проекта и был перенесен на хостинг googlecode. На данный момент ОС корректно загружается и позволяет запускать dis-программы, работает последовательный порт и ethernet-адаптер. Драйвера для поддержки SD-карт реализованы не полностью.
Изменения в Inferno-os:
* Несколько багфиксов от mjl;
* Расширена поддержка процессорной архитектуры ARM;
* Добавлена утилита sig, производящая поиск сигнатуры функции во второй секции man-страниц;
* Исправлен баг №186;
* Удалены утилиты mathcalc и xmount.
P.S. На закуску: Andy Elvey создал собственную версию операционной системы Plan 9, которую назвал Plan 42. В качестве языков программирования он выбрал Python и C++, на которых уже реализовал библиотеку для работы с протоколом 9P, клон систем plumber и fossil. Статус: пре-альфа.
За месяц в Inferno-комьюнити не произошло каких-то особенных изменений. Лето - время затишья, поэтому дайджест новостей получился скромный:
Офциальные репозитории исходных текстов inferno-os и acme-sac переехали на систему контроля версий Mercurial, поэтому все, кто подписан на RSS-фид с изменениями в репозитории, должны изменить адрес подписки в ридере.
Порт Inferno на SoC Kirkwood (созданный mjl и salva) созрел до полноценного проекта и был перенесен на хостинг googlecode. На данный момент ОС корректно загружается и позволяет запускать dis-программы, работает последовательный порт и ethernet-адаптер. Драйвера для поддержки SD-карт реализованы не полностью.
Изменения в Inferno-os:
* Несколько багфиксов от mjl;
* Расширена поддержка процессорной архитектуры ARM;
* Добавлена утилита sig, производящая поиск сигнатуры функции во второй секции man-страниц;
* Исправлен баг №186;
* Удалены утилиты mathcalc и xmount.
P.S. На закуску: Andy Elvey создал собственную версию операционной системы Plan 9, которую назвал Plan 42. В качестве языков программирования он выбрал Python и C++, на которых уже реализовал библиотеку для работы с протоколом 9P, клон систем plumber и fossil. Статус: пре-альфа.
пятница, 19 июня 2009 г.
Софт. DHCP-сервер
Mechaiel Lukkien добавил в свой репозиторий начальную реализацию DHCP-сервера и обновил систему аутентификации Plan 9 (кроме UNIX-версии теперь доступна реализация на языке Limbo). Теперь Inferno можно использовать в качестве сервера для тонких клиентов, построенных на UNIX (связка ip/dhcpd + ip/tftpd + nfssrv) и Plan9 (связка ip/dhcpd + ip/tftpd + auth/authsrv9 + протокол styx/9P).
среда, 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.
1. Отправить 9load в /dev/null. В рамках проекта планируется перенести функциональность загрузчика 9load в ядро ОС.
2. Портировать интерпретатор Scheme.
3. Реализовать поддержку пространства имен в Glendix (Plan9 на ядре Linux).
4. Создать более производительную версию почтовой системы upas.
5. Портировать vx32 на платформу Windows.
6. Реализовать полноценный брэндмауэр.
7. Релизовать GitFS, файловый сервер для прозрачной работы с репозиториями git.
пятница, 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 был почти закончен, когда Линус Торвальдс только начал писать свою операционную систему.
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 - это своего рода произведение искусства, каждая деталь которого хорошо продумана и находится на своем месте.

Впервые ОС увидела свет в 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 - это своего рода произведение искусства, каждая деталь которого хорошо продумана и находится на своем месте.
понедельник, 30 марта 2009 г.
У "Plan 9 from Outer Space" будет продолжение
В этом году выйдет продолжение одного из худших фильмов, снятых за всю историю существования кинематографии. Поклонники Plan9 ждут конца света... :)
P.S. Plan9, предок Inferno, получил свое название именно благодаря этому фильму.
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).
Подписаться на:
Сообщения (Atom)