Diferencia entre revisiones de «GNU Hurd»

Contenido eliminado Contenido añadido
→‎Arquitectura: Traducción defectuosa
Jacorbal (discusión · contribs.)
m Correcciones menores y varias cursivas en anglicismos.
Etiquetas: Edición desde móvil Edición vía aplic. móvil Edición vía aplic. para iOS
Línea 29:
 
== Arquitectura ==
A diferencia de la mayoría de núcleos tipo Unix, Hurd se erige encima de un [[micronúcleo]] (actualmente sólo está soportado [[GNU Mach|Mach]], aunque existió un proyecto ahora abandonado 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 51:
* [[init]]: Procedimientos de arranque del sistema
* [[auth]]: Servidor de autenticación. Intercambia credenciales cuando dos servidores tratan de comunicarse entre ellos.
* [[crash]]: Servidor de manejo de errorreserrores. 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.
* [[null]]: implementa <code>/dev/null</code> y <code>/dev/zero</code>.
* [[pfinet]]: implementa el protocolo IP (versión 4).
* [[pflocal]]: Implementa los UNIX domain sockets.
* [[proc]]: Asigna estructuras de procesos a las tareas, incluyendo su PID, y gestiona sus estados.
* [[storeio]]: Un traductor para dispositivos de almacenamiento.
* [[symlink]]: Simula linksenlaces 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]]: Implementa un 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.
Línea 71:
También incluye varios sistemas de ficheros:
 
* [[nfs]]: Implementa el ''Network file system'' de Sun.
* [[ftp]]: Un servidor para sistemas ftp
* [[ufs]]: Sistema UFS de los DVD
* [[isofs]]: Server para filesystems ISO, como los de los CD
* [[ext2fs]]: Server para filesystemsistemas 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.
 
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 ==