stringtranslate.com

GNU Hurd

GNU Hurd es una colección de servidores de microkernel escritos como parte de GNU , para el microkernel GNU Mach . Ha estado en desarrollo desde 1990 por el Proyecto GNU de la Free Software Foundation , diseñado como un reemplazo para el kernel Unix , [4] y publicado como software libre bajo la Licencia Pública General GNU . Cuando el kernel Linux demostró ser una solución viable, el desarrollo de GNU Hurd se ralentizó, a veces alternando entre estancamiento y actividad e interés renovados. [5]

El diseño de Hurd consiste en un conjunto de protocolos y procesos de servidor (o daemons , en la terminología de Unix) que se ejecutan en el microkernel Mach de GNU. [4] Hurd tiene como objetivo superar al kernel de Unix en funcionalidad, seguridad y estabilidad, al tiempo que sigue siendo en gran medida compatible con él. El Proyecto GNU eligió el microkernel multiservidor [6] para el sistema operativo, debido a las ventajas percibidas sobre la arquitectura de kernel monolítica tradicional de Unix , [7] una visión que había sido defendida por algunos desarrolladores en la década de 1980. [5]

Nombre y logotipo

En diciembre de 1991, el arquitecto principal del Hurd describió el nombre como un acrónimo recursivo entre sí : [8]

Es hora de explicar el significado de "Hurd". "Hurd" significa "Hird of Unix-Replacing Daemons" (Hird de demonios que reemplazan a Unix). Y, a su vez, "Hird" significa "Hurd of Interfaces Representing Depth" (Hurd de interfaces que representan profundidad). Tenemos aquí, que yo sepa, el primer software que se nombra con un par de acrónimos recursivos entre sí.

Como tanto hurd como hird son homófonos de la palabra inglesa herd , el nombre completo GNU Hurd también es un juego de palabras con las palabras herd o gnus , lo que refleja cómo funciona el núcleo. [9]

El logotipo se llama Hurd boxes y también refleja la arquitectura. El logotipo es un gráfico donde los nodos representan los servidores del núcleo Hurd y los bordes dirigidos son los mensajes IPC . [8]

Historial de desarrollo

Richard Stallman fundó el Proyecto GNU en septiembre de 1983 con el objetivo de crear un sistema operativo GNU libre . [10] Inicialmente se escribieron los componentes necesarios para el desarrollo del núcleo: editores , shell , compilador , depurador , etc. En 1989, se creó la GPL y el único componente importante que faltaba era el núcleo. [11] [12]

El desarrollo del Hurd comenzó en 1990 después de un intento de núcleo abandonado en 1986, basado en el sistema operativo de investigación TRIX desarrollado por el profesor Steve Ward y su grupo en el Laboratorio de Ciencias de la Computación (LCS) del MIT . [13] Según Thomas Bushnell , el arquitecto inicial de Hurd, su plan inicial era adaptar el núcleo 4.4BSD -Lite y, en retrospectiva, "ahora me resulta perfectamente obvio que esto habría tenido un éxito espléndido y el mundo sería un lugar muy diferente hoy". [14] En 1987, Richard Stallman propuso utilizar el micronúcleo Mach desarrollado por Richard Rashid en la Universidad Carnegie Mellon . El trabajo en esto se retrasó durante tres años debido a la incertidumbre sobre si CMU publicaría el código Mach bajo una licencia adecuada. [13]

Con el lanzamiento del núcleo Linux en 1991, los principales usuarios de los componentes del espacio de usuario de GNU pronto fueron los sistemas operativos basados ​​en el núcleo Linux ( distribuciones Linux ), lo que motivó la acuñación del término GNU/Linux .

El desarrollo de Hurd ha sido lento. A pesar de un anuncio optimista de Stallman en 2002 en el que predecía un lanzamiento de GNU/Hurd más tarde ese año, [15] Hurd todavía no se considera adecuado para entornos de producción. El desarrollo en general no ha cumplido las expectativas, y todavía hay una cantidad significativa de errores y características faltantes. [16] Esto ha dado como resultado un producto más pobre de lo que muchos, incluido Stallman, esperaban. [17] En 2010, después de veinte años en desarrollo, Stallman dijo que "no era muy optimista sobre GNU Hurd. Hace algunos progresos, pero para ser realmente superior requeriría resolver muchos problemas profundos", pero agregó que "terminarlo no es crucial" para el sistema GNU porque ya existía un núcleo libre ( Linux ), y completar Hurd no abordaría el principal problema restante para un sistema operativo libre: el soporte de dispositivos. [18]

