martes, 30 de agosto de 2011

Estructura y Componentes Del Sistema

ESTRUCTURA Y COMPONENTES DEL SISTEMA

MICRO NUCLEO:

  • El núcleo de Mach se encarga de las siguientes tareas:
o Administra los procesos.
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.

2.19.2._Estructura_de_MACH_Release_3.0.JPG

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.
Por supuesto, se consideró que BSD presentaba varias desventajas que había que mejorar:
  • 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.
Debe destacarse que el desarrollo de Mach continúa siendo una tarea de grandes proporciones; no obstante, los beneficios que se pueden obtener de un sistema de este tipo también son considerables. El sistema operativo se ejecuta en muchas arquitecturas de uno o varios multiprocesadores actuales, y debe ser fácil el transporte a los que aparezcan en el futuro. Permite que los especialistas en computación realicen experimentos en varias áreas, sin tener que desarrollar sus propios sistemas operativos a la medida.
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.
Funcionalmente, son colas de mensajes. Invocamos una operación sobre un objeto enviando un mensaje al puerto asociado a ese objeto; el objeto representado por un puerto recibe los mensajes. Tanto el emisor como el receptor deben tener derechos de puerto para tener acceso al puerto. Por ejemplo, un emisor debe tener capacidad para enviar un mensaje a un puerto, de la misma manera que un receptor requiere capacidad de recepción para extraer mensajes de la cola.
  • 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.
Una característica poco usual de Mach, y una clave para su eficiencia, es su combinación de características de memoria y comunicación entre procesos. Mientras que otros sistemas distribuidos (como SunOS, con sus características NFS) cuentan con extensiones de propósito especial para que el sistema de archivos abarque toda una red, Mach ofrece una combinación extensible y de propósito general de la memoria y los mensajes en el corazón del núcleo. Esta característica no sólo permite usar Mach para la programación distribuida y en paralelo, sino también ayuda en la implantación del núcleo.

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.

Ventajas

VENTAJAS:
· Mayor sencillez de cada parte.
· Independencia y portabilidad del sistema operativo.
· Ejecución de varios sistemas operativos a la vez.
· Mayor seguridad (cada proceso tiene su propio sistema operativo. Difícil husmear ficheros del otro sistema.)

Historia de Mach

HISTORIA:

Por la época, a inicios de la mitad de los '80, varios proyectos estuvieron intentando resolver uno de estos problemas. Esto típicamente significó tomar un sistema operativo existente – a menudo BSD (UNIX)- modificando partes del mismo. Después de cada modificación el sistema operativo era compilado, la máquina reiniciada, y se probaba el nuevo cambio. 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 micronúcleo. En vez de tener todo el código para el sistema operativo en un gran programa único (llamado núcleo), la mayoría del código estaría ubicado en programas más pequeños conocidos como servidores, los cuales se ejecutarían como cualquier otro programa. El trabajo del núcleo se reduce esencialmente en "ser" el sistema operativo, a mantener los servidores y programar su acceso al hardware.

En teoría esto significa que los cambios al S.O. requerirían nada más que una recarga de ese único programa servidor, concepto opuesto a reconstruir el Sistema Operativo y reiniciar la máquina. Solo trabajar en el núcleo Mach en sí mismo requeriría un reinicio, y en teoría eso debería ser un hecho inusual.

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

Con POE ejecutándose (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 núcleo (una operación 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 década siguiente, el trabajo se orientó 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 ese 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.

En la actualidad A finales del siglo XX se ha pensado que el Mach asumiría lentamente el control del universo entero de sistemas operativos, pero esto no ha sucedido. Quizás la razón más grande del fracaso de Mach puede ser la "holgazanería": a todos les parecía 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 de atraso. Varios sistemas operativos propietarios han sido más acertados, incluyendo QNX que parece cumplir todas las promesas de Mach's.

El trabajo sobre Mach se llevó durante varios años en la CMU, para quedar finalmente inactivo cuando muchos de los desarrolladores dejaron la academia para trabajar en la industria. Mach fue brevemente revivido en la Universidad de Utah a mediados de los 90s y produjo el Mach 4 que tenía 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 núcleo (lo que evita así intercambios de contexto) lo que dio lugar a un rendimiento razonable mientras que todavía conservaba las ventajas del multiprocesamiento y de un modelo de hilos fácil de usar. Sin embargo incluso estas ventajas se han erosionado tanto como el hecho de que varios vendedores de Unix que han trabajado para proporcionarlas en sus propios productos.

Mach

MACH
Mach es un núcleo de sistema operativo desarrollado en la Carnegie-Mellon University (CMU) para soportar la investigación de sistemas operativos, principalmente 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 características en común, o son deseadas si es que no las tienen aún.

OBJETIVOS:
w Base para la construcción de otros sistemas (UNIX).
w Espacio de direcciones de gran tamaño.
w Acceso transparente a los recursos de la red.
w Paralelismo del sistema y las aplicaciones.
w Escalabilidad (transportar mach a un número más grande de máquinas).
w Soporte para múltiples aplicaciones usando multitarea.
w Hilos, los cuales pueden ser pensados como las partes de una aplicación, o mini-aplicaciones cuando hay multitarea.
w Soporte multiprocesadores, en una máquina única o sobre una red.
w Comunicaciones interprocesos, enviando mensajes directamente entre aplicaciones.
w Protección y seguridad de memoria.
w La emulación del sistema operativo se lleva a cabo en el espacio del usuario.

lunes, 22 de agosto de 2011