2

Я изучаю 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(). поэтому я проанализировал эти функции. Я хочу, чтобы эти функции работали. Благодарю.

1 ответ1

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .