GNU Hurd

GNU Hurd Descripción de esta imagen, también comentada a continuación El CD en vivo Hurd Información
Desarrollado por Proyecto GNU
Última versión 0,9 (18 de diciembre de 2016)
Escrito en Ensamblador , C
Medio ambiente ÑU
Tipo Micro-kernel enriquecido
Licencia GPLv3
Sitio web www.gnu.org/s/hurd

GNU Hurd es una colección de programas y bibliotecas que forman la base del sistema operativo GNU . Iniciado alrededor de 1990, es un software gratuito publicado bajo la licencia GNU GPL .

El objetivo es reemplazar las funcionalidades de un kernel tipo UNIX , manteniendo una amplia compatibilidad con ellas. Sigue las especificaciones POSIX tanto como sea posible , mientras evita las restricciones arbitrarias del usuario.

Su nombre es un acrónimo recursivo doble , "  Hurd  " que significa "  Hird de demonios que reemplazan a Unix  ", y "  Hird  " "  Hurd de interfaces que representan la profundidad  " y un juego de palabras con la proximidad de la palabra "manada", que significa manada en inglés. .

Arquitectura de micro-kernel

A diferencia de los núcleos UNIX convencionales, que son esencialmente monolíticos , GNU Hurd se basa en un micro-kernel , que proporciona solo las funciones básicas (acceso básico al hardware y la memoria, administración de tareas y la comunicación entre ellos). Consta de una serie de servicios (denominados servidores ), que proporcionan funciones y abstracciones de mayor nivel ( sistema de archivos , proceso Unix, gestión de permisos, consola , controladores avanzados ...). Por tanto, este diseño es más modular y más fácil de evolucionar dinámicamente. Sin embargo, estos servidores independientes deben comunicarse con frecuencia, lo que afecta el rendimiento del sistema.

El micronúcleo utilizado es GNU Mach , una implementación de Mach . Hay otros sistemas similares a UNIX que utilizan Mach , como OSF / 1 , NeXTSTEP , Lites  (en) y MkLinux . Tienen en común una arquitectura basada en el modelo de servidor  : el kernel monolítico del sistema UNIX tradicional se reemplaza así por dos componentes distintos, el micro-kernel y un servidor monolítico que proporciona compatibilidad con Unix (la mayoría de las veces BSD , excepto obviamente MkLinux ) . Mac OS X también usa Mach como base para su kernel xnu monolítico .

Elegir un micro-kernel

Desde 2004, se han realizado esfuerzos para trasladar Hurd a una nueva generación de microkernel, el L4 , pero el progreso ha sido muy lento debido a la falta de tiempo y desarrolladores. Sin embargo, durante 2005, el desarrollador líder de Hurd, Neal Walfield, completó la estructura del administrador de memoria para este puerto, y Marcus Brinkmann llevó la mayor parte de la biblioteca de lenguaje C ( glibc ), los procesos de código de inicio, permiten que las aplicaciones se ejecuten, incluido el famoso programa hello world . Mientras tanto, muchos desarrolladores están invirtiendo tiempo para estudiar el microkernel Coyotos experimental del proyecto EROS de la Universidad Johns Hopkins .

En 2006, Marcus Brinkmann y otros se unieron a Jonathan Shapiro , un destacado arquitecto de Coyotos, para discutir su posible uso con GNU / Hurd. Estas discusiones continuaron en 2007, lentamente. Luego, en 2008, Neal Walfield comenzó a trabajar sobre la base del microkernel de Viengoos como alternativa. En 2009, Jonathan Shapiro anunció que había cesado el trabajo colaborativo. En 2011, el desarrollo de Viengoos se detuvo debido a la falta de tiempo por parte de Neal Walfield.

Al mismo tiempo, un grupo de desarrolladores continúa portando el micro-kernel inicial, una versión de Mach.

Especificidades

Por lo tanto, GNU Hurd se compone de un conjunto de servidores que interactúan. En lugar de un solo programa imponente que incluye absolutamente todo, desde la gestión del sincronismo hasta la red, cada uno de sus componentes es gestionado por un servidor independiente. Cada servidor proporciona una serie de servicios en forma de llamadas ( RPC ). Estas llamadas están organizadas en interfaces. Estas interfaces se definen independientemente de los servidores proporcionados por dicho kernel: se supone que son estables (solo han cambiado una vez desde 1999 ) y están documentadas.

En principio, esto facilita el desarrollo de dicho kernel. Para reemplazar un componente, todo lo que tiene que hacer es crear un servidor que implemente estas mismas interfaces. También es posible reemplazar y / o modificar componentes no esenciales (la mayoría) sin apagar el sistema. Además, si algún componente falla, no debería provocar que se desconecte todo el sistema.

En el desarrollo inicial de Mach, esta idea de un conjunto de servidores que interactúan se vio como uno de los principales objetivos de diseño, pero GNU Hurd surgió como el primer sistema basado en Mach que opera de esta manera. De cualquier manera, resultó que el grupo que desarrollaba Mach estaba demasiado ocupado trabajando en Mach para pensar en el sistema operativo en su conjunto.

