ФЭНДОМ


Оригинал: http://www.vorlesungen.uos.de/informatik/inferno/pdf/04.pdf
Автор: Axel T. Schreiner

Ресурсы представлены как файлы, поэтому существует стандатный набор действий, который должен реализовать файловый сервер. Для устройств, то есть серверов, работающих внутри ядра Inferno, это будут функции.

Пользовательские серверы также представляеют свои ресурсы в виде файлов; однако, в этом случае действия реализованы как вызовы удаленных процедур, использующие протокол Styx.

Сообщения Styx передаются через двунаправленную устойчивую линию связи. Клиент передает T-сообщение, сервер отвечает R-сообщением того же типа или Rerror. Оба сообщения вместе образуют транзакцию. Styx сохраняет состояние на обоих концах линии связи.

Каждое сообщение содержит уникальный тег (tag), заданный клиентом для T-сообщения в рамках незавершенной транзакции, который позволяет связать T- и R-сообщения. Styx не всегда бывает синхронным, поэтому необходимы теги.

Сервер идентифицирует каждый из своих объектов с помощью постоянно уникального qid, состоящего из пути и версии. Клиент придумывает fid, который используется для доступа; после clunk, fid можно вновь предоставить для другого объекта

Tnop 0xffff
Rnop 0xffff

Клиент узнает, может ли он общаться с сервером.

Tflush tag oldtag
Rflush tag

Клиент уведомляет сервер о том что ответ на запрос с oldtag уже ему не нужен. Затем клиент игнорирует oldtag и принимает Rflush с новым тегом.

Rerror tag text

Сервер сообщает клиенту, что не может ответить на сообщение с заданным тегом.

Tattach tag fid uid aname
Rattach tag fid qid

Клиент желает получить доступ как uid к aname используя fid. Сервер соглашается; qid - это объект сервера, к которому получили доступ через fid.

Tclone tag fid newfid
Rclone tag fid

Клиент желает, чтобы newfid был равен fid.

Tclunk tag fid
Rclunk tag fid

Клиент желает сделать недействительным fid. Впоследствии он может быть перепредоставлен с помощью Tclone или Tattach.


Twalk tag fid name
Rwalk tag fid qid

Клиент ищет fid в каталоге name. В случае успеха fid будет ссылаться на name, объектом сервера для fid будет qid.

Topen tag fid mode
Ropen tag fid qid

Клиент желает получить доступ к fid в укзанном режиме mode. Сервер соглашается.

Tcreate tag fid name perm mode
Rcreate tag fid qid

Клиент желает создать новый объект в каталоге fid с именем name и правами доступа perm. В случае успеха qid будет укзывать на имя и созданный объект.

Tread tag fid offset count
Rread tag fid count pad data

Клиент желает получить из fid, начиная со смещения offset, максимум count байт. Может быть запрошено до 8 Кб, венуться может меньше. Для катлогов вхождения с 116 байтами возвращаются отфрматированными так же как при Rstat.

Tremove tag fid
Rremove tag

Клиент желает, чтобы объект, адресуемый fid, был уничтожен. Сервер получив такой запрос пытаеться удалить файл и освобождает указанный fid (т.е. делает ему clunk) даже если файл не удалось удалить.

Twrite tag fid offset count pad data
Rwrite tag fid count

Клиент желает записать в файл fid начиная со смещения offset count байт. Результатом должно быть то же число.

Tstat tag fid
Rstat tag fid name uid gid qid mode atime mtime length type dev

Клиент получает информацию о fid. Начиная с name это 116 байт.

Twstat tag fid name uid gid qid mode atime mtime length type dev
Rwstat tag fid

Клиент изменяет какую-либо информацию о fid, главным образом name и части mode, но определенно не uid и обычно не gid.

Ядро отображает системные вызовы вроде chdir() в последовательность вызовов функций к драйверам устройств в ядре. #M - одно из таких устройств, которое конвертирует вызовы функций в вызовы удаленных функций (с использованием Styx) локальных или удаленных процессов (серверов).

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики