Что такое протокол файловой системы и как он работает? - PullRequest
4 голосов
/ 13 января 2011

В качестве примера я возьму протокол файловой системы Plan9 под названием 9P (a.k.a Styx). Как говорится в статье в Википедии:

9P - это сетевой протокол, разработанный (...) как средство соединения компонентов. системы Plan 9

Я хочу знать, с точки зрения программирования, какие технологии следует использовать для создания такой системы модульной связи. И каковы требования к операционной системе (прочитайте производные Unix) для поддержки этого протокола.

В моем понимании каждый компонент ( id , приложение, модуль) всей сети должен иметь частный контроллер (или этот контроллер должен быть общим для всей системы?), Чтобы отправлять запросы и получать ответы, с возможностью выполнять задачи перевода между внутренней логикой отдельного приложения и самим протоколом связи (может быть конкретный язык, такой как XML ?, база данных, или даже какое-то отражение информации в файловой системе?). С этой (моей) точки зрения описанная система может быть определена как вариант клиент-серверной архитектуры, но была спроектирована для локальной или ограниченной сети и с акцентом на прямой доступ к данным и эффективность. Вот как я вижу дизайн протокола файловой системы ...

Я только что начал изучение методов взаимодействия процессов и приложений операционных систем и хотел бы разработать мини-протокол файловой системы, чтобы увидеть эти концепции в действии. У меня нет никакого реального и конкретного плана работы из-за утечки теоретических основ, поэтому любые объяснения, литературные предложения, примеры и просто комментарии будут приветствоваться!

1 Ответ

2 голосов
/ 07 мая 2011

Вы можете прочитать все о сети Plan9 в разделе /sys/doc (или онлайн html , ps , pdf ).

Способ работы на высоком уровне похож на ваше понимание: система имеет 17 протокольных сообщений (например, open, create, walk и remove).Существует механизм RPC , который обеспечивает отправку и получение сообщений с сервера.Вот цитата из статьи:

Структура данных ядра, channel , является дескриптором файлового сервера.Операции на канале генерируют следующие сообщения 9P.Сообщения session и attach проверяют подлинность соединения, установленного с помощью внешних средств 9P, и проверяют его пользователя.Результатом является аутентифицированный канал, ссылающийся на корень сервера.Сообщение clone делает новый канал идентичным существующему каналу, очень похоже на системный вызов dup.Канал может быть перемещен в файл на сервере с помощью сообщения walk для спуска каждого уровня в иерархии.Сообщения stat и wstat читают и записывают атрибуты файла, на который ссылается канал.Сообщение open подготавливает канал для последующих сообщений read и write для доступа к содержимому файла.Create и remove выполняют действия, подразумеваемые их именами в файле, на который ссылается канал.Сообщение clunk отбрасывает канал, не затрагивая файл.

Что отличает Plan9, так это то, что этот интерфейс распространен в операционной системе.Этот интерфейс (файловый сервер) представлен многими вещами.

...