[uylug-varios] Kernel: Monolítico vs. Híbrido (era Re: linus torvalds finalista del premio mellennium de tecnología 2012 !!!)

Enrique Verdes emverdes at ieee.org
Wed Apr 25 08:35:21 PDT 2012


El día 22 de abril de 2012 22:10, etrapani <etrapani at unesco.org.uy> escribió:
>> Bueno, entiendo que se refiere a monolítico cuando la interfaz del
>> usuario y otros elementos que forman parte de la interfaz con el
>> usuario son parte del kernel.
>
>
> No, no tiene nada que ver el entorno gráfico.  Monolítico es cuando las
> funciones propias del kernel se brindan todas desde adentro del kernel en
> espacio privilegiado.  Por ejemplo, acceso a archivos, a dispositivos, IPC,
> memoria ...
>

¿Y eso no pasa en Linux? ¿En que parte las funciones del kernel no se
brindan dentro del kernel en espacio privilegiado?

> Lo de los módulos es en este sentido "anecdótico", es la manera de cargar.
>  Es como en programas normales, no hay mucha diferencia entre carga dinámica
> y carga estática, en lo que hace a la arquitectura del programa.  La
> modularidad del kernel no lo hace más o menos monolítico.
>

Perdón, pero no es nada anecdótico. Una vez que un módulo está cargado
(técnicamente enlazado) está dentro del kernel en espacio
privilegiado.

> Mencioné fuse en el entorno de esta conversación, por dos cosas: una porque
> claramente está desarrollado fuera del kernel.  Es un ejemplo de lo que está
> en el kernel pero se desarrolla afuera (eso impacta en la autoría actual del
> kernel).
>
Parte de fuse está afuera,  pero otra parte está adentro. Hay un
módulo del kernel que interviene. Y si bien el acceso a filesystem es
una de las funciones principales, no es la única ni mucho menos. Tenés
el manejo de procesos, el manejo de memoria. En su momento, Linus no
estuvo de acuerdo con FUSE, y acá hay una discusión sobre las cosas
que no le gustan respecto al tema. [0]


> Definitivamente linux no es monolítico (a mi modo de ver) por lo que, aún
> con la definición que citabas de Wikipedia anteriormente, sí existe la
> distinción kernel/sistema operativo, lo que a su vez hace pertinente el
> comentario de Marcelo (tal vez discutible desde otro punto de vista, pero no
> por la vía de "aplastar" ambos conceptos para que sean uno).
>

En lo que a mi respecta, Linux es monolítico. La única función
relevante del kernel que se puede hacer en userspace es el acceso a
filesystems. Todas las demás se hacen en espacio privilegiado. Si una
parte de uno de los 5 subsistemas del kernel que corre en userspace lo
hace "híbrido" y no monolítico, me parece que estamos estirando mucho
el concepto de híbrido. Hasta ahora los ejemplos que me has dado han
sido a nivel de filesystem.
Me pareció interesante esto que dijo Linus acerca de los kernel híbridos:
"As to the whole "hybrid kernel" thing - it's just marketing.
It's "oh, those microkernels had good PR, how can we try
to get good PR for our working kernel? Oh, I know,
let's use a cool name and try to imply that it has all the
PR advantages that that other system has" [1]

Me gustaría que me dieras tu definición concreta de lo que es un
sistema operativo, y en que es diferente del kernel. Porque para no
quedarme con la wikipedia, estuve buscando información más académica,
y si bien no tengo ningún libro de Tanenbaum a mano, hay unas filminas
del libro "Modern Operating Systems"[2] donde en la introducción pone
al Sistema Operativo entre el Hardware y los compiladores, editores e
interfaz de comandos, y agrupa al sistema operativo y a las interfaces
como "Programas del Sistema", pero no como parte del sistema
operativo. Si bajo ese concepto kernel != sistema operativo, no se de
que estamos hablando. En otros lados e encontrado a las interfaces de
usuario (entorno gráfico, librerías, shell) como "Servicios del
Sistema Operativo", pero en una capa distinta, más como una distinción
de las aplicaciones que como parte del kernel, pero eso es mi opinión,
reconozco que puede ser interpretado de otras maneras.  Creo que
podemos estar de acuerdo, y es una definición clásica" que el sistema
operativo es "El programa o conjunto de programas que intermedia el
acceso entre dispositivos físicos y programas de aplicación" eso se
acerca más a lo que llamamos "kernel" que a otra cosa.


[0]http://yarchive.net/comp/linux/user_space_filesystems.html
[1]http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=2
[2]http://www.cs.vu.nl/~ast/books/mos2/
-- 
Enrique M. Verdes
http://www.elgallego.info

"Those who can give up essential liberty to obtain a little temporary
safety, deserve neither liberty nor safety” - Benjamín Franklin.

("Aquellos que están dispuestos a entregar sus libertades
fundamentales a cambio de un poco de seguridad temporal, no merecen
libertad ni seguridad”)


More information about the Uylug-varios mailing list