Micro-Kernel o Macro-kernel ???

Imagen de ulrich7887
0 puntos

A quien pueda ayudarme:

Primero, agradecer por leerme.
Segundo, me muevo según el deseo que tengo por entender un asunto que ya hace un tiempo me viene castigando. He leido al señor Andrew S. Tanenbaum, y creo entender que insita a implementar los sistemas operativos partiendo de un micro-kernel, haciendo uso de un diseño cliente servidor. No como lo hacen en Linux (con un kernel monolítico), pues deja mucho que desear en cuanto a estética y optimización en su diseño. Me pregunto como es que no se ha reprogramado el kernel y se ha seguido el esquema propuesto por el insigne profesor, que creo estarán de acuerdo que es un figura importante en este tema. Se que la comunidad de Linux es muy fuerte y grande y creo que el desconocimiento no debe ser la causa que frena esta empresa. Mas bien, supongo que la comunidad no esta interesada a implementar el kernel de esta forma, por otras cuestiones que desconozco y me agradarían entender.
La única explicación que puedo suponer, es la referente a la rapidez, quizás y un kernel con todas las funciones juntas trabaja más rápido que uno que sea en módulos individuales. Pero no tengo bases para pensar que tal idea sea cierta o no.
Me gustaría que alguien tocara el tema, y me explicara por que se sigue utilizando el kernel monolítico, cuando existe una variante de diseño mucho mejor y más fiel a los propósitos de la comunidad: desarrollar un sistema operativo robusto, eficiente, óptimo y libre…

Saludos cordiales, Ulrich7887

Imagen de SpA_XeOn
+1
0
-1

Muy interesante este asunto ;)

Linus y Tanenbaum tuvieron sus más y sus menos discutiendo este asungo allá por 1992. Aquí te dejo un enlace para que veas lo que discutieron:
http://people.fluidsignal.com/~luferbu/misc/Linus_vs_Tanenbaum.html

Efectivamente, un micro-kernel con la estructura de cliente servidor permite diseñar el sistema de una forma muy modulada y elegante. Para hacer cambios en el sistema operativo no habría que recompilar todo el kernel, sino sólo el módulo que se ha modificado, y luego no habría que reiniciar para cargar el nuevo kernel en memoria, sino recargar el módulo modificado. Sin embargo, como bien dices, el micro-kernel es algo menos eficiente que un kernel monolítico (aunque no hay mucha diferencia si el microkernel es bueno). Esta diferencia de rendimiento se debe a que en la estructura cliente-servidor del micro-kernel, las llamadas a los servicios de los servidores requieren realizar cambios de contexto de modo núcleo a modo usuario continuamente, pues los servidores se ejecutan siempre en modo usuario. Sin embargo, en el kernel monolítico todo es un programa entero y no hay que hacer eso, aumentando por tanto el rendimiento.

Personalmente, si tuviera que programar un kernel, optaría por el micro-kernel. Es mucho más fácil de mantener el código y se pueden diferenciar fácilmente grupos de trabajo que trabajen en unos servidores y otros en otros, teniéndolo todo mucho más ordenado y más fácil de corregir bugs, etc.

El kernel monolítico se sigue usando porque Linus está convencido de que es mejor, y porque supongo que no será nada trivial convertirlo a micro-kernel. De todas formas la FSF está creando un sistema operativo compatible con Linux basado en un micro-kernel: GNU/Hurd. Hurd podríamos decir que es el conjunto de servidores con los que trabaja el micro-kernel. Actualmente están usando el micro-kernel Mach, pero hay otra línea de desarrollo para usar. De todas formas la FSF lleva con este proyecto desde antes de 1991, así que parece que se lo toman con calma...

Enlaces:
http://www.gnu.org/software/hurd/hurd.es.html

http://www.minix3.org/

http://os.inf.tu-dresden.de/L4/

Salu2

+1
0
-1
Imagen de shawe_ewahs
+1
0
-1

No creo que sea el mas adecuado para contestarte esta duda, pero supongo que esto te puede servir para hacerte una idea, desconozco al profesor que dices que has leido, y supongo que es facil que el explique mejor esto.

Según tengo entendido, en la mayoria de kernels que van con las distribuciones, esta integrado lo mínimo indispensable para garantizar que todo lo más básico funcione. A partir de ahí todo lo demas es añadido, para que? Pues para facilitar a los usuarios más noveles su uso, y evitarles de un buen principio tener que recompilar el kernel ya sea para que funcione el audio, o para que la grafica trabaje con el driver completo y no el vesa o fb. Muchos de estos o se añaden al kernel como modulos o se integran. Con esto se consigue dar un mayor soporte de hardware funcionando facilmente, pero por contrapartida se consigue un kernel mucho más pesado del que realmente se requiere y algo más lento.

Según lo que has dicho y lo que sé, el macro-kernel seria el que llevan muchas distribuciones que autodetectan mucho hardware automaticamente como sería un ejemplo knoppix, y un micro-kernel seria lo que yo entiendo por un kernel a medida de tu hardware. Aunque recuerdo haber leido en algun sitio algo sobre kernels mucho mas rápidos y mucho mas pequeños, que supongo que sera al que te refieres. ¿Podría ser que el proyecto de iPodLinux usara un microkernel real? Vi algun video de un ipod cargando linux y cargaba mucho más rápido de lo normal y con buena diferencia.

No se si te ha servido de ayuda mi explicación o aun te he liado más, de todos modos, hablo un poco (supongo que demasiado) sin saber bien de lo que hablo. Haber si alguien que sepa más sobre esto se anima a contestarte :P

By §h@wæ

+1
0
-1

By §h@wæ