Primitivas de Sincronizacion

3.1 introduccion
Para lograr la distribución de procesos se
requiere de mecanismos que permitan
coordinar y controlar la ejecución de
procesos en ambientes no centralizados, ya
sean de manera local y remota.
• Los primeros protocolos para  la distribución
de procesos remotos fueron para máquinas
homogéneas..
La mayoría del control de procesos se hace
a nivel de sistema operativo a través de las
llamadas del sistema.
• El sistema de archivo forma parte importante
de las primitivas de sincronización entre
procesos.
Una forma básica de sincronización entre
procesos es redireccionar el flujo de entrada,
teniendo la entrada estándar <, la salida
estándar > y la tubería | para redireccionar la
salida de un programa sea la entrada de
otra.
3.2 comunicación de sockets, RPC, share memory
Comunicación sockets
Los sockets proporcionan una comunicación de dos vías, punto a punto entre dos procesos. Los sockets son muy versátiles y son un componente básico de comunicación entre interprocesos e intersistemas. Un socket es un punto final de comunicación al cual se puede asociar un nombre. Este tiene un tipo y uno o más procesos asociados.
Los sockets existen en los dominios de comunicación. Un socket de dominio es una representación que da una estructura de direccionamiento y un conjunto de protocolos. Los sockets se conectan solamente con sockets en el mismo dominio.
Cpmunicacion RPC
El mecanismo general para las aplicaciones cliente-servidor se proporciona por el paquete Remote Procedure Call (RPC). RPC fue desarrollado por Sun Microsystems y es una colección de herramientas y funciones de biblioteca. Aplicaciones importantes construidas sobre RPC son NIS, Sistema de Información de Red y NFS, Sistema de Ficheros de Red.
Un servidor RPC consiste en una colección de procedimientos que un cliente puede solicitar por el envío de una petición RPC al servidor junto con los parámetros del procedimiento. El servidor invocará el procedimiento indicado en nombre del cliente, entregando el valor de retorno, si hay alguno. Para ser independiente de la máquina, todos los datos intercambiados entre el cliente y el servidor se convierten al formato External Data Representation (XDR) por el emisor, y son reconvertidos a la representación local por el receptor. RPC confía en sockets estandard UDP y TCP para transportar los datos en formato XDR hacia el host remoto. Sun amablemente a puesto RPC en el dominio público; se describe en una serie de RFCs.
Comunicación share memory
En computación, la Distributed Shared Memory (DSM, o memoria distribuida compartida) es un tipo de implementación hardware y software, en la que cada nodo de un cluster tiene acceso a una amplia memoria compartida que se añade a la memoria limitada privada, no compartida, propia de cada nodo.
Los sistemas de software DSM pueden ser implementados bajo un sistema operativo (SO), o como una biblioteca de programación. Los sistemas de software DSM implementados en el SO pueden concebirse como extensiones de la arquitectura de memoria virtual subyacente. Estos sistemas son transparentes al desarrollador, lo que significa que la memoria distribuida subyacente está completamente oculta para los usuarios. En contraste, los sistemas de software DSM implementados en una biblioteca no son transparentes y los desarrolladores tienen que programarlos separadamente. Sin embargo, estos últimos sistemas ofrecen mejores características de portabilidad en la implementación de sistemas DSM.
Los sistemas de software DSM también tienen capacidad para organizar la región de memoria compartida de manera flexible. Las aproximaciones basadas en páginas organizan la memoria compartida en páginas de tamaño fijo. Por su parte, las aproximaciones basadas en objetos organizan la región como un espacio abstracto en el que se pueden almacenar objetos compartidos de tamaño variable.
La arquitectura de memoria compartida puede suponer la separación de la memoria en partes compartidas distribuidas entre los nodos y la memoria principal; o la distribución de toda la memoria en los distintos nodos. Un protocolo de coherencia, escogido de acuerdo a un modo de consistencia, se encarga de mantener la coherencia de la memoria.
En la memoria compartida, los procesos utilizan variables que pueden leer/escribir para poder comunicarse.
3.3 sincronizacion de semáforos, colas
Sincronización de semaforos
Un semáforo puede tener el valor 0, lo que indica que no existen despertares almacenados; o bien algún valor positivo si están pendientes uno o más despertares.

Sincronización de colas
  • En algunas ocasiones, un proceso debe esperar la llegada de algún tipo de evento (llegada de datos del disco, se ha pulsado una tecla, etc.). En estas ocasiones, el proceso deberá abandonar la CPU y esperar la llegada de dicho evento (las espera activa no es una buena opción en un sistema multitarea).
  • En Linux, los procesos que están esperando algún tipo de evento lo hacen en una cola de espera. Hay una cola de espera por cada posible evento, v.g., todos los procesos que están esperando que se pulse una tecla están esperando en la misma cola (la cola asociada al manejador de teclado).
  • Las colas de espera contienen la información necesaria para localizar un proceso y volverlo a poner en la cola de ejecución, junto al resto de los procesos preparados, una vez se haya producido el evento oportuno.
Sincronización memoria compartida
La Memoria compartida distribuida ayuda a que no se formen los famosos cuellos de botella, debido que busca los recursos necesarios para lograr cumplir todas las tareas asignadas.

Sincronización de monitores
Una abstracción de alto nivel para proveer mecanismos de
sincronización efectivos y simples
 Sólo un proceso puede estar activo dentro del monitor a la vez
monitor nombre-del-monitor {
// declaración de variables compartidas
condition c;
procedure P1 (…) { …. }
procedure Pn (…) {……}
Initialization code ( ….) { … }
}

No hay comentarios:

Publicar un comentario