Diferencia entre revisiones de «GNU Hurd»
Contenido eliminado Contenido añadido
Sin resumen de edición |
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
| nombre = GNU Hurd
| logo = [[Archivo:Hurd-logo.svg|70px]]
Línea 17 ⟶ 16:
}}
'''GNU Hurd''' es un
Hurd intenta superar a los
Aunque el
== Historia del desarrollo ==
El desarrollo de Hurd empezó en el año
== Origen del nombre ==
La palabra
== Arquitectura ==
A diferencia de la mayoría de núcleos tipo Unix, Hurd se erige encima de un [[micronúcleo]] (actualmente
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
=== 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 ''[[
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: Servidor de autenticación. Intercambia credenciales cuando dos servidores tratan de comunicarse entre ellos.
* [[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''.
* 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]].
*fifo: Traductor [[First in, first out|FIFO]] translator, implenta [[Tubería (informática)|tuberías]] nombradas.
*new-fifo: Un servidor alternativo para tuberías nombradas.
* null: implementa <code>[[/dev/null]]</code> y <code>[[/dev/zero]]</code>.
* [[storeio]]: Traductor de almacenamiento▼
* [[pfinet]]: implementa el protocolo IP (versión 4).
* [[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▼
* [[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''.
* [[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.
* [[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 (
== Véase también ==
* [[Arch Hurd]]
* [[GNU Mach]]
* [[L4 (
* [[Debian GNU/Hurd]]
* [
* [[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]]
|