ESTRUCTURA Y COMPONENTES DEL SISTEMA
MICRO NUCLEO:
- El núcleo de Mach se encarga de las siguientes tareas:
o Administra la memoria.
o Controla la comunicación.
o Controla los servicios de E/S.
o La administración de la memoria se basa en los llamados objetos de memoria.
o Son estructuras de datos asociadas con el espacio de direcciones de un proceso. Al producirse un fallo de página puede enviar un mensaje a un servidor a nivel de usuario.
o La comunicación entre los procesos se realiza entre puertos que tienen asignados.
o En el espacio de usuario se controlan el resto de características de un sistema operativo como los archivos, directorios y otras funciones.
PRINCIPALES CARACTERÍSTICAS DEL DISEÑO:
• Operación multiprocesador: Mach fue diseñado para ejecutarse en un multiprocesador de memoria compartida de forma que tanto los hilos del núcleo como los hilos en modo usuario pueden ejecutarse en cualquier procesador. Mach proporciona un modelo multihilo para procesos de usuario, con entornos de ejecución llamados tareas.
• Extensión transparente para operar en red: Para permitir que los programas distribuidos se extiendan de forma transparente sobre mono y multiprocesadores en una red, Mach ha adoptado un modelo de comunicación independiente de la ubicación usando puertos como destino de la comunicación. El diseño de Mach confía en procesos servidores de red de nivel de usuario para el envío de mensajes de forma transparente sobre la red.
• Servidores de nivel de usuario: Mach implementa un modelo basado en objetos en el que los recursos se gestionan o bien por el núcleo, o bien mediante servidores cargados dinámicamente. Inicialmente solo se permitían servidores de nivel de usuario, pero posteriormente se adaptó Mach para acomodar servidores en el espacio de direcciones del núcleo. Con la excepción de algunos recursos gestionados por el núcleo, los recursos son accedidos de forma uniforme mediante paso de mensajes, independientemente de cómo sean gestionados.
• Emulación de sistema operativo: Para dar soporte a la emulación de nivel de usuario de UNIX y otros sistemas operativos, Mach permite la redirección transparente de las llamadas al sistema operativo sobre llamadas a una biblioteca de emulación y de ahí hacia los servidores del sistema operativo del nivel de usuario; a esta técnica se la conoce como trampolining.
• Implementación de memoria virtual flexible: Para dotar a Mach de la posibilidad de emular sistemas UNIX y dar soporte a otros subsistemas se realizó una aproximación flexible a la distribución del espacio de direcciones de un proceso. Mach soporta un espacio de direcciones grande y disperso, con capacidad potencial para contener múltiples regiones. Por ejemplo, tanto los mensajes como los archivos abiertos pueden aparecer como regiones de memoria virtual.
• Portabilidad: Mach fue diseñado para ser portable sobre varias plataformas hardware. Por esta razón, se trató de aislar, tanto como fue posible, el código dependiente de la máquina.
Principios de diseño
El sistema operativo Mach se diseñó para proporcionar algunos mecanismos básicos de los que carece la mayoría de los sistemas operativos actuales. El objetivo fue diseñar un sistema operativo compatible con BSD y además, sobresaliente en las áreas siguientes:
- Apoyar arquitecturas diversas, incluyendo multiprocesadores UMA, NUMA Y NORMA (No Remote Memory Access, sin acceso a memoria remota).
- Capacidad para funcionar con velocidades cambiantes en redes entre computadores, desde redes extendidas hasta redes locales de alta velocidad y multiprocesadores fuertemente acoplados.
- Estructura simplificada del núcleo, con pocas abstracciones; se supone que las abstracciones son suficientemente generales para que puedan usarse en la implantación de otros sistemas operativos sobre Mach.
- Operación distribuida para proporcionar a los clientes transparencia de la red, y una organización orientada a objetos, tanto interna como externamente.
- Administración de memoria y comunicación entre procesos integradas para proporcionar un mecanismo de memoria y comunicación directo y eficiente con una sola construcción.
- Apoyo a sistemas heterogéneos para que Mach sea ampliamente disponible y operante en sistemas de computación de fabricantes distintos.
Estructura de Mach Release 3.
Los diseñadores de Mach han tenido una gran influencia de BSD (y UNIX, en general), y los beneficios han sido:
- Una sencilla interfaz con el programador, con un buen conjunto de primitivas o servicios básicos, y un conjunto consistente de interfaces con los recursos del sistema.
- Fácil transportabilidad a una amplia gama de uniprocesadores.
- Una extensa biblioteca de utilerías y aplicaciones.
- La capacidad para combinar utilerías usando canales.
- Un núcleo que se había convertido en depósito de muchas características que con frecuencia eran redundantes y, por tanto, difíciles de administrar y modificar.
- Objetivos de diseño originales que hacían difícil proporcionar apoyo a multiprocesadores, sistemas distribuidos y bibliotecas de programa compartidas; por ejemplo, puesto que el núcleo estaba diseñado para uniprocesadores, no ofrecía capacidades para aplicar cerraduras a código o datos que podrían emplear otros procesadores.
- Demasiadas abstracciones fundamentales que ofrecían una gran cantidad de medios similares y conflictivos para lograr la misma tarea.
Estas áreas incluyen sistemas operativos, bases de datos, sistemas distribuidos confiables, lenguajes multiprocesador, seguridad e inteligencia artificial distribuida. En su presentación actual, Mach es por lo menos tan eficiente como las principales versiones de UNIX al efectuar tareas similares, y muchas veces es más rápido, una ventaja adicional que no habían contemplado los diseñadores.
Componentes del sistema
Para que Mach logre los objetivos establecidos, la funcionalidad del sistema operativo debe reducirse a un pequeño conjunto de abstracciones básicas. (Éste fue también uno de los objetivos originales de ub", pero desde entonces ha arnpliado su funcionalidad.) A partir de estas abstracciones, debe derivarse cualquier otra funcionalidad; de lo contrario, el núcleo estará incompleto. Recuerde que un núcleo debe ofrecer un medio para que los usuarios realicen su trabajo. Esto generalmente se transforma en el requisito de que deben ofrecerse los servicios básicos: ejecución de programas, operaciones de E/s, manipulación del sistema de archivos, asignación de recursos y protección. Por supuesto, cada sistema operativo tiene su propio enfoque para lograr esta funcionalidad; en Mach, es colocar lo menos posible dentro del núcleo, pero hacer que lo que ahí está sea lo suficientemente poderoso como para poder derivar todas las demás características.
La filosofía de diseño de Mach es contar con un núcleo sencillo y extensible, centrado en los recursos de comunicación. Por ejemplo, todas las solicitudes para el núcleo, y todo el movimiento de datos entre procesos, se manejan a través del mismo mecanismo de comunicación. Al limitar las operaciones de datos a un mecanismo, Mach puede ofrecer protección para sus usuarios protegiendo el mecanismo de comunicación. Es extensible, va que muchas de las funciones que tradicionalmente se basaban en el núcleo pueden implantarse como servidores a nivel de usuario. Por ejemplo, aunque se cuenta con un paginador, es posible implantar externamente otros paginadores que llama el núcleo cuando el usuario lo indica.
Para facilitar el diseño y la modificación, Mach está basado en un paradigma orientado a objetos. Los sistemas tradicionales tienen datos y operaciones que manipulan estos datos. Los sistemas orientados a objetos unen estos dos componentes en un solo objeto abstracto, donde las operaciones del objeto sólo pueden actuar sobre las entidades que en él se definen. Los detalles de cómo se implantan estas operaciones están ocultos, lo mismo que las estructuras de datos. De esta manera, sólo podemos usar un objeto invocando sus operaciones definidas, exportadas. Podemos cambiar las operaciones internas sin modificar la definición de la interfaz, lo que libera al programador para que lleve a cabo el perfeccionamiento requerido sin afectar otros aspectos operativos del sistema. El enfoque orientado a objetos que apoya Mach permite que los objetos residan en cualquier lugar de una red de sistemas Mach en forma transparente para el usuario. Analizaremos estas técnicas cuando veamos el mecanismo de puertos.
Las abstracciones primitivas que apoya Mach son las siguientes:
- Tarea: Se trata de un entorno de ejecución. Es la unidad básica de asignación de recursos y cuenta con espacio virtual de direcciones y acceso protegido a los recursos del sistema. Por lo general, una tarea está asociada a procesadores, puertos y memoria virtual.
- Hilo: Es la unidad básica de ejecución, así como el objeto de trabajo más pequeño, y se ejecuta en el contexto de una tarea. Comparte los recursos de la tarea con otros hilos de la misma tarea. En Mach no existe el concepto de "proceso"; más bien se implantaría un proceso tradicional como una tarea con un solo hilo de control.
- Puerto: Es el mecanismo básico de referencia a objetos en Mach. Toda la comunicación se lleva a cabo a través de puertos, canales de comunicación unidireccionales administrados y protegidos por el núcleo.
- Conjunto de puertos: Se trata de un grupo de puertos que comparten una misma cola de mensajes. Un hilo puede recibir mensajes para un conjunto de puertos, y así atender a varios. Este hilo usaría la identidad del puerto destino para identificar la función que se solicita.
- Mensaje: Es el método básico de comunicación entre hilos en Mach. Es una colección tipificada de objetos de datos, y puede contener los datos en sí, apuntadores a los datos o capacidades de puerto (para transferir los derechos de acceso a puertos a otro hilo).
- Objeto de memoria: Es un elemento en almacenamiento secundario para el cual existe una correspondencia con el espacio de direcciones de una tarea. Un ejemplo es un archivo administrado por un servidor, pero un objeto de memoria puede ser cualquier objeto para el cual puedan manejarse solicitudes de lectura y escritura, como lo es un canal en UNIX.
Pero, ¿cómo se relacionan la administración de memoria y la comunicación entre procesos (ipc)? La administración de memoria se lleva a cabo usando objetos de memoria. Un objeto de memoria está representado por un puerto (o varios), y los mensajes de comunicación entre procesos se envían al puerto para solicitar operaciones sobre el objeto. Puesto que se usa la ipc, los objetos de memoria pueden residir en sistemas remotos y lograr el acceso a ellos de manera transparente. A la inversa, las técnicas de administración de memoria se emplean para implantar la transmisión de mensajes. Ya hemos visto que los mensajes tienden a ocasionar un excesivo procesamiento adicional, y por lo general, son menos eficientes que, por ejemplo, la memoria compartida. Como Mach es un núcleo basado en mensajes, es importante que el manejo de mensajes se lleve a cabo con eficiencia.
Gran parte de la ineficiencia de los mensajes se debe a la copia de mensajes de un proceso a otro (si la transmisión se efectúa en un mismo computador) o la baja velocidad de procesamiento de la red (en el caso de mensajes entre computadores). En los sistemas UNIX surgen otras deficiencias de la analogía de sistemas de archivos sobre la que se basa la transmisión de mensajes en UNIX.
Para resolver estos problemas, Mach usa una nueva correspondencia de memoria virtual para la transferencia de mensajes de gran tamaño. Es decir, para transferir un mensaje entre dos tareas, Mach cambia el mapa de memoria de la tarea receptora para que incluya el área de memoria que contiene el mensaje en el espacio de direcciones del proceso emisor. Esta técnica evita copiar los datos .En el caso de mensajes entre anfitriones, se deben transferir los datos por la red; no obstante, los datos sólo se copian cuando se hace referencia a ellos. A esta técnica se le conoce como copia por referencia (o evaluación perezosa). Ya que los mensajes pueden ser tan grandes como el espacio de direcciones virtuales, este perfeccionamiento puede evitar la copia de miles de millones de bytes de datos en un mensaje. Aunque este Perfeccionamiento no se emplea actualmente en Mach, deberá estar disponible en próximas versiones.
Existen varias ventajas del enfoque de Mach:
- Mach ofrece a los programas de usuario mayor flexibilidad en la administración de memoria.
- El modelo es muy general, lo que permite su uso en computadores fuerte y débilmente acoplados.
- Se emplean puertos para hacer referencias a objetos, lo que añade un nivel de abstracción que puede usarse para implantar la migración de tareas.