You are on page 1of 4

1

COMUNICACION EN SISTEMAS
DISTRIBUIDOS ORIENTADA A FLUJOS
Paola Arevalo, Paola Pintado,Fabian Suconota and Roberth Ulloa
Invited Paper
AbstractThis is the abstract text.
Index Termssimplicity, beauty, elegance

I. I NTRODUCTION
ODOS los datos fluyen a travs del ordenador desde una
entrada hacia una salida. Este flujo de datos se denomina
tambin stream. Hay un flujo de entrada (input stream) que
manda los datos desde el exterior (normalmente el teclado)
del ordenador, y un flujo de salida (output stream) que dirige
los datos hacia los dispositivos de salida (la pantalla o un
archivo). El proceso para leer o escribir datos consta de tres
pasos
Abrir el flujo de datos
Mientras exista ms informacin (leer o escribir ) los
datos
Cerrar el flujo de datos

II. S OPORTE PARA MEDIOS

La sincronizacin resulta crucial para los flujos continuos


de datos. Para entender mejor acerca de la sincronizacin, se
analizara los diferentes modos de transmisin:
1. Modo de transmision asincrona: los elementos de datos de
un flujo se transmiten uno despus de otro. ste generalmente
es el caso para los flujos discretos de datos.
2. Modo de transmision sincrona: existe un retraso mximo
fin a fin para cada unidad delflujo de datos. Si una unidad de
datos se transfiere mucho ms rpido que el retraso mximo
tolerado no es importante.
3. Modo de transmision isincrona: es necesario que las
unidades de datos se transfieran a tiempo. Esto significa que
la transferencia de datos puede experimentar inestabilidad
limitada (retraso).
Tipos de flujos continuos con transmision isocrona:
1. Flujos simples: consiste en una sola secuencia de datos.
2. Flujos complejos: consta de varios flujos simples relacionados llamados subflujos, cuya relacion dependen del
tiempo.

El soporte para medios se refiere al soporte para intercambiar informacin dependiente del tiempo. Un medio se
refiere al recurso mediante el cual se transmite la informacin.
Estos recursos incluyen a los medios de almacenamiento y
transmisin, medios de presentacin como un monitor, etc.
Un tipo importante de medio es la forma en que se representa la informacin, por ejemplo, las imagenes pueden ser
presentadas por diferentes formatos, como PNG, JPEG, GIF,
etc. (Tanenbaum, Andrew)
A. Medios continuos
Las relaciones temporales entre diferentes elementos de
datos son fundamentales para interpretar correctamente lo que
significan los datos.
B. Medios discretos
Se caracterizan por el hecho de que las relaciones temporales entre elementos de datos no son fundamentales para
interpretar correctamente los datos
C. Flujo de datos
Para captar el intercambio de informacin dependiente del
tiempo, los sistemas distribuidos generalmente proporcionan
soporte para flujos de datos. Un flujo de datos no es otra cosa
ms que una secuencia de unidades de datos. Estos flujos
pueden aplicarse tanto a medios discretos como a medios
continuos.

Figure 1. Arquitectura generar para pasar a traves de una red de flujo de


datos multimedia almacenado

III. FLUJOS Y CALIDAD DE SERVICIO


Los requerimientos de sincronizacin se expresan generalmente como requerimientos de Calidad del Servicio (QoS).
La QoS para flujos continuos de datos tiene que ver principalmente con puntualidad, volumen, y confiabilidad.
Para poder especificar la QoS requerido se necesitan establecer algunas propiedades importantes.
1. La velocidad de bits requerida a la que deben transportarse los datos.
2. El retraso mximo hasta que se haya configurado una
sesin (es decir, cuando unaaplicacin puede comenzar el
envo de datos).
3. El retraso mximo fin a fin (es decir, cunto tiempo le
llevar a una unidad de datosllegar hasta un destinatario).
4. La varianza del retraso mximo, o inestabilidad.
5. El retraso mximo de un ciclo.

A. Tecnicas para conservar la QoS


Un sistema distribuido puede ayudar a que los destinatarios
envien informacion, por medio de varias herramientas que se
analizaran a continuacion:
1) Uso de un bufer:: Teniendo en consideracion que los
paquetes se retrasan con cierta varianza cuando se transmiten
por la red, el destinatario simplemente los almacena en un
bufer durante un tiempo mximo.(ver Figura-2). Esto permitir
al destinatario pasar paquetes a la aplicacin con regular
velocidad con la certeza de que siempre habr suficientes paquetes entrando al bufer para su reproduccin a esa velocidad.

Figure 2. Uso de bufer para reducir inestabilidad

