Diferencia entre revisiones de «GNU Hurd»

Contenido eliminado Contenido añadido
Filiprino (discusión · contribs.)
Sin resumen de edición
NacaruBot (discusión · contribs.)
Bot: eliminando enlaces según WP:ENLACESFECHAS
 
(No se muestran 31 ediciones intermedias de 22 usuarios)
Línea 1:
{{PA|2=wikificar|3=copyedit|4=referencias adicionales|5=desactualizado|7=informática|t=20191024081819}}{{Ficha de software
{{renombrar| GNU/Hurd | GNU Hurd es el conjunto de servidores + microkernel Mach. GNU/Hurd es el sistema operativo completo | sección }}
{{Ficha de sistema operativo
| nombre = GNU Hurd
| logo = [[Archivo:Hurd-logo.svg|70px]]
Línea 17 ⟶ 16:
}}
 
'''GNU Hurd''' es un conjuntoproyecto dedentro programasdel servidores[[Proyecto queGNU]] simulanpara reemplazar al [[Núcleo (informática)|núcleo]] de un [[sistema operativo]] tipo [[Unix]], que establece la base de latotalmente [[DistribuciónSoftware de softwarelibre|distribuciónlibre]], [[GNU]]. El Proyecto GNU loSe ha estado desarrollando desde [[1990]] comoy [[software libre]], distribuyéndolodistribuyendo bajo la [[licencia de software|licencia]] [[Licencia pública general de GNU|GPL]].<ref>{{Cita web|url=https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html|título=What Is the GNU Hurd?|títulotrad=¿Qué es el GNU Hurd?|fechaacceso=24 de octubre de 2019|fecha=7 de diciembre de 2010|sitioweb=www.gnu.org|editor=Free Software Foundation|idioma=en|urlarchivo=https://web.archive.org/web/20190924223235/https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html|fechaarchivo=24 de septiembre de 2019}}</ref>
 
Hurd intenta superar a los [[sistema operativo|sistema operativos]] tipo [[Unix]] en cuanto a funcionalidad, seguridad y estabilidad, aunaún manteniéndose compatible con ellos. Esto se logra gracias a que Hurd implementa la especificación [[POSIX]] (entre─entre otras)otras─, pero eliminandoelimina las restricciones arbitrarias a los usuarios.
 
Aunque el [[Proyecto GNU]] se refieresuele considerar a Hurd como [[núcleo (informática)|núcleo]], en sentido estricto esto no essería correcto, dado que parte importante de Hurd reside en un [[espacio de usuario,]] que interactuandointeractúa con un [[micronúcleo]], ([[GNU Mach]]). De hecho, Hurd essería un [[sistema operativo]], tal como else considera al núcleo [[Núcleo Linux|Linux]], (comoy ella mismoextensa indica,colección elde [[ProyectoPrograma GNUinformático|programas]] se refiere aGNU [[GNUEjecución (computación)|corriendo]] ysobre Hurd se denomina [[GNU/Linux]]Hurd, usandotal elcomo términose [[sistemallama operativo]]GNU/Linux comoa equivalentela demisma [[distribucióncorriendo desobre software|distribución]])Linux.
 
== Historia del desarrollo ==
El desarrollo de Hurd empezó en el año [[1990]]. Aunque [[Richard Stallman]], fundador del proyecto [[GNU]], había anunciado que esperaba el lanzamiento oficial del [[sistema operativo]] GNU (también conocido como GNU/Hurd) antes de finales de [[2002]], esto no fue conseguido, en parte porque se comenzó a utilizar el [[Linux (núcleo)|núcleo Linux]].
 
== Origen del nombre ==
La palabra Hurd es un [[acrónimo recursivo]]. Hurd es el acrónimo de «Hird of Unix-Replacing Daemons» (en español: «Hird» de demonios que reemplazan a Unix). A su vez el término «Hird» significa «Hurd of Interfaces Representing Depth» («Hurd» de interfaces que representan profundidad). Tanto «Hurd» como «Hird» en inglés americanoestadounidense se pronuncian como /hɜːrd/ «herd» (en español: manada), por lo que GNU Hurd se podría traducir como «manada de ñúes», referente a su arquitectura de un conjunto de servidores corriendo.
 
== Arquitectura ==
A diferencia de la mayoría de núcleos tipo Unix, Hurd se erige encima de un [[micronúcleo]] (actualmente sólosolo está soportado [[GNU Mach|Mach]], aunque existió un proyecto ahora discontinuadoabandonado para poder ejecutar Hurd en el micronúcleo de segunda generación L4), responsable de facilitarle los servicios de un núcleo más básicos: coordinar el acceso al [[hardware]] (a la [[CPU]] —mediante [[multiproceso]]—, a la [[memoria RAM]] —mediante [[gestión de memoria]]—, y a otros dispositivos de sonido, gráficos, almacenamiento, etc.).
 
Hay otros sistemas tipo Unix que se ejecutan encima del micronúcleo [[Mach kernel|Mach]], como [[OSF/1]], [[NEXTSTEP]], [[Mac OS X]], [[Lites]] y [[MkLinux]]. Todos ellos están implementados como un único ''servidor''. Por lo tanto, sustituyen el [[núcleo monolítico]] de los sistemas Unix tradicionales con dos elementos, el micronúcleo y el servidor Unix.
Línea 36 ⟶ 35:
En cambio, Hurd consiste en '''múltiples''' servidores ejecutándose simultáneamente. En lugar de un solo programa enorme que controle desde el reloj hasta el manejo de la [[Red de computadoras|red]], en Hurd cada una de estas tareas es gestionada por un servidor independiente. Esto hace que (teóricamente, al menos) el desarrollo de Hurd sea mucho más fácil, ya que es menos probable que el hacer cambios en un servidor tenga efectos indeseados en otros servidores.
 
En el diseño original de Mach una de las principales metas fue este tipo de «conjunto de servidores», pero parece que Hurd es el primero en implementar este diseño sobre un micronúcleo Mach (aunque [[QNX]] es similar, pero basado en su propio micronúcleo). No está claro por qué no hubo ninguna implementación de múltiples servidores anteriormente, aunque parece que los grupos que trabajaban en Mach estaban demasiado ocupados en ésteeste para dedicarse al [[sistema operativo]] en su totalidad. Hurd intenta, además, ser [[portabilidad|portable]] entre micronúcleos.
 
=== Extensiones de Unix ===
En Hurd un buen número de conceptos tradicionales de Unix cambian o se potencian:
 
Bajo Unix, cada programa que se ejecuta tiene asociada una [[Identificador de usuario|identidad de usuario]], que normalmente se corresponde con el usuario que inició el [[Proceso (informática)|proceso]]. Esta identidad determina en gran medida qué acciones se le permite realizar al programa. Ningún proceso externo puede cambiar la identidad de un programa que se esté ejecutando. Un proceso de Hurd, por otra parte, se ejecuta asociado a un conjunto de identidades de usuario, que puede contener múltiples identidades, una, o ninguna. Un proceso con los suficientes privilegios puede añadir o eliminar identidades de otro proceso. Por ejemplo, existe un servidor de contraseñas que otorga identidades en respuesta a una contraseña de usuario correcta.
 
En lo que respecta al [[sistema de archivos]], se puede establecer un programa adecuado como ''traductor'' para un solo [[archivo (informática)|archivo]] o una jerarquía de directorios entera. Cada acceso al archivo traducido, o a los archivos en la jerarquía en el segundo caso, son de hecho manejados por este programa. Por ejemplo, un traductor de archivos puede simplemente redirigir las operaciones de lectura y escritura hacia otro archivo, no como un [[enlace simbólico]] de Unix. El ''[[montarMáquina|montaje]]'' de Unix, en Hurd se consigue configurando un traductor de sistema de archivos (usando el mandato <code>settrans</code>). Los traductores también se pueden usar para proporcionar servicios al usuario. Por ejemplo, el traductor [[ftpfs (Hurd)|ftpfs]] permite a un usuario encapsular un sitio FTP remoto en un directorio. Con esto, se pueden usar programas estándar como <code>[[ls (Unix)|ls]]</code>, <code>[[cp (Unix)|cp]]</code> o <code>[[rm (Unix)|rm]]</code> para manipular archivos en el sitio remoto. Hay traductores incluso más potentes, como [[UnionFS]], que permite a un usuario unificar varios directorios en uno solo, de tal manera que al listar este directorio se muestra el contenido de todos los directorios unificados (una característica ausente en la mayoría de Unices, aunque presente en [[FreeBSD]]).
 
Quizás la característica más potente de Hurd es la posibilidad de que cualquier usuario ejecute sus propios servicios de sistema. Un usuario puede asignar cualquier traductor al sistema de archivos para su uso personal. Incluso puede reemplazar servidores del sistema, como el servidor de autenticación, con otros servidores de su elección. Todo esto se puede hacer sin afectar a los otros usuarios, gracias a que los ámbitos de efecto están bien definidos. De hecho, incluso es posible para un usuario ejecutar Hurd dentro de sí mismo, lo que se conoce como sub-Hurd.
Línea 50 ⟶ 49:
Según la documentación de Debian son los siguientes:<ref>{{cita web|url=http://www.debian.org/ports/hurd/hurd-doc-server|título=Debian GNU/Hurd|editorial=[[Proyecto Debian]] |idioma=inglés}}</ref>
 
* [[init]]: Procedimientos de arranque del sistema.
* [[auth]]
* auth: Servidor de autenticación. Intercambia credenciales cuando dos servidores tratan de comunicarse entre ellos.
* [[nfs]]: Servidor nfs
* [[Crash (informática)|crash]]: Servidor de manejo de [[Crash (informática)|errores]]. Se activa cuando una tarea recibe una señal de error irrecuperable, como un ''segmentation fault''.
* [[null]]: Servidor null
* exec: Cargador de ejecutables. Genera la imagen inicial de un proceso desde su imagen binaria en disco. Soporta [[Executable and Linkable Format|ELF]] y [[a.out]].
* [[pfinet]]: Servidor pfinet
*fifo: Traductor [[First in, first out|FIFO]] translator, implenta [[Tubería (informática)|tuberías]] nombradas.
* [[pflocal]]: Servidor pflocal
*new-fifo: Un servidor alternativo para tuberías nombradas.
* [[proc]]: Servidor de procesos
* null: implementa <code>[[/dev/null]]</code> y <code>[[/dev/zero]]</code>.
* [[storeio]]: Traductor de almacenamiento
* [[pfinet]]: implementa el protocolo IP (versión 4).
* [[symlink]]: Traductor de enlaces simbólicos
* [[pflocal]]: Implementa los UNIX domain sockets.
* [[term]]: Servidor de terminal
* [[proc]]: Asigna estructuras de procesos a las tareas, incluyendo su PID, y gestiona sus estados.
* [[ufs]]: Servidor de ufs
* [[storeio]]: TraductorUn traductor para dispositivos de almacenamiento.
* [[usermux]]: Servidor usermux
* [[symlink]]: Simula enlaces simbólicos en sistemas de ficheros que no los soportan.
* [[ifsock]]: Simula ''filesystem sockets'' en sistemas de ficheros que no los soportan.
* [[firmlink]]: Un ''firmlink'' es algo intermedio entre un enlace simbólico y un ''hardlink''.
* [[term]]: ServidorImplementa deun terminal POSIX.
* [[usermux]]: Implementa un directorio en el que se pueden buscar nombres de usuarios.
* [[hostmux]]: Directorio para buscar ''hosts''.
* [[fwd]]: Punto de entrada común para buscar cualquier otro servidor.
* [[magic]]: Directorio para buscar información del proceso llamante.
 
También incluye varios sistemas de ficheros:
Entre todos ellos implementan la [[interfaz de programación de aplicaciones]] o API [[Single Unix Specification]] que es un superset de [[POSIX]]. En realidad, es la [[biblioteca (informática)|biblioteca]] libc la que implementa la API POSIX, igual que en Linux, y Hurd da una interfaz cercana pero de más bajo nivel.
 
* [[Network File System|nfs]]: Implementa el ''Network file system'' de Sun.
La forma en que los programas llaman a Hurd es a través del sistema de archivos. Funcionan como un sistema de archivos especial, parecido al /proc de linux. Por ejemplo, si queremos hablar con el servidor auth miraremos en el directorio donde esté montado (/servers/auth) y haremos llamadas read/write sobre él.
* [[ftp]]: Un servidor para sistemas ftp.
* [[ufs]]: ServidorSistema UFS de ufslos DVD.
* [[isofs]]: Server para sistemas de archivos ISO, como los de los CD.
* [[ext2fs]]: Server para sistemas de archivos de tipo ext-2.
 
Entre todos ellos implementan la [[interfaz de programación de aplicaciones]] o API [[Single Unix Specification]] que es un superset de [[POSIX]]. En realidad, es la [[biblioteca (informática)|biblioteca]] <code>libc</code> la que implementa la API POSIX, igual que en Linux, y Hurd da una interfaz cercana pero de más bajo nivel.
De alguna forma, por tanto, el servidor del sistema de archivos es el que hace de interfaz del API y también sabe a cuál de los otros servidores de bajo nivel mandar las llamadas. A bajo nivel, cuando se hace un open de uno de estos archivos, el programa recibe los distintos dispositivos de hardware que vayan compilados dentro del micronúcleo. Por tanto Hurd no necesita llevar él mismo la gestión de bajo nivel de las interrupciones; en cambio sí necesita traducir las señales hardware a señales del sistema operativo.
 
La forma en que los programas llaman a Hurd es a través del sistema de archivos. Funcionan como un sistema de archivos especial, parecido al <code>/proc</code> de linux. Por ejemplo, si queremos hablar con el servidor auth miraremos en el directorio donde esté montado (<code>/servers/auth</code>) y haremos llamadas <code>read/write</code> sobre él.
 
De alguna forma, por tanto, el servidor del sistema de archivos es el que hace de interfaz del API y también sabe a cuál de los otros servidores de bajo nivel mandar las llamadas. A bajo nivel, cuando se hace un open de uno de estos archivos, el programa recibe los distintos dispositivos de ''hardware'' que vayan compilados dentro del micronúcleo. Por tanto Hurd no necesita llevar él mismo la gestión de bajo nivel de las interrupciones; en cambio sí necesita traducir las señales ''hardware'' a señales del sistema operativo.
 
== Arranque ==
Línea 80 ⟶ 95:
 
== Hurd NG ==
Se está intentando crear una nueva versión del Hurd llamada NgHurd, este proyecto comenzó con un intento de portar el [[L4 (microkernelmicronúcleo)|micronúcleo L4]] a Hurd lo cual lo hubiera dotado de una mayor velocidad entre otras características. Dicho proyecto fue abandonado, por lo cual se están discutiendo las características para esta nueva versión desde cero, incluyendo el micronúcleo a utilizar.
 
== Véase también ==
* [[Arch Hurd]]
* [[GNU Mach]]
* [[L4 (microkernelmicronúcleo)|L4]]
* [[Debian GNU/Hurd]]
* [httphttps://web.archive.org/web/20081120015637/http://www.superunprivileged.org/ GNU/Hurd-based Live CD]
* [[Minix|Minix 3]] - Un sistema operativo similar también basado en servidores.
* [[Kernel-based Virtual Machine]] (KVM)
Línea 99 ⟶ 114:
* [http://www.debian.org/ports/hurd/ Port GNU/Hurd de la distribución Debian] (inglés)
* [http://l4ka.org/ Sitio web oficial del micronúcleo L4] (inglés)
* [https://web.archive.org/web/20110725012919/http://www.archhurd.org/ Port GNU/Hurd de la distribución ArchLinux] (inglés)
* [https://web.archive.org/web/20110722113555/http://softlibre.barrapunto.com/softlibre/11/07/19/0751226.shtml Hurd ya está aquí, pero no sorprende] comparativa Linux versus Hurd
* [http://www.muylinux.com/2013/05/22/quieres-probar-debian-gnuhurd-hay-nueva-version/ Lanzamiento de la primera versión oficial de Debian GNU/Hurd del 22 de mayo de 2013]
* [http://www.gnu.org/software/hurd/news/2013-05-debian_gnu_hurd_2013.html Lanzamiento de la primera versión oficial de Debian GNU/Hurd] (inglés)
 
{{Control de autoridades}}
 
[[Categoría:Núcleos de sistemas operativos]]