[eside-ghost] linux vs mach

Germán Carrera germanlistas en terra.es
Mie Sep 28 11:49:34 CEST 2005


Hola!

A mi me parece que los sistemas operativos pocas veces han seguido un 
diseño basado en lo que tradicionalmente se conoce como ingeniería del 
software,  sino bajo las demandas que había en ese momento.

(Si me equivoco que es bastante probable que alguien me corrija).

Por ejemplo, en el caso de UNIX en los laboratorios BELL era necesario 
trasladar el código del sistema de un PDP que se encontraba en el piso 
de abajo hasta uno que se encontraba en un piso superior como tenían 
problemas (físicos) para hacerlo desarrollaron un especie de protocolo 
de red y tiraron cable de un piso a otro. Lo que quiero explicar es que 
el protocolo en este caso se desarrolló para una función concreta y bajo 
una demanda y no porque existiera un diseño previo.

En el caso de Mach, la DARPA (a finales de los 70) que es algo así como 
la agencia de seguridad de los USA (ejercito en pocas palabras) tenía en 
mente usar algún sistema multiprocesador y financió en un universidad 
unos experimentos que habían realizado en cuestiones de sincronización y 
paso de mensajes ya que era necesario para comunicar los diferentes 
procesos. Al ser un sistema multiprocesador menos acoplado se decidió 
que ciertos elementos (servidores) deberían poderse egestionar desde 
diversas partes físicas del sistema. Aunque el desarrollo de los 
microkernels quizá se pueda explicar mejor  con los sistemas operativos 
de máquina virtual.

Resumiendo,  las necesidades son las que hacen ser a un sistema 
diferente de otros y las que les dan nuevas características (STR, 
sistemas de red...etc). Si el fin es didáctico y quieres aprender yo 
haría algo tipo microkernel que sea facilmente ampliable (sin tener en 
cuenta el rendimiento) y para que el diseño quede mejor o por lo menos 
algo diferente usaría un lenguaje orientado a objetos.

Una buena opción sería usar el gjc http://gcc.gnu.org/java/ (exceptuando 
la parte relativa a código en ensamblador) compilar el código de forma 
nativa a la máquina y lo mismo se podrían hacer virquerías como añadir 
servidores  al microkernel  generados en  .class, usar un sistema de 
procedimientos remotos que ya exista tipo RMI o CORBA,...o bueno se te 
pueden ocurrir muchas cosas.

Ah, y linux no es mejor ni peor que mach cada uno tiene sus pros y sus 
contras, en este caso Linux es mucho más usado pero Mach tiene unos 
cuantos clones comerciales (y alguno que no) que están más o menos 
extendidos.

Saludos!

EthDra escribió:

> Hola!
>    Continuo con el desarrollo del SO, y poco a poco me empieza a 
> surgir la necesidad de definir la arquitectura, y no me puedo decidir, 
> asi que os reenvio la pregunta a vosotros, que preferis? monolitico 
> (kernel linux) o microkernel (mach).
> Ambos tienen sus ventajas e inconvenientes. El monolitico es mas 
> rapido, no tiene que pasar mensajes entre procesos, es mas facil de 
> desarrollar, dentro de lo que cabe, claro. En cambio el microkernel es 
> mas elegante, permite mejores diseños, esta todo mas separado, es mas 
> fiable, un caske de un proceso del kernel no arrastra a todo el kernel.
> Que opinais? (plis, dejad al menos algun mensaje coherente antes de 
> empezar la flame war :P)
>
> Se despide,
>    EthDra
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>



Más información sobre la lista de distribución eside-ghost