El proyecto Debian , entre otros, ha trabajado en el proyecto Hurd para producir distribuciones binarias de sistemas operativos GNU basados ​​en Hurd para sistemas compatibles con IBM PC .

Después de años de estancamiento, el desarrollo se reanudó en 2015 y 2016, con cuatro lanzamientos durante esos dos años, [19] pero ninguno más desde entonces.

El 20 de agosto de 2015, en medio del Google Summer of Code , se anunció que GNU Guix había sido portado a GNU Hurd. [20]

Arquitectura

Estructura general de los sistemas operativos basados ​​en núcleo monolítico, micronúcleo e híbrido, respectivamente.

A diferencia de la mayoría de los núcleos tipo Unix , Hurd utiliza una arquitectura cliente-servidor , construida sobre un microkernel que es responsable de proporcionar los servicios más básicos del núcleo : coordinar el acceso al hardware : la CPU (a través de la gestión y programación de procesos ), RAM (a través de la gestión de memoria ) y otros dispositivos de entrada/salida (a través de la programación de E/S ) para sonido, gráficos, almacenamiento masivo, etc. En teoría, el diseño del microkernel permitiría que todos los controladores de dispositivos se construyeran como servidores que funcionaran en el espacio del usuario , pero hoy en día la mayoría de los controladores de este tipo todavía están contenidos en el espacio del núcleo GNU Mach . [21]

Según los desarrolladores de Hurd, la principal ventaja del diseño basado en microkernel es la capacidad de extender el sistema: desarrollar un nuevo módulo no requeriría un conocimiento profundo del resto del kernel, y un error en un módulo no bloquearía todo el sistema. Hurd proporciona un concepto de traductores , un marco de módulos que se utiliza para extender la funcionalidad de un sistema de archivos. [22]

Desde el principio, Hurd se desarrolló para utilizar GNU Mach como microkernel. Esta fue una decisión técnica tomada por Richard Stallman , quien pensó que aceleraría el trabajo al ahorrar una gran parte del mismo. Ha admitido que se equivocó al respecto. [23] Otros sistemas similares a Unix que funcionan con el microkernel Mach incluyen OSF/1 , Lites y MkLinux . macOS y NeXTSTEP utilizan núcleos híbridos basados ​​en Mach.

Otros microkernels

A partir de 2004, se lanzaron varios esfuerzos para portar Hurd a microkernels más modernos. El microkernel L4 fue la opción original en 2004, pero el progreso se detuvo. Sin embargo, durante 2005, el desarrollador de Hurd, Neal Walfield, terminó el marco de gestión de memoria inicial para el puerto L4/Hurd, y Marcus Brinkmann portó partes esenciales de glibc ; es decir, hacer que funcione el código de inicio del proceso, lo que permite que se ejecuten los programas, lo que permite que se ejecuten los primeros programas de usuario (los triviales, como el programa hola mundo ) en C.

Desde 2005, Brinkmann y Walfield comenzaron a investigar Coyotos como un nuevo núcleo para HURD. [24] [25] En 2006, Brinkmann se reunió con Jonathan Shapiro (uno de los arquitectos principales del sistema operativo Coyotos) para ayudar y discutir el uso del núcleo Coyotos para GNU/Hurd. En una discusión posterior, los desarrolladores de HURD se dieron cuenta de que Coyotos (así como otros núcleos similares) no son adecuados para HURD. [26]

En 2007, los desarrolladores de Hurd, Neal Walfield y Marcus Brinkmann, realizaron una crítica de la arquitectura de Hurd, conocida como "la crítica", [27] y una propuesta de cómo se podría diseñar un sistema futuro, conocida como "el documento de posición". [28] En 2008, Neal Walfield comenzó a trabajar en el microkernel Viengoos como un kernel nativo moderno para HURD. A partir de 2009 , el desarrollo de Viengoos se detuvo debido a que Walfield no tenía tiempo para trabajar en él. [29]

Mientras tanto, otros han seguido trabajando en la variante Mach de Hurd. [30]

Extensiones de Unix

Una serie de conceptos tradicionales de Unix se reemplazan o amplían en Hurd.

En Unix, cada programa en ejecución tiene un identificador de usuario asociado , que normalmente corresponde al usuario que inició el proceso . Este identificador determina en gran medida las acciones permitidas al programa. Ningún proceso externo puede cambiar el identificador de usuario de un programa en ejecución. Un proceso Hurd, por otro lado, se ejecuta bajo un conjunto de identificadores de usuario, que pueden contener varios identificadores, uno o ninguno. Un proceso con los privilegios suficientes puede agregar y eliminar identificadores a otro proceso. Por ejemplo, hay un servidor de contraseñas que entregará identificadores a cambio de una contraseña de inicio de sesión correcta.

