[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