9P (9P)

Перейти к навигации Перейти к поиску

9P (или протокол файловой системы Plan 9 или Styx) — сетевой протокол, разработанный для распределённой операционной системы Plan 9 для организации соединения компонентов операционной системы Plan 9. Ключевыми объектами системы Plan 9 являются файлы — ими представлены окна, сетевые соединения, процессы, и почти всё, что доступно в операционной системе Plan 9. В отличие от NFS, 9P поддерживает кэширование и обслуживание синтетических файлов (например /proc для представления процессов).

Исправленная версия 9P для 4 редакции Plan 9, которая была значительно улучшена, получила имя 9P2000. В последней версии операционной системы Inferno также используется 9P2000, который носит название Styx, но технически он всегда являлся вариантом реализации 9P.

Другая версия 9P, 9p2000.u, была переработана для лучшей поддержки окружения Unix[1]. Серверная реализация 9P для Unix, u9fs, включена в дистрибутив Plan 9. Драйвер клиента для Linux является частью проекта v9fs. Протокол 9P и его производные реализации находят применение во встраиваемых системах, как, к примеру, Styx в проекте Brick[2].

Серверные приложения

[править | править код]

Многие из приложений операционной системы Plan 9 могут выступать в качестве серверов 9P. Например:

  • Acme — многооконный текстовый редактор и оболочка операционной системы;
  • Rio — оконная система Plan 9;
  • Plumber — механизм взаимодействия процессов;
  • wikifs: файловая система Plan 9, представляющая вики-страницы в 2 формах: в виде веб-страниц, и в виде текстовых файлов, обрабатываемых Acme.

Реализация

[править | править код]

Протокол 9p посылает следующие сообщения между клиентами и серверами[3]. Эти сообщения соотносятся с точками входа в виртуальную файловую систему Plan 9, реализация которой предоставляется любым сервером 9p.

Сообщение Действие Man-страница на официальном сайте Plan 9
version Согласование версий протокола Negotiate protocol version
error Возвращение ошибки Return an error
flush Прерывание сообщения Abort a message
auth, attach Сообщения для установки соединения Messages to establish a connection
walk смена каталога, передвижение дереву каталогов Descend a directory hierarchy
create, open Подготовка обработчика (fid) для операций ввода-вывода над существующим или новым файлом Prepare a fid for I/O on an existing or new file
read, write Передача данных из файла или в файл Transfer data from and to a file
clunk Закрытие обработчика (fid), такой обработчик становится недействительным Forget about a fid
remove Удаление файла с сервера Remove a file from a server
stat, wstat Запрос атрибутов файла или их изменение Inquire or change file attributes

Примечания

[править | править код]
  1. v9fs 9p2000.u. Дата обращения: 27 ноября 2009. Архивировано 2 марта 2010 года.
  2. Styx on a Brick projectАрхивировано 24 ноября 2009 года. Архивная копия от 24 ноября 2009 на Wayback Machine
  3. 9p protocol. Дата обращения: 27 ноября 2009. Архивировано из оригинала 5 февраля 2015 года.