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