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 |
См. также
- v9fs — u9fs: реализация 9P для Unix-подобных операционных систем;
- IL Protocol — протокол транспортного уровня для локальных сетей, разработанный для 9P;
- Распределённые вычисления
Примечания
- ↑ v9fs 9p2000.u. Дата обращения: 27 ноября 2009. Архивировано 2 марта 2010 года.
- ↑ Styx on a Brick projectАрхивировано 24 ноября 2009 года. Архивная копия от 24 ноября 2009 на Wayback Machine
- ↑ 9p protocol. Дата обращения: 27 ноября 2009. Архивировано из оригинала 5 февраля 2015 года.
Ссылки
- Страница о 9P на Considered harmful
- Руководство по 9P на сайте Bell Labs
- Описание архитектуры Styx для распределённых систем, написанное (Робом Пайком и Денисом Ритчи)
- Организация работы сетей в Plan 9 (авторы — Дэйв Пресотто и Фил Винтерботтом)
- Небольшое введение в протокол Styx с описанием реализации на D
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.