9P (o el Protocolo de sistema de archivos Plan 9 o Styx ) es un protocolo de red desarrollado para el sistema operativo distribuido Plan 9 de Bell Labs como medio para conectar los componentes de un sistema Plan 9. Los archivos son objetos clave en el Plan 9. Representan ventanas , conexiones de red , procesos y casi cualquier otra cosa disponible en el sistema operativo.
9P fue revisado para la cuarta edición del Plan 9 bajo el nombre 9P2000 , que contiene varias mejoras. Algunas de las mejoras realizadas son la eliminación de ciertas restricciones de nombre de archivo, la adición de un campo de metadatos de 'último modificador' para directorios y archivos de autenticación. [1] La última versión del sistema operativo Inferno también usa 9P2000. El protocolo de archivo Inferno se llamaba originalmente Styx, pero técnicamente siempre ha sido una variante de 9P.
Una implementación de servidor de 9P para Unix, llamada u9fs , [2] [3] se incluye en la distribución de Plan 9. Mac9P proporciona una extensión del kernel de cliente 9P OS X. [4] Un controlador de cliente del kernel que implementa 9p con algunas extensiones para Linux es parte del proyecto v9fs . 9P y sus derivados también han encontrado aplicación en entornos integrados, como el proyecto Styx on a Brick. [5]
Aplicaciones de servidor
Muchas de las aplicaciones de Plan 9 toman la forma de servidores de archivos 9P. Ejemplos incluyen:
- acme : un editor de texto / entorno de desarrollo
- rio : el sistema de ventanas Plan 9
- fontanero : comunicación entre procesos
- ftpfs: un cliente FTP que presenta los archivos y directorios en un servidor FTP remoto en el espacio de nombres local
- wikifs: una herramienta de edición de wiki que presenta una wiki remota como archivos en el espacio de nombres local.
- webfs: un servidor de archivos que recupera datos de URL y presenta el contenido y los detalles de las respuestas como archivos en el espacio de nombres local.
Fuera del Plan 9, el protocolo 9P todavía se usa cuando se requiere un sistema de archivos remoto liviano:
- NixOS : una distribución de Linux puramente funcional y declarativa puede reconstruirse dentro de una máquina virtual , donde el cliente usa 9P para montar el directorio de almacenamiento de paquetes del host.
- Subsistema de Windows para Linux : desde Windows 10 versión 1903, el subsistema implementa 9P como servidor y el sistema operativo host de Windows actúa como cliente. [6]
- Crostini : se utiliza un servidor 9P personalizado para proporcionar acceso a archivos fuera de una máquina virtual Linux [7]
- QEMU : el dispositivo VirtFS permite compartir el sistema de archivos a través de 9P, que se acelera con los controladores del kernel y la memoria compartida [8] [9]
- DIOD : Daemon de E / S distribuidas: un servidor de archivos 9P
Implementación
9P envía los siguientes mensajes entre clientes y servidores. [10] Estos mensajes corresponden a los puntos de entrada en la capa vfs del Plan 9 que cualquier servidor 9P debe implementar.
- versión
- Negociar la versión del protocolo [11]
- error
- Devuelve un error [12]
- enjuagar
- Cancelar un mensaje [13]
- auth, adjuntar
- Establecer una conexión [14]
- caminar
- Descender una jerarquía de directorios [15]
- crear, abrir
- Prepare un fid para E / S en un archivo nuevo o existente [16]
- leer escribir
- Transferir datos desde y hacia un archivo [17]
- chasquido
- Olvídate de un fid [18]
- retirar
- Eliminar un archivo de un servidor [19]
- stat, wstat
- Consultar o cambiar los atributos del archivo [20]
Ver también
- IL (protocolo de red) , protocolo de transporte diseñado para 9P en redes de área local
- Sistema de archivos distribuido
Referencias
- ^ "Plan 9 de Bell Labs - Descripción general" . 9p.io .
- ^ "investigación: u9fs.tgz es el código fuente tarbal" . www.netlib.org .
- ^ "Plan 9 / sys / man / 4 / u9fs" . 9p.io .
- ^ benavento (19 de abril de 2019). "9P para Mac" : a través de GitHub.
- ^ "Styx-on-a-Brick" . Cat-V Doc .
- ^ "¿Qué hay de nuevo para WSL en Windows 10 versión 1903?" . Herramientas de línea de comandos de Windows para desarrolladores . 16 de febrero de 2019.
- ^ "Ejecución de contenedores personalizados en Chrome OS" . Documentos de Chromium OS . Consultado el 28 de marzo de 2019 .
- ^ Jujjuri, Venkateswararao; Van Hensbergen, Eric; Liguori, Anthony; Pulavarty, Badari (13 al 16 de julio de 2010). "VirtFS: un sistema de transferencia de archivos compatible con la virtualización" (PDF) . Simposio de Linux .
- ^ "Documentación / 9psetup" . Documentos de QEMU . Consultado el 28 de marzo de 2019 .
- ^ "Sección 5: Protocolo 9P" . Plan 9 manualg .
- ^ "página de versión de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "página de error de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "página de descarga de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "adjunte la página de la Sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "página de caminata de la Sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "página abierta de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "lea la página de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "Clunk página de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "quitar la página de la sección 5 del manual del plan 9" . Plan 9 manualg .
- ^ "página de estadísticas de la sección 5 del manual del plan 9" . Plan 9 manualg .
enlaces externos
- Página de recursos de 9P en cat-v.org
- 9P Manual
- La arquitectura Styx para sistemas distribuidos por Rob Pike y Dennis Ritchie
- La organización de redes en el plan 9 por Dave Presotto y Phil Winterbottom
- Seguridad en el Plan 9