[eside-ghost] dudas teorikas...
Jon Ander Hernandez
hernandez en movimage.com
Mie Dic 10 04:26:12 CET 2003
Aupa.
Una cosa importante para partir a la hora de catalogar los OSes es que
aunque sabemos que es cada termino, los OSes que existen hoy día no son
fieles a la definición de unos u otros y por lo tanto siempre se podría
entrar en un debate sin posible resolucion ya que depende de como se
mire.
Monolitico es cuando nos encontramos con un programa enorme en la que
reside toda la funcionalidad de un OS.
Microkernel es cuando nos encontramos con un pequeño programa que posee
la funcionalidad minima posible, y que la funcionalidad esperada de un
OS seria delegada a programas mas pequeños.
La definición seria esta, y parte de esto surgen conotaciones muy
caracteristicas de ambos diseños :
En el kernel monolitico, todas las acciones dentro de el kernel tienen
los mismos privilegios (mas que root) y que las llamadas dentro de sus
componentes sean muy rapidas ya que todo es un mismo programa.
En el diseño microkernel, las acciones por muy importantes que sean usan
privilegios de usuarios normales (esto se gestionaría con un componente
que permite q el resto se autentifiquen) y las llamadas entre los
distintos modulos son mas lentas porque hay cambios de contexto.
Lo de al principio venia a cuento de que, Linux no es 100% un kernel
monolitico porque cuenta con modulos, y un monolitico puro nunca tendría
esto; y por otro lado Mach que es el microkernel del proyecto Hurd tiene
drivers en su interior por lo que no es un microkernel puro ... es decir
q las fronteras son dificiles de delimitar.
On Fri, 2003-12-05 at 19:58, slipknot insabern drums wrote:
> pues ya me has dejado roto pq en la uni se estudia que minix es un sistema
> operativo por capas.
Minix efectivamente es un microkernel, aunque yo no le he echado
personalmente un vistazo he leido acerca de el y el monolitico por lo
antes citado, sus distintas partes funcionan a nivel de usuario fuera de
el nivel de kernel.
> De todas formas ya he visto que en efecto unix es un so monolítico, así que
> a pesar de que linux se supone evolución de unix, o clonico, le otorgare la
> categoria de monolítico a el tb, a pesar de tener una estructura muy
> parecida a la de microkernel :-)
Puede que existan abstracciones o capas en su diseño, pero ello no lo
convierte en microkernel o monolitico, eso solo es la forma de
organizar/modularizar el código, la cuestión es que al final obtenemos
un programa enorme que lo hace todo y por lo tanto monolitico.
Y Linux no es q sea una evolución de Unix, sencillamente es un sabor
Unix, esto es un programa q implementa la misma funcionalidad que UNIX y
ofrece a las aplicaciones un interfaz identico.
> >From: Pablo Perez Perez <pablofausto en ya.com>
> >En dicho debate Tanenbaum tiene la ocurrencia de decir que si Torvalds
> >fuera su alumno no le daria una buena nota por el diseño de Linux. Si es
> >que hay profesores que son la leche :-)
> >
Yo cuando lei en su dia la discusión, me dio la impresión de que Linus
es un poco creido y prepotente, y es que se cebo mucho con Minix cuando
yo creo que minix como el dice se hizo con la idea de enseñar y no de
ser explotado como lo fue linux.
Y por otro lado, el diseño monolitico la verdad es q es algo q puede y
debe ser superado y yo creo q en este sentido tenia razón Tonenbaum al
reprocharselo a Linus.
Y por otro lado se ha dicho muchas veces por aqui y por allá que el
código de linux es una selva amazónica en la que cada día es mas dificil
batallar crece y crece sin cesar (yo diría que cada dia se va a ser mas
complicado a los mantainers coordinar todo el proyecto) y donde la
congelación de su API es ciencia ficción, con el consiguiente problema
de que un modulo tan solo puede ser usado para la versión para la cual
fue diseñado. Y por otro lado nos encontramos con la necesidad de el
salto al desktop con la consiguiente introducción en escena de cientos
de perifericos q necesitan un driver y esta situación no es nada buena
para los fabricantes.
Tal vez un diseño mas tirando a la idea de microkernel solucionará parte
de los problemas.
Aunque el tema microkernel vr monolitico, yo creo que es algo muy muy
heavy y muy dificil de tener valorar, muy dificil de demostrar que es
mejor y sobre todo que es un tema que se lleva discutiendo 10 años y en
que sigue sin haber consenso.
Por otro lado hay algunos OSes que tienen un diseño peculiar, como
MacOsX que usan un microkernel (mach) sobre el que montan un kernel
monolitico (Darwin, un derivado de FreeBSD), o como windows NT que segun
tengo entendido a pesar de usar un microkernel no hacen uso de sus
mejoras en absoluto. Por lo tanto si OSX y windows se consideran hoy dia
como algo eficientes construidos encima de algo microkernel, tal vez el
rendimiento que se pueda perder sobre un monolitico sea rentable. Por
otro lado existen nuevos diseño monoliticos q prometen mucho mas
rendimiento como lo es el l4.
Un Saludo y recordar q as always all IMHO!! (In My Humble Opinion / En
mi humilde opinión)
JonAn