Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por Gusi (10863) el Martes, 30 Septiembre de 2003, 08:03h (#222191)

    >Micronucleo: Nucleo minúsculo. El nucleo hace >muy poquitas cosas y el resto lo hacen >servidores en modo usuario. Es muy modular, >resultan lentos y son muy estables debido a que >la cantidad que se ejecuta en modo privilegiado >es mínima.

    El núcleo provee de las capacidades necesarias para acceder al hardware, acceso a un sistema de memoria paginado con espacio lógico completo para los diferentes procesos, (mobil, no entero no residente, swap), mecanismo de IPC, sean mensajes, pipes, memoria compartida, semáforos, o combinación de ellos.

    Lo que todo el mundo entiende como interficie de syscalls se provee por los subsistemas, y su comportamiento de cara al usuario no depende del microkernel. Es decir, si uno sabe como empaquetar los mensajes y que syscalls REALEs ofrece el microkernel se podría saltar los subsistemas y hablar directamente con el microkernel. Los subsistemas se ejecutan en modo usuario (no privilegiado).

    Esto además permite que las diferentes políticas las pueda elegir el subsistema y no el nucleo. Por ejemplo, queremos poder variar la manera en que se elige el siguiente proceso a ejecutar o bien variar la información que guardamos relativa a cada proceso. Cuando se pide un proceso nuevo en un subsistema Posix (con un fork) esto se traduce a pedir una Task. El subsistema decidirá que información necesita guardar para ese 'proceso'.

    >Nucleo de Win32: Nucleo minúsculo. El nucleo >hace muy poquitas cosas y el resto lo hacen >servidores en modo nucleo. Tiene las ventajas de >los micronucleos en cuanto a modularidad, gana >velocidad pero pierde estabilidad (un fallo en >un servidor puede ser fatal).

    Win32 no es un nucleo. Win32 era una API de llamadas para ocultar las syscalls reales de win9x i WinNT. Actualmente por eficiencia se decide insertar esta API en el núcleo del sistema para ser más eficiente. A medida que uno hace esto pierde modularidad ya que el código en espacio de núcleo augmenta.

    >Nucleo monolítico: El nucleo es uno y grande. El >nucleo hace de todo y en modo nucleo. Es muy >rápido, poco modular y hay muchas más >probabilidades de fallos fatales (mucho más >código expuesto

    Efectivamente.

    Entre un nucleo monolítico y linux la única diferencia es que uno puede añadir código en espacio sistema. Ventajas tiene alguna, ya que el nucleo no es tan 'pesado', permitiendo insertar codigo solo cuando es necesario.

    Sobre si se ha provado un micronucleo 'by the book' decir que tenemos diferentes ejemplos comerciales, entre ellos destacar : Win NT 4.0 de Microsoft. OSF/1 de Alpha sobre Mach.( no GNUMach )

    Creo que QNX tambien lo es.

    Sobre Hurd, no es un micronucleo real, en tanto que permite añadir subsistemas y algunas cosas más que ahora no recuerdo ;^)

    Saludos

    Gusi

    [ Padre ]
  • por pobrecito hablador el Martes, 30 Septiembre de 2003, 11:41h (#222309)
    Nucleo de Linux: El nucleo es grande pero tiene módulos externos que permiten un diseño más modular. Es rápido y tiene algunas de las ventajas de modularidad de los micronucleos pero también expone demasiado código.

    No es cuestión de exponga más o menos código, un microkernel SÓLO hace esto:

    - Paso de mensajes entre procesos
    - Políticas de seguridad

    Linux, por mucho que tenga módulos, estos se cargan EN ESPACIO DEL KERNEL, que se puedan descargar de memoria no significa que su diseño sea más o menos parecido al de los microkernels, porque no lo es. Todas las características de un microkernel se implementan en espacio de usuario, no en espacio de kernel.

    Son diferentes opciones de diseño, todas válidas con ventajas y desventajas. Creo que la única que aun no se ha implementado (de forma seria y exitosa, experimentos y fracasos aparte) es la de un micronucleo puro (Como HURD sobre GNUMach). Desde el punto de vista del diseño un micronucleo puro es la hostia, una maravilla. Desde el punto de vista del rendimiento no da la talla, más lento de lo tolerable.

    Pregúntales a QNX [qnx.com], llevan más de 20 años en el mercado de sistemas empotrados con un microkernel de verdad, rápido, tiempo real, etc. adivina con qué funciona una central nuclear, un electrocardiograma o las fábricas de montaje de coches, en muchos casos con QNX o VxWorks (también microkernel)

    A lo mejor, eso de los "3-5 años" ya sucedió hace muuuuuuuucho tiempo.
    [ Padre ]