9P (protocolo) - 9P (protocol)

9P (ou o protocolo de sistema de arquivos Plan 9 ou Styx ) é um protocolo de rede desenvolvido para o sistema operacional distribuído Plan 9 da Bell Labs como o meio de conectar os componentes de um sistema Plan 9. Os arquivos são objetos-chave no Plano 9. Eles representam janelas , conexões de rede , processos e quase tudo mais disponível no sistema operacional.

9P foi revisado para a 4ª edição do Plano 9 sob o nome 9P2000 , contendo várias melhorias. Algumas das melhorias feitas são, a remoção de certas restrições de nome de arquivo, a adição de um campo de metadados 'último modificador' para diretórios e arquivos de autenticação. A versão mais recente do sistema operacional Inferno também usa 9P2000. O protocolo de arquivo Inferno foi originalmente chamado de Styx, mas tecnicamente sempre foi uma variante do 9P.

Uma implementação de servidor de 9P para Unix, chamada u9fs , está incluída na distribuição do Plan 9. Uma extensão de kernel do cliente OS X 9P é fornecida pelo Mac9P. Um driver cliente de kernel implementando 9p com algumas extensões para Linux faz parte do projeto v9fs . 9P e seus derivados também encontraram aplicação em ambientes embarcados, como o projeto Styx on a Brick.

Aplicativos de servidor

Muitos dos aplicativos do Plan 9 assumem a forma de servidores de arquivos 9P. Exemplos incluem:

  • acme : um editor de texto / ambiente de desenvolvimento
  • rio : o sistema de janelas do Plan 9
  • encanador : comunicação entre processos
  • ftpfs: um cliente FTP que apresenta os arquivos e diretórios em um servidor FTP remoto no namespace local
  • wikifs: uma ferramenta de edição de wiki que apresenta um wiki remoto como arquivos no namespace local
  • webfs: um servidor de arquivos que recupera dados de URLs e apresenta o conteúdo e os detalhes das respostas como arquivos no namespace local

Fora do Plano 9, o protocolo 9P ainda é usado quando um sistema de arquivos remoto leve é ​​necessário:

  • NixOS : uma distribuição Linux puramente funcional e declarativa pode se reconstruir dentro de uma máquina virtual , onde o cliente usa 9P para montar o diretório de armazenamento de pacotes do host.
  • Subsistema Windows para Linux : desde o Windows 10 versão 1903, o subsistema implementa 9P como um servidor e o sistema operacional host Windows atua como um cliente.
  • Crostini : um servidor 9P personalizado é usado para fornecer acesso a arquivos fora de uma VM Linux
  • QEMU : o dispositivo VirtFS permite o compartilhamento do sistema de arquivos em 9P, que é acelerado com drivers de kernel e memória compartilhada
  • DIOD : Distributed I / O Daemon - um servidor de arquivos 9P

Implementação

9P envia as seguintes mensagens entre clientes e servidores. Essas mensagens correspondem aos pontos de entrada na camada vfs do Plano 9 que qualquer servidor 9P deve implementar.

versão
Negociar a versão do protocolo
erro
Retorne um erro
rubor
Abortar uma mensagem
auth, attach
Estabeleça uma conexão
andar
Desça uma hierarquia de diretório
criar, abrir
Prepare um fid para I / O em um arquivo existente ou novo
ler escrever
Transferir dados de e para um arquivo
clunk
Esqueça um fid
retirar
Remover um arquivo de um servidor
stat, wstat
Pergunte ou altere os atributos do arquivo

Veja também

Referências

links externos