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