Sin embargo la mayor desventaja de el uso de este bufer es


la incrementacion de retardo.
2) Coreccion de errores de reenvio (FEC): Una tcnica
muy conocida es codificar los paquetes de salida en tal
forma que cualquier salida k de n paquetes recibidos sea
suficiente para reconstruir k paquetes correctos.
En la Figura-3. Podemos observar lo que ocurre cuando se
pierden tramas, Figura (a), al enviar las tramas sin interpolar,
es decir, no enviarlas por partes, lo que ocurre es que el
cliente experimentara un vacio cuando reproduzca el contenido
solicitado, mientras que en el segundo caso, Figura (b), como
resultado se tendra que la persepcion de las tramas perdidas
por parte del cliente sera menor, debido a que se las envia de
manera interpolada.

A. Tipos de sincronizacion:
La sincronizacion ocurre al nivel de las unidades de datos
que conforman el flujo, es decir, solo entre unidades de datos.
1) Sincronizacion entre un flujo discreto de datos y un
flujo continuo de datos.: Es el tipo de sincronizacion mas
sencilla, en la cual el servidor transfiere datos al cliente en
forma de datos discretos, y al mismo tiempo el cliente debe
reproducir un flujo de datos continuos, buscando siempre la
sincronizacion entre los dos flujos de datos.
2) Sincronizacion entre flujos continuos de datos.: Por
ejemplo cuando se necesita que en un video se sincronizen
el flujo de video con el de audio. Teniendo en cuenta que se
requiere evitar al maximo la perdida de tramas o interferencias
o retardos.
B. Mecanismos de sincronizacion
Para lograr la sincronizacion se tiene en consideracion dos
aspectos importantes:
1) Los mecanismos basicos para sincronizar dos flujos:
Dentro de este aspecto se pueden considerar varios niveles de
abstraccion diferentes
Cuando se opera las unidades de datos de flujos simples:
En esencia, hay un proceso que simplemente ejecuta operaciones de lectura y escritura en varios flujos simples,
garantizando que tales operaciones se apegan a restricciones
de sincronizacin especficas.

Figure 4. Principio de sincronizacin explicita a nivel de unidades de datos

Figure 3. Consecuencia de perdida de un paquete a) Transmisin no


interpolada b)transmisin interpolada

IV. S INCRONIZACION DE FLUJOS


Un tema muy importante en sistemas multimedia es que
flujos diferentes, posiblemente en formade un flujo complejo,
estn mutuamente sincronizados. La sincronizacin de flujos
tiene que vercon mantener las relaciones temporales entre
flujos.

La desventaja de este mtodo es que la aplicacin se


hace totalmente responsable de implementar la sincronizacin
cuando slo tiene a su disposicin herramientas de bajo nivel.
Uso de interfaces:
Otra opcion es poner a disposicion a una aplicacin, de una
interfaz que le permita controlar ms fcilmente flujos y
dispositivos.Cada dispositivo y cada flujo tienen sus propias
interfaces de alto nivel, incluyen-do interfaces para notificar
a una aplicacin cundo ocurre algn evento. Las ltimas
interfaces seutilizan posteriormente para escribir controladores
para sincronizacin de flujos.
Flujos MPEG:
MPEG ( Motion Picture Experts Group ) forman una coleccin
de algoritmos para comprimir video yaudio. Existen diversos
estndares MPEG.

Figure 5. Principio de sincronizacion que soportan las interfaces de alto nivel

2) La distribuicion de esos mecanismos en un ambiente de


red.:
Del lado destinatario de un flujo complejo consistente
en subflujos que requieren sincronizacin necesita saber
exactamente qu hacer. En otras palabras, debe tener
una especificacin de sincronizacin completa disponible
localmente.
Combinar los dos subflujos en el remitente, el flujo
resultante consiste en unidades de datos que constan de
pares de mues-tras, una para cada canal. El destinatario
ahora simplemente tiene que leer cada unidad de datos y
dividirla en una muestra izquierda y otra muestra derecha.
Los retrasos para ambos canalesson ahora idnticos.
V. A PLICACION
Para la aplicacin encontramos un ejemplo en java que
utiliza las colas de mensajes posix para su realizacin:
A. Cola de mensajes POSIX
La cola de mensajes de POSIX sirven para la comunicacin
y sincronizacin, estas solo se pueden utilizar para procesos
que comparten el mismo sistema de ficheros:
1) Caractersticas :
Nombrado indirecto
Asignan a las colas nombres de ficheros
Tamao de mensaje variable
Flujo de datos: bidireccional
Sincronizacin: envo asncrono, recepcin sncrona o
asncrona.
Mensajes etiquetados con prioridades[1]
La cola de mensajes permite comunicacin entre hilos o
procesos, esta puede ser indirecta o simtrica, las colas pueden
tener varios escritores y lectores. Las colas tienen un lmite: Si
se llena, el emisor se bloquea Si el lmite esta vaco el receptor
se bloquea Si existen algunos hilos bloqueados se reanuda uno
arbitrariamente.
2) Implementacin: Servidor
En la implentacin del servidor tenemos:
Enchufador.java
package socketserver;
/** * * @author pao
*/ import java.net.*;
import java.io.*;