En cuanto al sistema de archivos , un programa adecuado puede ser designado como traductor para un solo archivo o para una jerarquía completa de directorios. Cada acceso al archivo traducido, o a los archivos por debajo de una jerarquía en el segundo caso, es de hecho manejado por el programa. Por ejemplo, un traductor de archivos puede simplemente redirigir las operaciones de lectura y escritura a otro archivo, como un enlace simbólico de Unix . El efecto del montaje de Unix se logra configurando un traductor del sistema de archivos (usando el comando "settrans"). Los traductores también pueden usarse para proporcionar servicios al usuario. Por ejemplo, el traductor ftpfs permite a un usuario encapsular sitios FTP remotos dentro de un directorio. Luego, se pueden usar herramientas estándar como ls , cp y rm para manipular archivos en el sistema remoto. Traductores aún más poderosos son aquellos como UnionFS , que permite a un usuario unificar múltiples directorios en uno; por lo tanto, al enumerar el directorio unificado se revela el contenido de todos los directorios.

Hurd requiere un cargador de arranque compatible con arranque múltiple , como GRUB .

Arquitectura de los servidores

Según la documentación de Debian, hay 24 servidores (18 servidores centrales y 6 servidores de sistema de archivos) denominados de la siguiente manera: [31]

Servidores centrales

Servidores de sistemas de archivos

ext2fs
El traductor del sistema de archivos ext2 . Recibe bloques de disco del microkernel y entrega archivos y directorios a las aplicaciones.
isofs
El traductor del sistema de archivos ISO 9660. Traduce bloques de un CD o DVD en archivos y directorios para las aplicaciones.
números no válidos
Véase Sistema de archivos de red .
archivos ftpf
Traductor de sistemas de archivos de protocolo de transferencia de archivos .
tienda
El traductor de almacenamiento.

Los servidores implementan colectivamente la API POSIX , y cada servidor implementa una parte de la interfaz. Por ejemplo, los distintos servidores de sistemas de archivos implementan las llamadas a los sistemas de archivos. El servidor de almacenamiento funcionará como una capa envolvente, similar a la capa de bloques de Linux. El equivalente del VFS de Linux se logra con las bibliotecas libdiskfs y libpager.

Distribuciones GNU que ejecutan Hurd

Debian GNU/Hurd con Xfce

Las distribuciones GNU basadas en Hurd incluyen:

Véase también

