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.
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).
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).
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.
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.
Que yo sepa, todos los esfuerzos de investigación en este campo se dedican a los micronucleos (ya no se estudian monolíticos), si se consigue uno que no sea excesivamente lento (más lento va a ser siempre) y sea micronucleo real se habría alcanzado un nuevo nivel en los sistemas operativos. Por ahora yo lo veo lejillos, de aquí a 3-5 años veremos por donde nos llevan...
>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 ;^)
Todo eso ya lo he dicho yo (lo de QNX no, lo de Linux). Vuelve a leer mi mensaje y dime donde insinuo siquiera que Linux sea micronucleo. He dicho que los módulos le dan algunas de las ventajas de modularidad de los micronucleos, algunas y de modularidad. De las demás características no he hablado. De QNX solo he oido hablar, no he llegado a hacerlo funcionar ni he leido sobre su implementación concreta. Por lo que me han dicho debe usar trucos para acelerarlo (metiendo más código en modo nucleo que el del kernel), vamos, que no es micronucleo puro. Eso es lo que he oido.
Re: ¿Porque todavia tenemos que ver cosas como est
(Puntos:2, Interesante)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.
Que yo sepa, todos los esfuerzos de investigación en este campo se dedican a los micronucleos (ya no se estudian monolíticos), si se consigue uno que no sea excesivamente lento (más lento va a ser siempre) y sea micronucleo real se habría alcanzado un nuevo nivel en los sistemas operativos. Por ahora yo lo veo lejillos, de aquí a 3-5 años veremos por donde nos llevan...
Re: ¿Porque todavia tenemos que ver cosas como est
(Puntos:1)>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
Re: ¿Porque todavia tenemos que ver cosas como est
(Puntos:1)