Как связаться между процессом демона файловой системы FUSE и процессом приложения пользователя в linux?

439
Supsupi

Я изучаю Linux FUSE.

Теперь я понимаю общую архитектуру FUSE и что такое libfuse, / dev / fuse файл устройства. Но я не могу найти подробную информацию о процессе взаимодействия между процессом приложения и процессом демона файловой системы FUSE. Так что я анализ кода предохранителя.

Похоже, что fuse использует очередь ожидания и файл для связи между двумя процессами. Очередь ожидания используется для отправки сигнала. файл используется для отправки / получения запроса. Это правильно??

Если мой анализ верен, почему fuse использует файл? Почему бы не использовать какой-нибудь другой IPC? Файл выглядит медленнее, чем другие механизмы IPC ...

Мой вопрос не IPC на уровне пользователя. Ядро - раздел интерфейса пользовательского пространства в https://www.kernel.org/doc/Documentation/filesystems/fuse.txt, есть пример приложения rm и демон файловой системы Fuse. Два процесса общаются с помощью функции request_send (), request_receive (). поэтому я проанализировал эти функции. Я хочу, чтобы эти функции работали. Благодарю.

2
Зачем использовать файл? Файловые дескрипторы используются для многих целей, включая каналы, сетевые сокеты и еще много чего. Daniel B 6 лет назад 0

1 ответ на вопрос

2
David Schwartz

FUSE использует API файловой системы, потому что вся цель FUSE состоит в том, чтобы предоставить API файловой системы процессу.

Скажем, у вас есть программа, которая обращается к файлам. Он собирается использовать API файловой системы, потому что именно так программы обращаются к файлам. Теперь, скажем, вы хотите, чтобы программа работала с FUSE. FUSE должен предоставить API файловой системы этому процессу, потому что это то, что использует эта программа, и мы не хотим изменять каждую программу в системе только для того, чтобы заставить FUSE работать. Вам не нужно переписывать программы для любой другой файловой системы.

Представьте, насколько ужасной была бы файловая система, если бы она использовала свои собственные API, и вам нужно изменить каждую программу в вашей системе, если вы хотите, чтобы она могла использовать файлы в этой файловой системе. Тьфу.

Если мой анализ верен, зачем использовать файл? почему не использовать другой ipc? Файл выглядит медленнее, чем другие механизмы ipc ...

Почему это так? Помните, мы не говорим о файлах на диске. Мы говорим о концепции файла как механизма IPC. То есть процесс A сообщает процессу B, что он хочет открыть файл с помощью openвызова или что он хочет записать в файл с помощью writeвызова. Почему это будет медленнее, чем любой другой вызов? Реализация этих функций может быть любой, что мы хотим.

Спасибо за ответ. Я знаю, что fuse обеспечивает API файловой системы, такой как open, read, write ... но мой вопрос не IPC уровня приложения. Supsupi 6 лет назад 0
Ядро - раздел интерфейса пользовательского пространства в https://www.kernel.org/doc/Documentation/filesystems/fuse.txt, есть пример приложения rm и демон файловой системы Fuse. Два процесса общаются с помощью функции request_send (), request_receive (). поэтому я анализирую эти функции. Supsupi 6 лет назад 0
Я проанализировал модуль предохранителей. и узнайте, как общаться два процесса. Модуль Fuse создает кольцевой буфер в пространстве памяти ядра и использует его для связи. Supsupi 6 лет назад 0

Похожие вопросы