Estado del Arte de Sistemas Operativos
Introducción
En esta sesión hablaremos de 5 sistemas operativos distribuídos:
-
Mach: sistema de punta con un diseño flexible de memoria
virtual.
-
Chorus: sistema de punta con diseño microkernel.
-
Emulación Unix sobre Mach y Chorus.
-
Amoeba: sistema experimental en el que los objetos son protegidos
por capacidades.
-
Clouds: sistema cuyo principal objetivo es soportar el uso de objetos
distribuidos.
Mach
-
Proyecto de Carnegie Mellon, 1986.
-
Objetivos iniciales:
-
Compatibilidad con Unix BSD.
-
Proveer de facilidades avanzadas en el núcleo.
-
La versión 2.5 fué usada como base para OSF/1.
-
La versión 3 eliminó el código Unix del núcleo:
emulación.
-
Corre en 386, 486, DECstations, SPARCstations.
Características
-
Operación con máquinas paralelas con memoria compartida.
-
Extensión transparente a operación en red.
-
Servidores a nivel usuario. Los recursos son manejados a través
de mensajes a puertos.
-
Emulación de sistemas operativos.
-
Implementación flexible de memoria virtual. Paginadores externos
pueden manejar la memoria.
-
Portabilidad. El código dependiente de máquina ha sido aislado.
Abstracciones Mach
-
Puertos. Canal de comunicación unidireccional que tiene asociada
un buffer. Se pueden enviar o recibir mensajes a través de ellos.
-
Conjuntos de puertos. Puertos a los que una tarea puede accesar.
-
Tareas. Medio de ejecución que contiene un espacio de direcciones
protegidas, y una colección de capacidades para accesar puertos.
-
Hilos. Las tareas consisten de hilos que pueden ejecutarse en paralelo
en diferentes procesadores de una máquina con memoria compartida.
-
Mensajes. Datos o peticiones de accesar recursos.
-
Dispositivos. Son accesados a través de interfases de bajo
nivel exportadas por el núcleo.
-
Objetos memoria. Instancia de un tipo de datos abstracto.
-
Objetos memoria cache. Por cada objeto memoria, hay un objeto en
el núcleo que contiene un cache de las páginas residentes
en memoria.
Puertos en Mach
-
Los puertos sirven para accesar recursos.
-
Hay 3 tipos diferentes de derechos para accesar un puerto:
-
Envío.
-
Envío una sóla vez.
-
Recepción.
-
En un puerto, a lo mucho una tarea posee derecho de recepción, pero
varias pueden poseer derechos de envío.
Tareas e hilos en Mach
-
Las tareas son sólo medios de ejecución: sólo los
hilos en ellaspueden ejecutar operaciones.
-
El modelo de creación de una tarea es una extensión del fork()
de Unix: a través de una tarea blueprint localizada en el
procesador deseado.
-
Cuando un hilo es creado, se le asigna un puerto para accesar el núcleo.
-
Cuando un hilo sufre una excepción, recibe un mensaje por un puerto
dedicado a ese fin.
Modelo de comunicación de Mach
-
Un mensaje está compuesto de un encabezado de tamaño fijo,
seguido por una lista variable de datos:
-
El encabezado está compuesto de:
-
Puerto destino.
-
Puerto respuesta.
-
Identificador de operación.
-
Tamaño de la lista de datos.
-
Cada dato en la lista puede ser:
-
Datos tipados.
-
Derechos sobre puertos. El receptor adquiere losderechos.
-
Apuntadores a datos.
-
El envío y recepción de mensajes puede ser bloqueante o no,
o usar temporizadores:
mach msg(header, option, snd siz, rcv siz, rcv name, timeout, notify)
-
Los puertos tienen asociados buffers cuyo tamaño puede ser ajustado.
-
Un intento de enviar un mensaje por un puerto cuyo buffer está lleno,
bloquea al hilo.
-
Los mensajes pueden ser recibidos en conjunto de puertos: se evita el poleo.
-
El sistema de comunicación es confiable y da los mensajes en orden.
-
Se usan servidores de red que corren a nivel usuario.
-
Un puerto de red permite enviar o recibir mensajes de computadoras conectadas
en red:
-
Los puertos de red manejan TCP/IP.
Manejo de memoria en Mach
-
Mach ve la memoria como una colección de grupos contiguos de páginas
o regiones.
-
Cuando una tarea es creada, se hereda memoria de la tarea blueprint. Esta
herencia es compartida o copiada.
-
La técnica usada para copiar memoria es llamada copyonwrite:
las páginas son copiadas sólo cuando son modificadas.
-
El micronúcleo de Mach no soporta archivos, por lo que se usan paginadores
externos.
Las funciones del paginador externo son:
-
Guardar datos eliminados por el núcleo de su cache.
-
Proporcionar páginas requeridas por el núcleo.
-
Imponer restricciones para mantener la consistencia de datos.
Protocolo núcleo (K)paginador (EP):

