ФЭНДОМ


НАЗВАНИЕ

mnt - устройство монтирования, обеспечивает доступ к Styx-серверам

ВЫЗОВ

#M

ОПИСАНИЕ

Драйвер устройства монтирования используется функцией системного модуля Sys->mount (но не Sys->bind; см. sys-bind(2)), чтобы связать пространство имен какого-либо процесса с сервисом Styx-сервера посредством коммуникационного канала. После монтирования, операции с файлами в данном разделе пространства имен будут автоматически конвертироваться драйвером в корректные сигналы серверу, в ответ на которые Styx (протокол сервера) вернет результаты вызова системных функций (успех или ошика).

Естесственно, монтирование осуществляется после авторизации на сервере, так как само устройство этим не занимается; см. security-intro(2) про авторизацию и механизмы безопасности, реализованные в `ready made' формате в Inferno (впрочем, допустима любая другая схема общения между клиентом и сервером). По сути, вызов системной функции mount формирует запрос серверу в виде attach(5)-сигнала с целью идентификации пользователя для текущего `соединения`. Соединения пользователей монтируются по отдельности; таким образом, драйвер монтирования осуществляет мультиплексирование доступа различных пользователей и их приложений к серверу.

Файл-ориентированные вызовы системных функций конвертируются ядром в сигналы протокола Styx. В самом ядре, Styx представлен в виде обращений к драйверам различных устройств ядра, как описано в intro(10) и dev(10.2). Драйвер устройства монтирования трансформирует такие обращения в удаленные вызовы системных функций, которые отсылает протоколу в виде запросов посредством канала, отвечающего данному `соединению`. Каждый такой запрос записывается в канал сервера, откуда считывается протоколом, и в ответ формируется сигнал, содержащий результаты вызова системных функций.

В результате вызова системных функций sys-read(2) или Sys->write может быть сформировано более одного сигнала, если достигнуто ограничение на максимальный размер файла для данного типа сообщений протокола Styx. Системная функция в этом случае возвращает либо указанное количество байт, которые необходимо передать, либо формирует укороченный сигнал.

Строка вида `#M` не является корректным именем файла, поэтому в таком виде устройство может быть вызвано только ядром.

Смотри также

bind(1), sys-bind(2)

ИСХОДНЫЙ КОД

/emu/port/devmnt.c

/os/port/devmnt.c

ОШИБКИ

В процессе монтирования слишком длинный сигнал может быть разбит на две части.