import java.util.logging.Level;
import java.util.logging.Logger;
public class Enchufador {
ServerSocket servidor;
Socket socket; int puerto = 21;
boolean listen=true;
DataOutputStream salida;
BufferedReader entrada;
public void iniciar(){
try {
// Se muestra el servidor y el puerto por donde se recibira
la informacion
servidor = new ServerSocket(puerto);
socket = new Socket();
socket = servidor.accept();
// esto es igual a lo que el servidor acepta la conexion
entrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String mensaje = entrada.readLine();
System.out.println(mensaje);
System.out.println("Hay
un
mensaje
desde"+
socket.getInetAddress());
salida = new DataOutputStream(socket.getOutputStream());
salida.writeUTF("cualquier mensaje");
salida.close();
}
catch
(IOException
ex)
{
Logger.getLogger(Enchufador.class.getName()).log(Level.SEVERE,
null, ex); }
}}
Main.java
package socketserver;
/** * * @author pao *
/ // PRIMERO NECESITAMOS ESTAS CLASES PARA
USAR LOS SOCKETS EN JAVA
public class Main {
/** * @param args the command line arguments */
public static void main(String[] args) {
Enchufador soquete = new Enchufador(); soquete.iniciar();
}}
Para enviar a ejecutar el servidor se utiliza Netbeans.
Cliente
En la implentacin del cliente tenemos:
ClienteSock.java
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.*;
public class ClienteSock {
Socket cliente; int puerto = 6570;
String ip = "172.16.5.1";
BufferedReader entrada, teclado;
PrintStream salida;
public void pedirSolicitud(){
try {
cliente = new Socket(ip,puerto);
entrada = new BufferedReader (new InputStreamReader(cliente.getInputStream()));

teclado = new BufferedReader(new InputStreamReplace this box by an Your Name All about you and the what your
image with a width of interests are.
Reader(System.in));
1 in and a height of
String mitec = teclado.readLine();
1.25 in!
salida = new PrintStream(cliente.getOutputStream());
salida.println(mitec); // las siguientes lineas son para que lo
que se escriba se muestre en el cliente String mensajeAlServidor = mitec; //System.out.println(" Hay un mensaje desde la
direccion "+ cliente.getInetAddress());
System.out.println(mensajeAlServidor);
entrada.close();
salida.close();
teclado.close();
cliente.close();
}
catch (IOException e) {
Logger.getLogger(ClienteSock.class.getName()).log(Level.SEVERE,null,e);
}}}
Main.java
public class Main {
/** * @param args */
public static void main(String[] args) {
// TODO Auto-generated method stub
ClienteSock c = new ClienteSock(); c.pedirSolicitud();
}
}
El cliente se lo envia a ejecutar desde Eclipse.
VI. C ONCLUSIONES
En una comunicacion en un Sistema Distribuido orientado
a Flujos, en el cual se da una comunicacin continua de datos,
donde cortes de comunicacin generan retardos no deseados.
Los sistemas distribuidos orientados a flujos, nos permite
realizar comunicaciones ininterrumpidas.
Coauthor Same again for the co-author, but without photo

VII. B IBLIOGRAFIA :
Rojo, Oscar. (2003). Introduccin a los sistemas
distribuidos. http://www.augcyl.org/
Tanenbaum, Andrew. Sistemas Operativos Distribuidos. Mexico: Prentice Hall.
En
linea:
Comunicacion
en
los
sistemas
Distribuidos.
http://exa.unne.edu.ar/depar/areas/informatica/
SistemasOperativos/BlascoComunicacion_en_los_Sist_Distrib.pdd
http://www.slideshare.net/OlayaMLic/diseoorientado-a-flujo-de-datos
http://docencia.etsit.urjc.es/moodle/file.php/100/Material_curso_2010_2011/Teoria/Tema4_Comunicacion.pdf
[1]ftp://www.cc.uah.es/pub/Alumnos/I.T.I.Gestion/Sist.Operati
vos/TECWeb/T1/web/taxonomy/term/94.html