O FUSE usa uma API do sistema de arquivos porque todo o propósito do FUSE é fornecer uma API do sistema de arquivos ao processo.
Digamos que você tenha algum programa que acesse arquivos. Vai usar uma API do sistema de arquivos porque é assim que os programas acessam os arquivos. Agora, digamos que você quer que o programa funcione com o FUSE. O FUSE tem que fornecer uma API do sistema de arquivos para esse processo, porque é isso que o programa está usando e não queremos ter que modificar cada programa em um sistema apenas para fazer o FUSE funcionar. Você não precisa reescrever programas para nenhum outro sistema de arquivos.
Imagine quão horrível seria um sistema de arquivos se ele usasse suas próprias APIs e você tivesse que modificar cada programa em seu sistema se quisesse que ele usasse arquivos naquele sistema de arquivos. Yuck.
If My analysis is right, why fuse ues file? why don't use other ipc? File looks like slower than other ipc mechanisms...
Por que isso seria o caso? Lembre-se, não estamos falando de arquivos em um disco. Estamos falando sobre o conceito de um arquivo como um mecanismo de IPC. Ou seja, o processo A informa ao processo B que deseja abrir um arquivo usando uma chamada open
ou que deseja gravar em um arquivo usando uma chamada write
. Por que isso seria mais lento do que usar qualquer outra chamada? A implementação dessas funções pode ser o que quisermos.