Conclusión Mach
+ Corre en computadoras secuenciales y paralelas en red.
+ Mantiene compatibilidad Unix.
Utilización compleja del núcleo.
? Uso del espacio de usuarios para implementar las comunicaciones.
? Uso del espacio de usuarios para implementar servidores.
Chorus
-
Proyecto del INRIA, 1979.
-
Version 3 con emulación de Unix BSD: Chorus/MiX.
-
Modelo: red de computadoras monoprocesadoras y multiprocesadoras.
-
Corre en 386, Motorola 68030 y 88000, Transputers.
Características comunes con Mach
-
Operación con máquinas paralelas con memoria compartida.
-
Microkernel, paso de mensajes.
-
Extensión transparente a nivel red.
-
Emulación Unix y otros SOPs.
-
Implementación flexible de memoria virtual.
-
Portabilidad.
Características adicionales
-
Servidores no necesariamente en nivel usuario.
-
Emulación Unix con mejoras.
-
Servidores de grupos y reconfiguración.
-
Sistemas Tiemporeal.
Abstracciones Chorus
-
Actores. Equivalente al concepto de tarea en Mach: medio de ejecución
compuesto de hilos.
-
Puertos. Canal de comunicación unidireccional que tiene asociada
un buffer. Los puertos pueden migrar entre actores.
-
Grupos de puertos. Puertos a los que una tarea puede mandar o recibir
datos.
-
Hilos. Las tareas consisten de hilos que pueden ejecutarse en paralelo
en diferentes procesadores de una máquina con memoria compartida.
-
Mensajes. Datos o peticiones de accesar recursos.
-
Regiones, segmentos, caches locales. La memoria de un actor es dividida
en regiones, los cuales pueden ser mapeados a porciones de segmento.
El núcleo guarda un cache local para cada segmento.
Actores e hilos en Chorus
-
Diferencia con Mach: los actores y los hilos pueden ser cargados dinámicamente
en el espacio del núcleo.
-
Los servidores también pueden ser cargados dinámicamente,
ya sea en el espacio usuario o en el espacio del núcleo.
-
Hay 3 tipos de privilegios para actores e hilos:
-
Usuario. Algunas llamadas sistema.
-
Sistema. Llamadas sistema.
-
Supervisor. Completo acceso.
-
Los actores son creados con mensajes a un puerto especial.
Modelo de comunicación en Chorus
-
Los puertos de diferentes servidores pueden ser agrupados.
-
Existen 3 tipos de mensajes a grupos:
-
+ Multicast. A todos los miembros.
-
+ Funcional. A algún miembro del grupo.
-
+ Selectivo. A algún miembro del grupo localizado en el lugar
donde se encuentra un recurso.
-
Ej. utilización: servidores reconfigurables.
-
Existe también la facilidad de migrar puertos de un actor a otro.
-
Las comunicaciones pueden ser síncronas o asíncronas.
Conclusión Chorus
+ Soporta sistemas tiempo real.
+ Servidores de grupo reconfigurables.
+ Menos dependiente que Mach de la existencia de hardware específico.
Estructura de mensajes menos flexible.
Emulación de Unix
-
Compatibilidad binaria.
-
El espacio de memoria debe ser el mismo.
-
Simulación de llamadas a sistema.
-
Protección de datos como en Unix.
-
Manejo de señales.
Emulación de Unix en Mach
-
2 componentes: librería de emulación y servidor 4.3 BSD.
-
El servidor es multihilos.
Emulación de Unix en Chorus
-
Existen 4 actores manejadores: Procesos, Archivos,
Amoeba
-
En desarrollo en Amsterdam, por alumnos de A. Tanenbaum, desde 1981.
-
Transparencia de red.
-
El modelo de arquitectura subyacente es una pila de procesadores.
-
Manejo de recursos orientado a objetos.
-
Servidores a nivel usuario.
-
Emulación Unix a nivel fuente.
-
Protección basada en capacidades:
Modelo de comunicación en Amoeba
-
Un proceso en Amoeba contiene hilos, puertos y segmentos de memoria.
-
Existen 3 operaciones:
-
trans, para transmitir un mensaje a un servidor. La operación
es bloqueante.
-
get request, para que el servidor obtenga una petición.
-
put reply, para que el servidor responda.
-
Los puertos pueden ser compartidos entre varios servidores, y puede haber
grupos de servidores.
-
Existen 2 tipos de puertos: putports y getports.
-
El núcleo de Amoeba contiene rutinas para comunicarse en una interred
local, consistente de varias LANs unidas por puentes o gateways.
-
Para transmisión en WANs se utilizan librerías RPC basadas
en protocolos FLIP y request/reply.
-
El Fast Local Internet Protocol:
-
provee un servicio de datagramas de mensajes de hasta 1 Gbyte.
-
no hace control de flujo (stopandgo).
-
El protocolo Request Reply Acknowledge:
-
reintenta peticiones no llegadas al servidor.
-
cuando una respuesta llega, se manda un ACK.
-
se aplica a mensajes multipaquetes.
Conclusión Amoeba
+ Implementación RPC optimizada.
+ Servidores a nivel usuario.
+ Simplicidad del microkernel.
No compatibilidad binaria con Unix.
No hay manejo de memoria virtual.
Clouds
-
S. O. para uso de objetos distribuídos, elaborado por Georgia Tech,
1986.
-
Microkernel
-
Objeto = réplica persistente en un servidor.
-
Considera 3 tipos de computadora:
-
Estaciones de trabajo.
-
Servidores de datos.
-
Servidores de cómputo.
-
Balanceo de carga automático.
-
Implementación de hilos basada en ''métodos'' para accesar
objetos.