[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
Thu Apr 26 05:47:39 PDT 2012


Se puso bueno!!!

>
> Bárbaro, pero ¡ahí tenés el ejemplo que buscabas!  El hecho es que está,
> es que hay *una* (por lo menos) función del kernel, que tampoco es una
> función menor, que está afuera del kernel y para el propio Linus no
> debería estar ahí.  Eso para mí te saca de lo monolítico puro y duro.
> Si querés lo dejamos en "mayormente monolítico", no es grave para mí el
> nombre (Linus también dijo que los híbridos no existen y es una cosa de
> marketing), pero eso que traés justamente apoya mi reticencia a
> considerarlo totalmente monolítico.

El ejemplo lo entendí, y mi reticencia a considerarlo como
determinante es justamente que es una parte de una parte. Ext3, Ext4,
xfs, jfs, todavía están dentro del kernel. Y según tengo entendido,
por ejemplo, no formateas una partición con ssshfs, es una capa de
abstracción más. No digo que no esté bueno ni sea superpoderoso.
Simplemente que no me parezca que lo haga híbrido.

>
> Dicho sea de paso, que Linus piense lo que quiere, pero manejar discos
> en varias máquinas a la vez con sshfs, ftp y smbfs desde el gfvs de
> Gnome ... me hace pensar que las ventajas de fuse sobrepasan largamente
> a los problemas posibles.  Porque además mientras tanto hacen el lessfs,
> por ejemplo, o sea, no está agotado en lo más mínimo.

Con eso fué que lo convencieron de que lo aceptara. Lamentablemente no
pude encontrar la referencia, pero recuerdo haber leído hace algún
tiempo, probablemente en alguna Linux Journal, que Linus se negaba a
aceptar FUSE y que Andrew Morton lo convenció de que era buena idea
sobre todo en lo referente a facilitar la portabilidad, y que al final
lo aceptó, pero que no le gusta. Repito, no estoy juzgando si es bueno
o malo, simplemente que no me alcanza para considerarlo híbrido (o sea
parte monolítico, parte microkernel).

> Los filesystems son tan importantes, que hasta el manejo de memoria que
> ponías se puede ver afectado, como ya discutimos en otro hilo,
> simplemente poniendo un swapfile en un filesystem que no esté
> enteramente controlado por el kernel.
>
> Pero de tu lista, ¡ni siquiera el manejo de procesos se salva seguro!
> OOM (el sacrificio de un programa para liberar memoria cuando ya no
> queda y se usó más de la disponible) es una función de manejo de
> procesos, la hace el kernel.  Peeeero, la solución pasaría por llevarla
> a espacio de usuario[1][2].  Y tiene su lógica sacar eso del kernel.

>
>> 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.
>
> Bien.  Puntos de vista.  Yo no puedo ignorar DRI/DRM.  ¿No es el acceso
> directo a los dispositivos una función exclusiva del kernel?  DRM te da
> acceso desde espacio de usuario.  Eso ya serían dos funciones.  O
> esperar al OOM en userspace.
>
> Por otro lado, el manejo del networking, ¿es del kernel o no?  Porque si
> lo es, entonces algo en tun/tap huele raro también.  No digo que sea una
> tercera función compartida con userspace, pero ... da para pensar.
>
Otro driver del kernel? Sigo sin verlo como funcionalidad o capacidad
del kernel que se hace "afuera del kernel" sino como partes que se
exponen hacia userspace, que sin duda lo hacen superflexible y
poderoso.


Me tuviste pensando en esto todo el camino desde la facultad a casa ;-)
Te pregunto lo siguiente, ¿puedo compilar el kernel sin FUSE, soporte
a tun/tap y todo lo demás que mencionás? Y no quiero entrar en si es
mejor o peor. Simplemente entender si un kernel sin todas esas cosas
que lo harían híbrido sigue funcionando igual. En ese caso, la
"hibridez" depende de la configuración al compilar. La verdad es que
no me alcanza para considerarlo híbrido. Pero bueno, diría que son
maneras de ver.

>> 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
>
> ¡Me estás matando!  Te podría pedir lo mismo, ¿no?  :)  Como puse al
> principio, intuitivamente entiendo que no es lo mismo kernel y sistema
> operativo, de ahí veníamos.  No puedo argumentar mucho más que lo que ya
> hice.  Si me apretás contra la pared y no puedo salir ;) te diría que se
> trata de espacios de memoria y ejecución privilegiada.  Y hay tareas que
> necesitan una mitad en espacio de kernel y otra en espacio de usuario
> para tener sentido.  Digamos que la mitad de afuera del kernel es parte
> del sistema operativo, pero no del kernel.

No pretendo matarte en absoluto, solo entender cual es tu concepto y
desde donde lo construis, porque me parece que estamos parados en
distinto lado.
>
> Concreto: fuse es kernel, zfs-fuse no lo es.  Los dos están en el
> sistema operativo.  El kernel por sí sólo es ligeramente estéril,
> necesita de acompañamiento, de nada sirve manejar una tarjeta de red si
> no podés asignarle una dirección.  ifconfig no es parte del kernel, pero
> sí del sistema operativo.  Como esa hay otras "aplicaciones" cuya única
> función es hablar con el kernel o con estructuras del kernel.  Esas son
> del sistema operativo, no del kernel en sí.
>
> Esa distinción me ayudó a entenderlo cuando desarrollaba en el kernel,
> me ayuda a entender ahora algunas cosas.  Pero de repente eso responde a
> mi "modelo mental" que, aún brindando explicaciones correctas, puede no
> corresponderse con la realidad.
> La duda aparece en lo que es un programa de aplicación, es el borde lo
> que es borroso.  Y en general terminás dando círculos, haciendo que lo
> que es de aplicación es lo que no está en el kernel.  El servidor X, ¿es
> aplicación?  Con el nivel de charla que tiene directamente con el
> hardware gráfico ... es difícil verlo así, en alguno de sus módulos al
> menos.
>

Ahí me parece que está el "nucleo" del asunto. A esa frontera entre el
kernel, y lo que usas para interactuar directamente con el. Yo me
pongo arriba de la interfaz con userspace, y digo "lo que está abajo
es el sistema operativo y lo de arriba son las aplicaciones". Vos te
parás un poco más arriba y decís, "sin estas aplicaciones el sistema
operativo me sirve para muy poco, entonces para mi lo que está más
abajo es kernel, y con estas aplicaciones es el sistema operativo"
Como vos decís, es la frontera borrosa que vos mencionás.
¿Entiendo bien o estoy muy errado?

>
> Eduardo.
>
> [1] http://alouche.net/2010/07/11/linux-kernel-out-of-memory-management/
> [2] http://www.odi.ch/weblog/posting.php?posting=592
> _______________________________________________
> Uylug-varios mailing list
> Uylug-varios at listas.uylug.org.uy
> http://listas.uylug.org.uy/listinfo.cgi/uylug-varios-uylug.org.uy



-- 
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