Una serie de conceptos comunes a UNIX se implementan o amplían en GNU Hurd.

En particular, respalda la máxima unixiana "todo es un archivo" y la amplía para dar respuesta a un problema común de los sistemas multiservidor: la identificación de servidores y el control de acceso a ellos. De hecho, dos servidores, para comunicarse entre sí, deben poder contactarse entre sí. En Internet, las direcciones IP y el DNS cumplen esta función. En el mundo CORBA , estos son los IOR. MachOS ofreció un servicio de nombres que le permite contactar a un servidor por su nombre. Sin embargo, este sistema agrega un elemento crítico al sistema (el servidor de nombres) y no aborda el tema del control de acceso. GNU Hurd se inclina por usar el sistema de archivos como un sistema de nombres: con cada archivo, asocia un programa. Estos programas son servidores ordinarios que implementan una interfaz particular: el acceso al archivo (lectura, escritura, cambio y propietario de derechos, etc.): se denominan "traductores" ( traductor ). Todos los servidores de dicho kernel son traductores, excepto auth y proc (para los cuales cualquier tarea creada tiene automáticamente un medio de comunicación con estos servidores). Los sistemas de archivos son un ejemplo de traductor: están asociados con todos los archivos proporcionados por el sistema de archivos. Lo que corresponde a montar bajo UNIX es lanzar un traductor de archivos bajo GNU / Hurd. La naturaleza de los traductores ( programas ordinarios) facilita el diseño de servicios específicos, como el traductor ftpfs permite al usuario navegar por un sitio FTP remoto como en una estructura de árbol local, o mirrorfs , lo que permite al usuario montar múltiples sistemas de archivos encima de El uno al otro.

En Unix, cada programa tiene un identificador asociado, ID de usuario o ID, que normalmente corresponde al del usuario que lo inició. Esta identificación dicta las acciones permitidas por este programa. Ningún proceso externo puede cambiar el ID de un programa en la memoria, y ningún proceso puede (normalmente) obtener un privilegio que no tiene en el inicio. Bajo GNU / Hurd, un proceso se ejecuta bajo un conjunto de identificadores, este conjunto puede ser nulo (sin ID asociado) o contener varios ID. Un proceso con suficientes privilegios puede agregar o eliminar ID de otro proceso. Por ejemplo, hay un servidor de contraseñas que devuelve un ID cuando se valida el inicio de sesión.

El aspecto más interesante de dicho kernel es la capacidad del usuario para lanzar su propio sistema de servicios. Cualquier usuario puede adjuntar cualquier traductor a un sistema de archivos para su uso personal: un usuario puede incluso reemplazar los servidores del sistema, como el servidor de autenticación, con uno de su elección. Todo esto se puede hacer sin afectar a otros usuarios, gracias a unos privilegios bien definidos. De hecho, incluso es posible, nuevamente para el usuario simple , reiniciar un sistema GNU / Hurd, que luego será un sub-Hurd (un Hurd in the Hurd).

Distribuciones

Richard Stallman , fundador del proyecto GNU, había anunciado que esperaba el lanzamiento de una versión oficial de GNU OS (también llamado GNU / Hurd) antes de finales de 2002 (una declaración que sorprendió mucho a los desarrolladores) . Inicialmente solo había una distribución basada en Hurd, en la etapa de desarrollo, pero era posible usarla para algunas tareas no críticas: Debian GNU / Hurd . Esto todavía existe.

Desde entonces, han surgido algunas distribuciones raras:

Todas estas distribuciones usan un cargador de arranque ( cargador de arranque) que puede administrar la especificación de arranque múltiple como para conocer GRUB , que se requiere para usar el kernel de Hurd.

Debido a la disponibilidad de otros núcleos de sistemas operativos que permiten el uso de todas las herramientas GNU, el desarrollo es lento. Este kernel todavía sufre limitaciones significativas relacionadas con el soporte de hardware, por ejemplo, no hay soporte para tarjetas de sonido .

Personalidades del proyecto

Notas y referencias

  1. (en) GNU Hurd 0.9, GNU Mach 1.8, 1.8 GNU MIG lanzado.  » (Consultado el 11 de mayo de 2018 )
  2. http://kilobug.free.fr/hurd/pres-en/slides/slides.html
  3. https://www.gnu.org/software/hurd/history/port_to_another_microkernel.html
  4. http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00755.html
  5. http://lists.gnu.org/archive/html/l4-hurd/2006-07/msg00004.html
  6. http://walfield.org
  7. http://www.gnu.org/software/hurd/microkernel/viengoos.html
  8. http://www.gnu.org/software/hurd/hurd/faq/which_microkernel.html
  9. http://superunprivileged.org/hurd/live-cd/
  10. https://lists.debian.org/debian-hurd/2013/05/msg00097.html
  11. http://www.gnu.org/software/hurd/news/2015-04-29-debian_gnu_hurd_2015.html
  12. http://www.gnu.org/software/grub/manual/multiboot/

Ver también

Artículos relacionados

enlaces externos