Referencias

  1. ^ "Lanzamiento de GNU Hurd 0.9, GNU Mach 1.8 y GNU MIG 1.8" . Consultado el 11 de mayo de 2018 .
  2. ^ "GNU Hurd portado a AArch64 y más noticias de Hurd". osnews.com . Consultado el 22 de abril de 2024 .
  3. ^ "COPIANDO - hurd/hurd.git - Hurd". Git.savannah.gnu.org . Consultado el 25 de febrero de 2019 .
  4. ^ ab "¿Qué es GNU Hurd?". GNU . Consultado el 4 de marzo de 2010 .
  5. ^ ab Tozzi, Christopher (20 de abril de 2015). "30 años después, HURD sigue vivo: GNU actualiza el núcleo Unix de código abierto". The VAR Guy . Archivado desde el original el 24 de abril de 2015.
  6. ^ "¿Qué es un microkernel multiservidor?". GNU. 2013-04-13 . Consultado el 2015-08-11 .
  7. ^ "ventajas". GNU . Consultado el 7 de diciembre de 2011 .
  8. ^ ab Vervloesem, Koen (7 de julio de 2010). "The Hurd: GNU's quest for the perfect kernel". LWN.net . Consultado el 5 de octubre de 2012 .
  9. ^ "GNU Hurd: origen del nombre". GNU . Consultado el 4 de marzo de 2010 .
  10. ^ "Historia de GNU". cs.stanford.edu . Consultado el 3 de septiembre de 2024 .
  11. ^ Hillesley, Richard (30 de junio de 2010). «GNU HURD: visiones alteradas y promesas perdidas» . Consultado el 1 de octubre de 2012 .
  12. ^ "Linux y el Proyecto GNU". GNU . 2010-01-26 . Consultado el 2010-03-04 .
  13. ^ ab "La historia de GNU Hurd, 'Cómo empezó'". GNU . Consultado el 27 de agosto de 2006 .
  14. ^ Salus, Peter . "El demonio, el ñu y el pingüino" . Consultado el 8 de agosto de 2006 .
  15. ^ Ribeiro, John (11 de marzo de 2002). «Free Software Sees GNU Loose of Linux» (El software libre ve a GNU perder ante Linux). PC World . Archivado desde el original el 22 de septiembre de 2016. Consultado el 5 de octubre de 2012 .
  16. ^ "Estado". GNU . Consultado el 4 de marzo de 2010 .
  17. ^ Stallman, Richard (9 de marzo de 2006). "El movimiento del software libre y el futuro de la libertad" (ogg) . Free Software Foundation . Zagreb . Esta es también la forma en que la gente pensaba que era la más limpia posible para diseñar núcleos en 1990. Bueno, se necesitaron muchos, muchos, muchos años para que este núcleo funcionara, y todavía no funciona bien, y parece que puede haber problemas fundamentales con este diseño, de los que nadie sabía nada en 1990.
    • Richard Stallman. "El movimiento del software libre y el futuro de la libertad; 9 de marzo de 2006". Free Software Foundation Europe (transcripción de la conferencia). Archivado desde el original el 12 de enero de 2007.
  18. ^ Stallman, Richard (29 de julio de 2010). "RMS AMA". Reddit . Consultado el 7 de diciembre de 2011 .
  19. ^ "La Free Software Foundation cambia sus prioridades - SD Times". SD Times . 2017-01-17 . Consultado el 2017-04-17 .
  20. ^ Ragkousis, Manolis (20 de agosto de 2015). «[GSoC update] Porting Guix to GNU/Hurd» (Lista de correo). guix-devel . Consultado el 20 de agosto de 2015 .
  21. ^ Kousoulos, Constantine (21 de marzo de 2007). "Re: ¿Controladores de dispositivos en Mach?". bug-hurd (Lista de correo).
  22. ^ Doeppner, Thomas W. (20 de diciembre de 2010). Sistemas operativos en profundidad: diseño y programación. John Wiley & Sons. pág. 160. ISBN 978-0-471-68723-8. Recuperado el 29 de noviembre de 2012 .
  23. ^ Stallman, Richard (12 de octubre de 2000). "En defensa de Red Hat". Linux Today . Consultado el 7 de diciembre de 2011. Asumo toda la responsabilidad por la decisión técnica de desarrollar el núcleo GNU basado en Mach, una decisión que parece haber sido responsable de la lentitud del desarrollo. Pensé que usar Mach aceleraría el trabajo al ahorrarnos una gran parte del trabajo, pero estaba equivocado.
  24. ^ Shapiro, Jonathan S. (27 de octubre de 2005). "Re: Un comentario sobre el cambio de núcleos". l4-hurd (Lista de correo).
  25. ^ Bachmann, Tom (7 de julio de 2006). "Re: seL4, L4.sec y el lío de los coyotes". l4-hurd (Lista de correo).
  26. ^ "Portar Hurd a otro microkernel". GNU Hurd . Free Software Foundation . Consultado el 6 de mayo de 2017 .
  27. ^ Walfield, Neal H.; Brinkmann, Marcus (julio de 2007). "Una crítica del sistema operativo multiservidor GNU Hurd" (PDF) . GNU . Consultado el 7 de diciembre de 2011 .
  28. ^ Walfield, Neal H.; Brinkmann, Marcus (4 de enero de 2007). "Mejora de la usabilidad mediante la descomposición del acceso y el refinamiento de políticas" (PDF) . GNU . Consultado el 7 de diciembre de 2011 .
  29. ^ "viengoos". GNU . Consultado el 4 de marzo de 2010 .
  30. ^ "¿Qué pasó con los micronúcleos L4/Coyotos/viengoos?". GNU . Consultado el 7 de enero de 2011 .
  31. ^ "Descripción preliminar de la interfaz de usuario de GNU/Hurd". Debian . 1996-10-10 . Consultado el 2010-03-04 .
  32. ^ "GNU/Hurd - Documentación". Debian. 10 de octubre de 1996. Consultado el 12 de julio de 2012 .
  33. ^ "GNU Hurd/hurd/running/distrib". GNU . 2015-05-03 . Consultado el 2017-09-21 .
  34. ^ "GNU Hurd/hurd/running/live cd". GNU . 2013-04-09 . Consultado el 2017-09-21 .

Enlaces externos