Historia del sistema operativo MACH


Historia


PRIMERA PARTE


Las primeras raíces del sistema operativo Mach se remontan a un sistema llamado RIG (Rochester Intelligent Gateway), que comenzó en la Universidad de Rochester en 1975.

RIG fue escrito para una mini-computadora llamada Eclipse de la marca Data General de 16 bits. Su principal objetivo de investigación era demostrar que los sistemas operativos podían estructurarse de forma modular, como una colección de procesos que se comunicaban mediante la transmisión de mensajes, incluso a través de una red.

El sistema llamado "puerta de enlace inteligente" (RIG - Rochester's Intelligent Gateway) de la Universidad de Rochester proporcionaba un acceso conveniente a una amplia gama de instalaciones informáticas.

El sistema incluía cinco mini-computadoras en una red interna muy rápida, almacenamiento en disco y cinta, una impresora / plotter y varias terminales de pantalla. Estos estaban conectados a máquinas del campus más grandes (IBM 360/65 y DEC KL10) y al ARPANET

Nota: La Universidad de Rochester ha tenido varios años de experiencia en el diseño e implementación de un sistema distribuido de múltiples máquinas y múltiples redes llamado RIG. Este fue diseñado como un entorno informático de investigación de última generación para admitir una variedad de aplicaciones distribuidas. La investigación de sistemas distribuidos incluye investigaciones sobre arquitecturas entre redes, comunicación entre procesos, sistemas de archivos distribuidos, control distribuido, monitoreo del rendimiento, manejo de excepciones, depuración e interfaces de usuario. RIG fue diseñado para una colección de máquinas heterogéneas, interconectadas por redes de características variables. Representa uno de los primeros y más completos intentos de diseñar un sistema operativo distribuido y de admitir la arquitectura de red desde cero.

Cuando uno de sus diseñadores, Richard Rashid, dejó la Universidad de Rochester y se mudó a la Universidad de Carnegie-Mellon en 1979, quiso continuar desarrollando sistemas operativos de transmisión de mensajes pero en hardware más moderno.

La máquina seleccionada fue la PERQ, una estación de trabajo de ingeniería temprana, con una pantalla de mapa de bits, mouse y conexión de red. El sistema operativo utilizado en ese momento fue Accent, un sistema operativo desarrollado en la Universidad de Carnegie Mellon como seguimiento y mejora del nucleo Aleph (kernel-Aleph) desarrollado en Rochester para el RIG.

Este nucleo incluia mejoras en el RIG al agregar protección, la capacidad de operar de manera transparente a través de la red, memoria virtual de 32 bits y otras características. Una versión inicial estaba en funcionamiento en 1981. 

En 1984, Accent se estaba utilizando en 150 computadoras PERQ pero claramente estaba perdiendo ante Unix. Esta observación llevó a Rashid a comenzar un proyecto de sistemas operativos de tercera generación llamado Mach.

Aunque Accent fue pionero en una serie de novedosos conceptos del sistema operativo, su utilidad estaba limitada por su incapacidad para ejecutar aplicaciones Unix y sus fuertes lazos con una sola arquitectura de hardware, que dificultó su portabilidad.


SEGUNDA PARTE


El sistema de comunicación y la filosofía de Mach son derivados de Accent, pero muchas otras partes significativas del sistema fueron desarrollados desde cero (por ejemplo, el sistema de memoria virtual y la gestión de tareas e hilos-pipes). Un objetivo importante del esfuerzo de Mach fue el desarrollo para multi-procesadores.

Al hacer que Mach fuera compatible con Unix, esperaba poder utilizar un gran volumen de software de Unix que ya estaba disponible. Además, el sistema operativo Mach tenía muchas otras mejoras sobre Accent, incluidos los pipes, un mejor mecanismo de comunicación entre procesos, soporte multiprocesador y un sistema de memoria virtual.

Alrededor de este tiempo, DARPA, la Agencia de Proyectos de Investigación Avanzada del Departamento de Defensa de EE. UU., Estaba buscando un sistema operativo que admitiera multi-procesadores como parte de su Iniciativa de Computación Estratégica.

Se seleccionó a la Universidad de Carnegie Mellon con una importante financiación de DARPA para desarrollar el sistema operativo Mach. Inicialmente, Mach consistía en una versión modificada de la 4.1 BSD con características adicionales insertadas para la comunicación y la gestión de la memoria.

Cuando la version 4.2 BSD y 4.3 BSD estuvieron disponibles, el código Mach se combinó con ellos para dar versiones actualizadas. Aunque este enfoque condujo a un núcleo grande, garantizó una compatibilidad absoluta con el Berkeley Unix, un objetivo importante para DARPA. 

La primera versión de Mach se lanzó en 1986 para el VAX 11/784, un multi-procesador de cuatro CPU. Poco después, se transfirio a la IBM PC / RT y Sun 3. En 1987, Mach también se estaba ejecutando en los multiprocesadores Encore y Sequent.

Aunque Mach tenía instalaciones de red, en ese momento se concibió principalmente como una sola máquina o sistema multi-procesador en lugar de como un sistema operativo distribuido transparente para una colección de máquinas en una LAN.

Poco después, se forma la Open Software Foundation, un consorcio de proveedores de computadoras liderado por IBM, DEC y Hewlett Packard en un intento de arrebatar el control de Unix de su propietario, AT&T, que se encontraba trabajando estrechamente con Sun Microsystems para desarrollar el Sistema V (Versión 4) de Unix.

Los miembros de la OSF temían que esta alianza le diera a Sun una ventaja competitiva sobre ellos. Después de algunos pasos en falso, OSF eligió Mach 2.5 como base para su primer sistema operativo.

Aunque Mach 2.5 y OSF / 1 contenían grandes cantidades de código de Berkeley y AT&T, la esperanza era que OSF al menos pudiera controlar la dirección en la que se dirigía Unix. 

A partir de 1988, el núcleo Mach 2.5 era grande y monolítico, debido a la presencia de una gran cantidad de código del Berkeley BSD en el núcleo.

En 1988, la Universidad de Carnegie Mellon eliminó todo el código de Berkeley del núcleo y lo colocó en el espacio del usuario. Lo que quedaba era un micro-kernel que consistía en un sistema operativo Mach puro (la version de Mach 3.0).


Estructura del sistema operativo Mach


El sistema operativo Mach fue diseñado para incorporar las muchas innovaciones recientes en la investigación de sistemas operativos para producir un sistema técnicamente avanzado y totalmente funcional. 

Mach incorpora soporte de multi-procesamiento en todo el cual es extremadamente flexible y abarca desde sistemas de memoria compartida hasta sistemas sin memoria compartida entre procesadores.

Mach es un núcleo del sistema operativo desarrollado en la Universidad Carnegie-Mellon para apoyar la investigación del sistema operativo, principalmente computación distribuida y paralela. El proyecto en CMU se ejecutó entre 1985 y 1994.

Se consideraron varios factores al hacer el sistema operativo Mach, siendo importante que el sistema operativo fuera:

  • Multiusuario y multitarea.
  • Compatible con la red.
  • Un excelente entorno de desarrollo de programas.
  • Bien representado en la comunidad universitaria, de investigación y empresarial.
  • Extensible y robusto.
  • Capaz de proporcionar espacio para el crecimiento y futuras extensiones.

Mach hace mas pequeño el tamaño del núcleo, moviendo la mayoría de los servicios del núcleo a procesos de nivel de usuario. El núcleo en sí contiene solo los servicios necesarios para implementar un sistema de comunicación entre varios procesos a nivel de usuario. 

Mach divide la noción tradicional de Unix de un proceso en dos abstracciones, la tarea y el hilo. 

  1. Una tarea es el entorno dentro del cual ocurre la ejecución del programa. 
  2. Un hilo es la unidad básica de ejecución. Es un proceso ligero que se ejecuta dentro de una tarea, y consiste únicamente en el estado del procesador, como el contador del programa y los registros de hardware necesarios para una ejecución independiente.

En el sistema operativo Mach, la comunicación entre los objetos se logra a través de mensajes. La mensajería de Mach se implementa mediante tres abstracciones de kernel: The Port, The Port Set y The Message.

El principal objetivo del sistema operativo fue:

  • Proporcionando funcionalidad de comunicación entre procesos a nivel del núcleo y usándola como un bloque de construcción para el resto del sistema.
  • Soporte de memoria virtual proporcionado por el núcleo y por los servidores de nivel de usuario.
  • Soporte de nivel de núcleo para hilos livianos.
  • Soporte para multi-procesadores acoplados estrechamente y sin apretar y una variedad de estaciones de trabajo disponibles comercialmente.
  • Arquitectura de micro-kernel que limita las funciones compatibles con el micro-kernel y permite que múltiples servidores de nivel de usuario admitan varias interfaces de aplicaciones y programación
  • Mantener al menos una API de estilo Unix para permitir que el sistema Mach admita todos los usos cotidianos de los miembros del proyecto y otros investigadores.
  • Distribuir esta tecnología a otros investigadores y sitios comerciales para usar como base para futuras investigaciones o productos.

El proyecto del sistema operativo Mach en Carnegie-Mellon se dejo de desarrollar en octubre de 1994.

La fundación Open Software y la Free Software Foundation con el sistema HURD continuaron su desarrollo junto con otras universidades. (proyecto Flexmach de la Universidad de Utah - el sistema LITES de la Universidad Tecnológica de Helsinki).

Despues de que CMU dejara el proyecto lo retoma la Universidad de Utah. El grupo FLUX comenzó el proyecto Mach 4. Un ambicioso proyecto que incluyó la reescritura completa del código de soporte x86 y la integración de controladores Linux 2.0. Así es, Linux inicio alrededor de 1991, por lo que esto se hace apx. 1994.

GNU Mach esta basado en Mach 4 de la Universidad de Utah, que a su vez se basa en Mach3 de la Universidad Carnegie-Mellon. La última versión de Mach 4 fue la versión UK22.


 Otros Links interesantes



 Documentos