Como se comunica entre o processo do daemon do sistema de arquivos FUSE e o processo de aplicação do usuário no linux?

2

Estou estudando o Linux FUSE.

Agora eu entendo a arquitetura global do FUSE e o que é o libfuse, / dev / fuse device file. Mas não consigo encontrar informações detalhadas sobre a comunicação de processo entre o processo de aplicação e o processo daemon do sistema de arquivos FUSE. Então, eu analiso o código do fusível.

Parece que o fusível usa uma fila de espera e um arquivo para se comunicar entre dois processos. A fila de espera é usada para enviar um sinal. um arquivo é usado para o conteúdo da solicitação de envio / recebimento. Isso está certo?

Se minha análise estiver correta, por que o fusível usa um arquivo? Por que não usar algum outro IPC? O arquivo parece mais lento que outros mecanismos de IPC ...

Minha pergunta não é IPC no nível do usuário. Seção de interface Kernel - userspace no link , há um aplicativo de exemplo rm e um daemon do sistema de arquivos Fuse. Dois processos se comunicam usando a função request_send (), request_receive (). então eu analisei essas funções. Eu quero essas funções como funciona. obrigado.

    
por Supsupi 23.08.2017 / 12:08

1 resposta

2

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.

    
por 23.08.2017 / 12:26