Mach

GNU Mach es el microkernel oficial del Proyecto GNU. Como cualquier otro microkernel, su función principal es realizar labores mínimas de administración sobre el hardware para que el grueso del sistema operativo sea operado desde el espacio del usuario.

En la actualidad el GNU Mach sólo funciona en máquinas de arquitectura intel de 32 bits (IA32) y su uso más popular es servir de soporte a Hurd, el proyecto que pretende reemplazar a los kernel tipo Unix en los sistemas operativos libres del GNU. Sin embargo, desde el año 2002 los esfuerzos de la Fundación del Software Libre se encaminan hacia la adopción del OSKit Mach como microkernel oficial.


Mach kernel

Mach es un proyecto de diseño de sistemas operativos iniciado en la Universidad Carnegie Mellon con el objetivo de desarrollar un microkernel.


Mach es un kernel de sistema operativo desarrollado en la Carnegie-Mellon University (CMU) para soportar la investigación de sistemas operativos, primariamente computación distribuida y paralela. El proyecto en CMU se ejecutó desde 1985 hasta 1994.

Mach se desarrolló con la premisa de que todos los sistemas operativos modernos comparten una serie de caracteristicas en común, o son deseadas si es que no las tienen aún.. Estas incluyen:

• soporte para multiples aplicaciones usando multitarea

• hilos, los cuales pueden ser pensados como las partes de una aplicación, o mini-aplicaciones cuando hay multitarea

• Soporte multi-procesadores, en una máquina única o sobre una red.

• Comunicaciones interprocesos, enviando mensajes directamente entre aplicaciones

• Proteccion y seguridad de memoria

Por la época, a inicios de la mitad de los 80s, varios proyectos estuvieron intentando resolver uno de estos problemas. Esto típicamente significó tomar un sistema operativo existente – a menudo BSD (UNIX)- y modificando partes del mismo. Luego de cada modificación el sistema operativo era compilado, la máquina reiniciada, y el nuevo cambio era probado. Había una serie de problemas con este enfoque, incluso los más insignificantes causarían que la máquina entera se colgara.

Mach explora el concepto al que ahora nos referimos como microkernel. En vez de tener todo el código para el sistema operativo en un gran programa único (llamado kernel), la mayoría del código estaría ubicado en programas más pequeños conocidos como servidores, los cuales se ejecutarian como cualquier otro programa. El trabajo del kernel era reducido de esencialmente "ser" el sistema operativo, a mantener los servidores y programar su acceso al hardware.

En teoría esto significa que los cambios al SO requeririan nada más que una recarga de ese único programa servidor, opuesto a reconstruir el SO y reiniciar la máquina. Solo trabajar en el kernel Mach en si mismo requeriria un reinicio, y en teoría eso deberia ser un hecho inusual.


Mach no es un sistema operativo en si mismo, y es bastante inútil sin un conjunto de servidores – y estos servidores no existen. De modo que para obtener un sistema útil y ejecutandose, los autores de Mach portaron el Unix BSD al kernel Mach de forma rápida y cutre: en vez de separar BSD en distintas partes y construir cada una de ellas como un servidor, simplemente compilaron el kernel entero en un servidor y lo ejecutaron. El resultado era conocido como POE.

Con POE ejecutandose (efectivamente) entre las otras aplicaciones, el rendimiento fue pésimo. Cada llamada de una aplicación de usuario, digamos para obtener la hora, requería que el mensaje fuera enviado al kernel (una operacion simple conocida como cambio de contexto), el cual enviaría el pedido a la librería Unix con otro cambio de contexto y luego repetir todo de nuevo para la respuesta... Sin embargo, Mach, a pesar de que no era un fallo propio, era considerado muy poderoso, pero increíblemente lento.

Durante la próxima década el trabajo será orientado a mejorar el funcionamiento de estos mensajes varias veces, hasta el punto de que el rendimiento de estos sistemas operativos basados en Mach fuera a menudo mejor que el de los BSD en los que estaban basados. Sin embargo por este tiempo el mundo académico había perdido en gran parte interés en la investigación de SSOO, y la promesa de Mach's siguió sin cumplirse.

Actualmente se ha pensado que el Mach asumiría lentamente el control del universo entero de sistemas operativos, pero ésto no ha sucedido. Quizás la razón más grande del fracaso de Mach puede ser la "holgazanería": a todos les parecia que era el trabajo de otro entregar la biblioteca basada en el SO, y no lo hizo nadie. El esfuerzo más grande hasta la fecha es GNU Hurd, pero GNU Hurd está ahora alrededor de una década atrasado. Varios sistemas operativos propietarios han sido más acertados, incluyendo QNX que parece cumplir todas las promesas de Mach's.

El trabajo sobre Mach ocurrió por varios años en la CMU, para quedar finalmente inactivo cuando muchos de los desarrolladores dejaron la academia para trabajar en la industria. El Mach fue brevemente revivido en la Universidad de Utah a mediados de los 90s y produjo el Mach 4 (http://www.cs.utah.edu/flux/mach4/html/Mach4-proj.html) que tenia mejoras significativas, antes de otra vez volverse inactivo.

Mientras tanto varios vendedores tomaron enfoques prácticos para usar Mach. La capa del BSD (y otras) fue ejecutada directamente dentro del kernel (lo que evita así intercambios de contexto) lo que dio lugar a un rendimiento razonable mientras que todavía conservaba las ventajas del multi-procesamiento y de un modelo de hilos fácil de usar. Sin embargo incluso estas ventajas se han erosionado tanto como los varios vendedores de Unix que han trabajado para proporcionarlas en sus propios productos

Los sistemas operativos basados en este concepto del Mach fueron OSF/1, NeXTSTEP, e IBM OS/2 para las máquinas basadas en RS/6000 – todos los cuales ya no son usadas ampliamente. Otros sistemas operativos querían migrar a esta clase de sistema también, como Pink de Apple, Workplace OS de IBM y varios mas.

Apple seleccionó OPENSTEP para ser la base para el sucesor de su clásico Mac OS. Se convirtió en API Cocoa Mac OS X. OPENSTEP es de hecho una versión actualizada de NeXTSTEP, que utilizó el Mach 2.5. Como tal, el amalgama de Mach/BSD de OPENSTEP es la base para el sistema operativo Mac OS X de Apple.

El desarrollador líder en el proyecto Mach, Richard F. Rashid, ha estado trabajando en Microsoft desde 1991 en las varias posiciones a nivel superior en la división de la investigación de Microsoft, Microsoft Research. El Windows NT de Microsoft, precursor del Windows XP actual, comenzó con un modelo basada en un microkernel similar al de Mach. Otro de los desarrolladores originales de Mach, Avie Tevanian, fue antes jefe de software en NeXT y hoy es Director de la Oficina de Tecnología de Software en Apple.



Fuente: Wikipedia.org