=ELECCIóN DE LíDER EN RED DE ANILLO= =ASíNCRONO =

Tamaño: px
Comenzar la demostración a partir de la página:

Download "=ELECCIóN DE LíDER EN RED DE ANILLO= =ASíNCRONO ="

Transcripción

1 Unidad Iztapalapa Ciencias Básicas e Ingeniería Ingeniería Electrónica Computación PROYECTO TERMINAL =ELECCIóN DE LíDER EN RED DE ANILLO= =ASíNCRONO = Mora León Jesús Antonio Trimestre 99-0 de Diciembre 999.

2 Proyecto: Elección de Líder en una Red de Anillo CONTENIDO (Proyecto Elección de líder en Anillo) Manual Teórico l. Algoritmo para la elección de líder dentro de una red de anillo l. l. Elección de líder en anillo síncrono l. l. Algoritmo l. LCR (Lee Chang Robert) l. l..2 Algoritmo HS (Hirschberg & Smclair) l. l..3 Algoritmo Time Slice l. l..4 Algoritmo de Rapidez Variable l..2 Elección de líder en anillo asíncrono l..2. Algoritmo LCR (Lee Chang Robert) l..2.2 Algoritmo de Peterson.2 Análisis de un algoritmo determinísta.2. Algoritmo de Elección de Hirschberg & Sinclair.3 Análisis de un algoritmo probabilista.3. Algoritmo de las Vegas I.4 Tabla comparativa para algoritmos deterministas y probabilistas Manual Técnico 2. Comunicación Cliente-Servidor Estrategias Sockets Cliente-Servidor 2.3. Socket (TCP / UDP)

3 Provecto: Elección de Líder en una Red de Anillo 3 Algoritmo de las Vegas 3. Manual de Usuario 3.2 Manual Técnico 3.3 Código Fuente Algoritmo Hirschberg & Sinclair 4. Manual de Usuario 4.2 Manual Técnico 4.3 Código Fuente Bibliografía 74

4 Provecto: Eleccihlz de Líder en una Red de Anillo Casa Abierta Tiempo. ALGORITMOS PARA LA ELECCIóN DE UN LÍDER DENTRO DE UNA RED DE ANILLO. Que es la elección de líder? La elección de líder es el proceso mediante el cual se determina a un proceso u objeto en especifico que tendrá determinadas tareas especiales y distintas al resto de los procesos que forman el conjunto. Dónde se usa? La elección de líder es utilizada dentro de aplicaciones donde convive un conjunto de entidades con las mismas condiciones y es necesario escoger a una de ellas para que realice una determinada tarea o proceso en especifico (Simmetry Brealung Problem). Esta elección de líder se da dentro de procesos distribuidos y redes que necesitan que en un determinado momento sea una de estas entidades la que se dedique a una tarea concreta. Para comenzar nuestra discusión respecto a los algoritmos que resuelven el problema de la elección de un líder dentro de una red de anillo hablaremos de los algoritmos síncronos y una pequeña descripción de algunos de ellos... Elección de un líder en un anillo síncrono. ique significa síncrono? (Al mlsmo tiempo, 6 dentm de ciertas cotas de tiempo) Es la capacidad ó propiedad de que determinados procesos se realicen al mismo tiempo. Es decir, dentro del funcionamiento de un proceso distribuido es necesario que ciertos cálculos ó tareas se realicen ó liberen al mismo tiempo, para que el resultado final sea correcto.

5 Provecto: Elección de Lider en una Red de Anillo Para describir el problema proponemos un diagrama como el de la figura siguiente que consiste en un anillo de n nodos. n n-i 2 Los procesos asociados con los nodos del anillo no conocen sus identificadores, y ninguno de los dc sus vecinos; nosotros asumimos que la generación de mensajes y las funciones de transición son definidas en términos locales y nombres relativos para sus vecinos. El requerimiento para este problema es que, eventualmente, uno de los procesos obtenga como salida la decision de que es líder, cambiando el valor de una componente para identificar un estado de líder. Hay varias versiones del problema. l. Se requiere que todos los procesos sepan quien es el líder 2. El anillo puede ser unidireccional ó bidireccional. Si es unidireccional, entonces los mensajes pueden ser mandados en la dirección de las manecillas del relo-i.

6 Proyecto: Elecciónz de Líder en una Red de Anillo Casa Abierla a Tiempo 3. El número de n nodos enel anillo puede ser conocido 6 desconocido por los procesos. Si es conocido, significa que el proceso solo necesita trabajar correctamente en el anillo de tamaño n, y así puede usar el valor n en sus programas. Si es desconocido, significa que los procesos pueden trabajar en anillos de tamaño arbitrario. Por lo tanto no utilizan esa información acerca del anillo. 4. Los procesos pueden ser idénticos 6 distintos, al iniciarlos con un zinico identzficador (UID) seleccionado de algún conjunto ordenado de identificadores como los enteros positivos, asumimos que cada UID de proceso es diferente en el anillo. Estos identificadores pueden ser restringidos a ser manipulados solo por ciertas operaciones sin restricción. operaciones, así como comparaciones, 6 pueden ser admitidas

7 Provecto: Elección de Líder en una Red de Anillo ~... Algoritmo LCR (Lee Chang Robert). Este algoritmo utiliza solo comunicación unidireccional y no conoce el tamaño del anillo. Solo el líder da una salida. El algoritmo utiliza operaciones de comparacicln sobre los UID. En este algoritmo cada proceso manda su identificador alrededor del anillo. Cuando un proceso recibe un identificador lo compara con el suyo. Si el identificador entrante es mayor que el propio, continua pasando el identificador entrante; si es menor que el propio, descarta el identificador que llegó y reexpide el propio, y si es igual al propio, el proceso se declara así mismo como líder. En este algoritmo, el proceso que tiene el mayor UID resulta líder La complejidad en tiempo del algoritmo básico LCR es de 2n vueltas hasta que el líder es anunciado y la complejidad de comunicación es O(n2), es decir, de n al cuadrado mensajes en el peor dc los casos. En la versión del algoritmo de paro, la complejidad de tiempo es de n y la complejidad de comunicación sigue siendo de O(n2). El tiempo extra necesario para detener el algoritmo y para el aviso de no-líder es de n vueltas, y la comunicación extra es de n mensajes.

8 Provecto: Elección de Líder en una Red de Anillo...2 Algoritmo HS (Hirschberg & Sinclair). Cada proceso i opera en fases O,,2,... En cada fase, el proceso i manda lokens conteniendo su UID u, en las dos direcciones. El token intenta viajar una distancia de 2, luego regresa a su origen i. Si ambos tokens regresan seguros, el proceso i continua con la siguiente fase. Como sea, los tokens puede que no regresen. Mientras un token ui va en la dirección de sus fronteras, cada uno de los procesosj en la ruta de u, compara a u, con su propio UID. Si u, u], entoncesj simplemente descarta el token, mientras que si u, ui, entonces j reexpide a ui. Si entonces significa que el proceso j ha recibido su propio UID antes que el token haya dado vuelta, asi el procesoj se elige así mismo como el líder. Si el token a viajado 2 procesos y el ultimo proceso que lo recibe tiene un UID menor que el repartido por el token, entonces devuelve al token por donde vino, este remonta al anillo hasta su fuente. Para este algoritmo podemos decir que el número total de fases que son ejecutadas antes de que se elija un líder y de que toda la comunicación se detenga es de al menos de + [logn] (incluyendo fase O) así el total de mensajes es de al menos 8n(l + [log n]), lo cual es una complejidad de comunicación de O(n log n), La complejidad en tiempo para este algoritmo es O(n) A continuación mostraremos algoritmos donde los UID son enteros positivos y permiten ser manipulados por operaciones aritméticas generales. Para este caso presentamos dos algoritmos, el de TimeSlice y el de Rapidez Variable (Variablespeeds) cada uno de O(n) mensajes. Proyecto m

9 Proyecto: Elección de Líder en una Red de Anillo Casa Abikrla al Tiempo...3 Algoritmo TimeSlice. Para este algoritmo es necesario saber el tamaño del anillo que diremos es de tamaño yz y es conocido por todos los procesos, además de utilizar comunicación unidireccional. El cómputo procede en fases,2,..", donde cada fase consiste de n vueltas consecutivas al anillo. Cada fase es asignada a la posible circulación, alrededor de todo el anillo, de un token cargando un UID particular. Más específicamente, en la fase v, que consliste en las vueltas (v -)n-t,.,.,vn, solo a un token cargando un UID v le es permitido circular. Si un proceso i con UID v existe, y la vuelta (v-l)n+l es alcanzada sin que i previamente haya recibido ningún mensaje no nulo, entonces el proceso i se elige así mismo líder y manda un token cargando su UID alrededor del anillo. Conforme este token viaja, todos los otros procesos que lo han recibido, se previenen de elegirse a ellos mismos como líder y mandar un token en cualquier otra fase. Con este algoritmo, el mínimo UID u,,* eventualmente da toda la vuelta, lo que causa que su proceso origen sea electo. Ningún mensaje es enviado antes de la vuelta (urnm-l)n+l, y ninguno es enviado después de la vuelta umln * n. Entonces el total de mensajes mandados es n. Una buena propiedad de estos algoritmos es que el total de mensajes es de n. Desgraciadamente. la complejidad en tiempo es de n * umm, lo cual es un número sin limites aun en un anillo definido. Esta complejidad en tiempo limita el algoritmo; en la práctica se utiliza para pequeños anillos en donde sus UID's pertenecen a un pequeño rango de enteros positivos.

10 Proyecto: Elección de Líder en una Red de Anillo Casa Abierla a Tiempo...4 Algoritmo de Rapidez Variable(VariabeSpeeds). Este algoritmo muestra que es suficiente O(n) mensajes enel caso de anillos donde sus proccsos conocen que n es el tamaño del anillo. Este algoritmo tambien utiliza comunicación unidireccional. Desgraciadamente, la complejidad en tiempo de este algoritmo es peor que O(n.2 Este algoritmo es como sigue: el algoritmo anterior: Cada proceso i inicia un token, que viaja alrededor del anillo, cargando el UID u, de el proceso i original. Diferentes tokens viajan a diferentes tasas. En particular, un token cargando un UID v viaja con una tasa de mensaje transmitido cada 2" vueltas, esto es, cada proceso a lo largo de su ruta espera 2" vueltas después de recibir el token antes de mandar el suyo. Mientras tanto, cada proceso guarda pista de é UID más pequeño que ha visto y simplemente descarta cualquier token cargando un identificador mayor. Si el token regresa a quien lo originó, este es elegido. Como el algoritmo TimeSlice, este algoritmo garantiza que el proceso con el UID mas pequeño es elegido. Este algoritmo garantiza que al tiempo que va viajando el token alrededor del anillo con el identificador mas pequeño umln ~ el del recorrido, el tercero mas pequeño puede solo segundo identificador mas pequeño puede solo llegar a la mitad llegar aun cuarto del recorrido y as consecutivamente. Por consiguiente, para el tiempo de la elección, el token con u,,,, usa exactamcnte n mensajes, por lo que el total de mensajes mandados. es de al menos 2n. Pero tamblén, para el tiempo que umln da la vuelta al anillo todos los nodos saben acerca de su valor, y asi rechazan mandar algún otro token. Se sigue entonces que 2n 2s un limite superior en el total dc números de mensajes que se pueden mandar por el algoritmo. La complejidad en tiempo, como ya se menciono, es de n ' 2 Umln, desde que cada nodo retarda el token que carga a UID umln sólo 2 Um,nunldades tiempo. de

11 Provecto: Elecciójr de Líder en una Red de Anillo..2 Elección de un líder en un anillo asíncrono. Qué significa asíncrono? Como su nombre lo indica es lo contrario de síncrono, aquí los procesos realizan cálculos y operaciones y no es necesario que estos se realicen al mismo tiempo ó con una cota de tiempo. Para la versión asíncrona, tenemos de nuevo un anillo de n procesos, numerados del a n en dirección de las manecillas del reloj. El anillo puede ser unidireccional ó bidireccional. La siguiente figura muestra la arquitectura para un anillo asíncrono, incluyendo a procesos y canales.

12 Proyecto: Elección de Líder en una Red de Anillo..2. Algoritmo LCR (Lee Chang Robert). Recordemos que enel algoritmo LCR, cada proceso manda su identificador alrededor del anillo, cuando un proceso recibe un identificador, lo compara con el propio. Si el identificador que llega es mayor que el propio, continua pasándolo; si es menor que el propio, descarta el identificador que llego; si es igual al suyo, el proceso se declara líder. La misma idea continua funcionando en las redes asíncronas; la principal diferencia es que ahora cada proceso mantiene un buffer que debe ser capaz de guardar cualquier número (no más de n) de mensajes en lugar de sólo uno. La razón de la diferencia es que la asincronía puede causar apilamientos de UIDs en los nodos. Para este caso tenemos un número de mensajes O(n2) análisis de tiempo del algoritmo asíncrono, asumimos que despreciable y que el tiempo de comparación es a lo más l. igual que para el algoritmo síncrono, enel el tiempo de procesamiento es Un análisis nos da un límite de tiempo de O(n2(+d)). El largo máximo de cualquier buffer ó cola por proceso es n. Así, toma un tiempo de nl para un UlD en un buffer llegar a un canal adyacente, y un tiempo nd para un UID en cola de canal ser recibido por el próximo proceso. Por lo que la complejidad en tiempo es así de O(n (l+d)). Es posible obtener un análisis más refinado, consiguiendo un límite de O(n(l+d)). El punto es que por medio de algunos buffers y colas a mandar, se puede alcanzar un largo de n. Proyecto m

13 Proyecto: Elección de Líder en una Red de Anillo..2.2 Algoritmo Peterson. El algoritmo Peterson nos da una complejidad de comunicación de O(nogn) usando comunicación unidireccional. Este algoritmo no necesita conocer el tamaño n del anillo. Utiliza comparaciones entre los UIDs. Elige un proceso arbitrario como líder, no necesariamente el proceso con el máximo ó mínimo UID. La complejidad de comunicación de O(n log n) tiene una pequeña constante como factor (aproximadamente 2). Para explicar de manera informal como funciona este algoritmo diremos que mientras se ejecuta, cada proceso se designa para estar, ya sea en modo activo ó rtltransmisión; Todos los procesos están inicialmente activos. Los procesos activos cargan con todo el trabajo real del algoritmo. Los procesos en modo de retransmisión dejan pasar los mensajes por el anillo. Una ejecución del algoritmo es dividida en fases, en cada una el número de procesos activos es reducido en un factor de al menos 2, por lo que hay a lo más (log n) fases. En la primera fase del algoritmo, cada proceso i manda su UID dos pasos enel sentido del reloj, Luego el proceso i compara su propio UIDcon aquellos de sus dos predecesores ui- y ui-2 en sentido contrarial a las manecillas del reloj. Si su vecino en la dirección contraria tiene el UID mayor de los tres, esto es, si ui-l>ui-2 y ul-l>ut, entonces el proceso i se mantiene activo, adoptando el UID de uli- de su vecino como un nuevo UID temporal. Por otra parte si uno de los otros UIDs es el mayor de los tres, entonces el proceso i simplemente se convierte en un transmisor para el resto de la ejecución. Sentido de Fase.,. Electrónica Proyecto de Ingeniería M% &

14 ~~ Proyecto: Elección de Líder en una Red de Anillo Casa Abierla Tiempo Cada fase subsecuente procede de la misma forma. Cada proceso activo i ahora manda su UID temporal a los siguientes dos procesos activos en la dirección del reloj, y espera obtener los UlDs temporales de los procesos activos predecesores. Ahora, si el primer UID predecesor activo es el más grande de los tres, el proceso i se mantiene activo, adoptando el UID de su predecesor, en el caso contrario, el proceso i se convierte en un proceso que sólo pasa mensajes. Si en alguna fase, un proceso i ve que el UID temporal que recibe de su inmediato predecesor activo es igual al que tiene, entonces i sabe que es elúnico proceso activo que queda. En este caso, el proceso i se elige así mismo como líder. Debe quedar claro que en cualquier fase en la cual halla más de un proceso activo, al menos un proceso descubrirá una combinación de UIDs que le permita permanecer activo en la siguiente fase. Además, al menos la mitad de los procesos activos pueden sobrevivir una fase dada, todos los procesos que permanecen activos deben tener un predecesor inmediato activo que pasa a modo de paso. Ahora analizaremos su complejidad. Como establecimos antes, el número de procesos activos es la mitad en cada fase, hasta que un proceso activo permanece. Esto significa que el total de nilmeros de fases hasta que un líder es elegido es [log n] +.Durante cada fase, el proceso (ya sea activo 6 dc transmisión) manda como máximo dos mensajes, Así; 2n([log n] +) mensajes son enviados en cualquier ejecución del algoritmo. Esto es O(n log n) con una mejor constante que para el algoritmo HS Esto es por que hay O(log n) fases, y podemos mostrar, de que para cualquier p, las primeras p fases son completadas con un tiempo de O(pn(l+d)) (En cada fase? cada UID viaja una distancia O(n> alrededor del anillo. Toma un tiempo de a lo mas I+d para un mensaje viajar de un nodo al siguiente, suponiendo que no esta bloqueado por un apilamiento. Un análisis más refinado nos da un limite superior de O(n(l+d)). Para dar una idea podemos dcclr que ignoramos los apilamientos ya que estos no dan un significativo retraso en el cálculo de é peor caso.

15 Proyecto: Elección de Líder en una Red de Anillo.2 ANALISIS DE UN ALGORITMO DETERMINISTA..2. UN ALGORITMO COMPLEJIDAD DE COMUNICACI~~N DE O(N LOG N). (ALGORITMO DE ELECCI~N DE HIRSCHBERG & SIIVCLAIR) El primer algoritmo publicado que reduce la complejidad del peor caso a O(n log n) es el Hirschberg & Sinclair (HAY). Para iniciar su análisis suponemos que el líder necesita tener una salida, también asumimos que el tamaño del anillo es desconocido, pero aquí tenemos una comunicación bidireccional. Al igual que otros algoritmos de elección el algoritmo HS elige el proceso con el máximo UID. Aquí todo proceso, en lugar de mandar su UID a lo largo del anillo, lo manda viajar una distancia para después regresar al proceso de partida. Se hace esto repetidamente para distancias más grandes cada vez. El algoritmo HS se describe como sigue. Algoritmo HS (informal): Cada proceso opera en fases O,,2... En cada fase I, el proceso i manda su ficha que contiene su ID ui en ambas direcciones. Esta ficha intenta viajar 2, y después regresar a su origen (ver figura).

16 Proyecto: Elección de Líder en una Red de Anillo Si las dos fichas regresan sin ningún problema, el proceso continua la siguiente fase. Sin embargo las fichas pueden no regresar al punto de partida. Mientras la ficha del proceso u, esta viajando en la dirección de ida, cada proceso j en la ruta de u, compara a la ficha con su correspondiente UID u/. Si u,<u,, entonces j simplemente descarta la ficha, mientras si u, > uj, entonces transmite u,. Si u;= uj, entonces significa que el procesoj ha recibido su propio UID antes que la ficha diera la vuelta completa, entonces el proceso j se elige así mismo como el líder, en el trayecto de regreso todo proceso transmite la ficha. Ahora describiremos el algoritmo más formalmente. Esta vez, la formalización requiere de registro para asegurar que las fichas sigan la trayectoria correlcta. Primeramente, banderas son cargadas por las fichas indicando el sentido en que van viajando, de ida ó de regreso. Además, cada salto entre proceso va siendo contado para que la ficha guarde registro de la distancia que debe recorrer; esto permite que el proceso se dé cuenta de cuando la dirección de la ficha debe ser invertida. Podemos presentar el algoritmo de una manera formal Algoritmo HS formal): El mensaje que definiremos consta de 3 campos, el UID, una bandera con valor (out, in}, y un entero positivo que son los saltos a recorrer. Para un proceso i, las variables que describen su estado son: send+. contiene elementos de Z o null, send., contiene elementos de Z 6 null, inicialmente send+ y senti - se compone de la tripleta IJID, out, y status. toma valores {unknown, leader), inicialmente unknown phase, un entero no negativo, inicialmente = 8 e Z conjunto de enteros positivos send+: envía en sentido de las manecillas del reloj send -: envía en sentido contrario de las manecillas del reloj

17 Proyecto: Eleccidn de Líder en una Red de Anillo La condición del estado de inicio inicializaciones dadas. start, consiste de un estado definido para las Para cada i, la función que genera el mensaje msgs se define como sigue: Envía el valor que tiene send+ al proceso + Envia el valor que tiene send- al proceso i - Para cada i, la función de transición trans, esta definida por ell siguiente pseudocódigo: send+ := null send - := null si el mensaje de i - l(vecino izquierdo) es (v. out,hj entonces caso v "uyh ': v"uyh= : v=u: fin caso send+ := (v,out,h - j send - := (v, in,) stutus := leader /*reexpide hacía la derecha,*devuelve por la izquierda I* se elige si el mensaje de i+ I(vecino derecho) es (v, ouf,h) entonces caso v-'uyh ': v 'uyh=l. v=u: fin caso send-:= (v,out,h - ) /*reexpide hacía la izquierda send+:= (v, In,) status :=/*se leader!*devuelve por la derecha elige si el mensaje de r - es (v, rn. ) entonces (venno rzqulerdo) send+ := (v, In, ) /*devuelve por la derecha si el mensaje de + es (v. rn. ) entonces send - := (v. m, j (vecino derecho) /*devuelve por la izquierda si los mensaje de I - y I A son ( u, In, ) entonces phase- := 2*phase send+-:= (u,out,2 a la phase) send-:= (u,out,2 a laphase) Al igual que antes, las primeras dos líneas son para limpiar el estado

18 Proyecto: Elecciótl de Líder en una Red de Anillo Análisis de Complejidad Primeramente analizamos la complejidad de comunicación. Cada proceso manda una ficha en la fase O; esto es un total de 4n mensajes para la ficha que va de ida y vuelta en ambas direcciones. Para I > O, un proceso manda una ficha en la fase I si recibió sus dos fichas de regreso en la fase -. Esto es exacto sino he vencido por otro proceso dentro de la distancia 2'" en cualquiera de las direcciones a lo largo del anillo. Esto implica que dentro de cualquier grupo de procesos consecutivos de 2""'+, al menos uno va a iniciar sus fichas en la fase. Esto puede ser usado para mostrar que al menos procesos, todos juntos inician sus fichas en la fase. Entonces el total de números de mensajes enviados en la fase I esta delimitado por Esto es debido a que las fichas en la fase k viajan a través de una distancia 2'. De nuevo, el factor de 4 es derivado de que Ia ficha es enviada en ambas direcciones (A favor y en contra de las manecillas del reloj) y de que cada ficha en la dirección de ida tiene que dar la vuelta y regresar. El número total de fases que son ejecutadas antes de que el líder sea elegido y de que toda comunicación se detenga es de al menos + (log n> incluyendo a la fase O, así el total de mensajes es de al menos 8rz(l+ (log n)), que O(n log n), con un factor constante de 8.

19 Proyecto: Elección de Líder en unu Red de Anillo La complejidad en tiempo para este algoritmo es justamente O(n). Esto se puede ver notando que el tiempo para cada fase es 2 * 2' = 2'"' de regreso. para las fichas que van hacia hera y La fase final toma un tiempo de n, esta es una fase incomlpleta, con fichas viajando en la dirección de ida. La penúltima fase es la fase = (log n) -, y su complejidad en tiempo es de al menos tan grande como el total de la complejidad en tiempo de todas las fases anteriores. Así, el total de complejidad en tiempo de todo menos de la fase final es de al menos 2 * 2'og * Se sigue que el total en complejidad en tiempo es de al menos 3n si n es potencia de 2.

20 Proyecto: Eleccidn de Líder en una Red de Anillo Casa Abierla Tiempo.3 ANALISIS DE UN ALGORITMO PROBABILISTA. El problema de la elección de líder puede verse como un cambio en la configuración del sistema. En una configuración inicial del sistema, todos los procesos activos están en el mismo estado (candidato), en una configuración final, un solo proceso está en un estado predeterminado (elegido) y todos los demás en un estado predeterminado diferente al anterior (vencido). En la variante del problema donde los procesos tienen identidades, suponemos que todos los procesos tienen manera de diferenciarse, por el contrario, en una variante anónima, el problema de la elección del líder se resuelve con procesos totalmente idénticos. Los algoritmos distribuidos de elección hechos para redes con identidades operan haciendo una comparación con las identidades de los procesos, son generalmente algoritmos de cálculo de extremos (máximos ó mínimos). En las redes anónimas es evidente que no se efectúa un cálculo de extremo sobre las identidades, la elección anónima rompe la simetría entre procesos comparando los números producidos aleatoriamente por dichos procesos. En estas dos variantes, el problema de la elección de líder sobre anillos simples hace aparecer claramente casi todos los problemas fundamentales de los algoritmos distribuidos y particularmente. el desempeño ó funcionamiento de los algoritmos. Podemos decir que es posible construir un esquema general de los algoritmos de elección dentro de los algoritmos probabilistas ya que particulares. 0s anillos unidireccionales tienen varias propiedades.3. Algoritmo de Las Vegas Ahora dentro de la elección de un líder en un anillo anónimo síncrono tenemos el algoritmo distribuido de Las Vegas Al Para el algoritmo decimos que su complejidad en tiempo dentro de un anillo sincrom unidirecciond de orden n es O(n). De manera semejante podemos decir que tiene una complejidad en bits de la misma forma, es decir, O(n). Así decimos también que su complejidad en memoria es de log n bits. Finalmente tenemos que la complejidad en comunicación es de n bits. Proyecto de Ingeniería Electr6nica

21 Proyecto: Elección de Líder en una Red de Anillo Ahora, dentro de los algoritmos para la elección de líder sobre un anillo anónimo asíncrono tenemos el caso de un algoritmo que finciona para el caso del anillo unidireccional. Este algoritmo es el algoritmo distribuido de Las Vegas A2 este algoritmo podemos decir que consta de dos etapas la primera llena de creación de candidatos, consiste en seleccionar los candidatos dentro del anillo que pueden llegar a ser líderes. Esta primera etapa resulta con una complejidad de mensajes enviados de O(qn + cn). La segunda etapa de este algoritmo es la llamada de Elección, que es la quc determina quien será el líder dentro del anillo. En esta segunda parte decimos que la correspondiente complejidad en mensajes en cierta etapa es lineal y es de la forma O(cn). El algoritmo en código es el siguiente : Algoritmo A 7 (Pi); const n; var a,c,fase: entero; estado : {activo, candidato; vencido) inicio a: = n; C.' = o; estado: =activo; /*inicializacion */ repite fase : = origen si estado : = activo entonces x: = uniforme(0,l I fin-si si x < = l/a entonces estado : = candidato; c: = 7; otro un mensaje fin-si mientras origen - datephase <n haz c.. = c + I; finmientras /+origen- datephase =n */ si c: = entonces /*un unico lider */ fin. otro si estado =candidato y c > entonces estado: =activo otro estado: = vencido rini fin c.. = o; fin-si hasta que c = ; /+candidato elegido +/ Proyecto de Ingenieria Electrónica

22 Provecto: EleccióAt de Líder en una Red de Anillo.4 Tabla Comparativa Para Algoritmos Deterministas y Probabilistas Algoritmo O(n LCR * ) 2n Y O(n) 7 O@> TimeSlice Algoritmo T O(n) ' Algoritmo Variablespeeds 2n Y O(n) Algoritmo AsynlLCR Algoritmo 2n([log Petersodeader n] +> = O(n log Distribuido lgoritmo de Las Vegas Al n 'Algoritmo Distribuido" ElecciÓn(H) I Elección(l2) I Candt(n,q) Electrónica Proyecto de Ingeniería Lwj &$T&$j;

23 Proyecto: Elección de Lider en una Red de Anillo 2. COMUNICACI~N CLIENTE-SERVIDOR. En el modelo cliente-servidor, los procesos llamados servidores le:van a cabo tareas, en beneficio dc otros procesos denominados clientes. La mayor parte de las redes de área local cuenta con servidores de archivos que gestionan el espacio en disco común, facilitando le uso compartido de archivos y la preparación de copias de respaldo. Muchas aplicaciones y servicios de red como el correo, la transferencia de archivos (ftp). la verificación de autenticidad (Kerberos), el ingreso remoto (telnet) y el acceso a sistemas de archivos remotos (NFS), se basan en el modelo cliente servidor. El servidor puede estar en la misma máquina que el cliente ó en una distinta, en cuyo caso la comunicación se realizará a través de una red. Dos clases de proltocolos de comunicación de bajo nivel que manejan el modelo cliente-servidor son los protocolos (orientados a las conexiones y los protocolos sin conexiones. En el primer caso, un servidor espera que un cliente solicite una conexión, una vez que se establece se utiliza un descriptor de esta conexión para invocar los servicios que se requieran. Una estrategia alternativa es utilizar un protocolo sin conexiones. El cliente envía un mensaje servidor; este a su vez presta el servicio y devuelve una respuesta. ai Los protocolos, tanto aquellos sin conexiones como los orientados a las conexiones, se consideran dc bajo nivel en cuanto a que la solicitud de servicio impllca una comunicación visible. El programador tiene presente la existencia y la ubicación del servidor. y debe nombrar explícitamente el servidor especifico con el que desea comunicarse.

24 Provecto: Elección de Líder en una Red de Anillo La asignación de nombres a los servidores en un entorno de red es un problema difícil. El método obvio consiste en designar un servidor por su ID de proceso y su ID de nodo. Sin embargo, como el ID de proceso se asigna cronológicamente en el momento en el que el proceso inicia su ejecución, cs difícil saber con antelación el ID de un proceso específico en un nodo. Un servidor escucha en un puerto bien conocido que se ha designado previamente para un servicio en particular. Al establecer la conexión, el cliente especifica claramente una dirección de nodo y un número de puerto en ese nodo. La comunicación cliente-servidor más sencilla se efectúa através de un solo puerto de comunicación como el que se muestra en la siguiente figura.

25 Proyecto: Elección de Líder en una Red de Anillo 2.2 ESTRATEGIAS CLIENTE-SERVIDOR. Si el cliente y el servidor comparten un sistema de archivos y se ejecutan en la misma máquina, el mecanismo de comunicación puede ser una tubería(pipe) tipo FIFO. Mientras que si se encuentran repartidos sobre una red puede usarse un socket 6 una conexión TLL Cuando el servidor se inicia, abre su conexión de socket con un puerto bien conocido y espera solicitudes de los clientes. Cuando un cliente necesita un servicio, abre una conexión de socket con el puerto bien conocido del servidor y escribe su solicitud. A continuación, el servidor da el servicio. Este enfoque funciona muy bien si sólo hay un cliente. Si hay más de un cliente, es necesario establecer una convención para enviar el ID de proceso del cliente a fin de poder distinguir las solicitudes de cada uno de los clientes. Un solo puerto no es suficiente en el caso de que el cliente necesita recibir una respuesta del servidor. pues no se cuenta con un mecanismo para que el cliente obtenga la respuesta correcta. La implementación con sockets cuenta con una llamada recvfrom que permite al servidor escuchar en un puerto de socket bien conocido y detectar solicitudes. Cada solicitud incluye la identidad de quien la envió. El servidor simplemente utiliza esta identificación en una respuesta sendto al cliente. Las llamadas recvfiom (recibir de) y sendto (enviar a) constituyen la base del protocolo de sockcz,s sin conexiones. Si el cliente y el servidor necesitan seguir interactuando durante el procesamiento de la solicitud, resulta útil contar con un canal de comunicación bidirecclonal que sea privado y que no requicra un intercambio de información de ID de proceso en cada mensaje.

26 Proyecto: Elección de Líder en una Red de Anillo Casa Abierta al Tiempo La siguiente figura ilustra un mecanismo de transferencia en el que la solicitud inicial del cliente sólo sirve para establecer el canal de comunicación bidireccional que es privado pero no es específico para un cliente. )solicitud del cliente I Los protocolos orientados a conexiones utilizan el mecanismo de transferencia para establecer un canal de comunicación entre el cliente y el servidor. Una vez que un servidor recibe una solicitud y establece un canal de comunicación, puede adoptar varios canales distintos para atender las solicitudes. Una posibilidad es cuando un servidor que recibe una solicitud, s e dedique integramente a atender esa solicitud antes de aceptar servidor en serie 6 iterativo. solicitudes adicionales. La figura anterior ilustra la estrategia de t_ %

27 Proyecto: Elección de Líder en una Red de Anillo Un servidor ocupado que atiende solicitudes de larga duración. colmo transferencias de archivos, no puede utilizar la estrategia de servidor en serie porque sólo permite atender una solicitud a la vez. En la estrategia de servidor concurrente, el servidor construye (bihrca) un hijo que preste el servicio real al cliente mientras el servidor vuelve a escuchar para detectar solicitudes adicionales. La siguiente figura es una representación de la estrategia servidor concurrente, y es ideal para servicios como la transferencia de archivos que tardan un tiempo relativamente largo e implican gran cantidad de bloqueos. [ comunicación Proyecto a &$Rig$

28 Proyecto: Elecciótt de Líder en una Red de Anillo Casa Rbierla al Tiempo Puesto que el servidor hijo se encarga de prestar el servicio real en la estrategia de servidor padre, el servidor puede aceptar múltiples solicitudes de clientes en rápida sucesión. La estrategia de sewidor con hilos representada en la siguiente figura es una alternativa con bajo costo extra que puede utilizarse en lugar de la estrategia servidor padre. En lugar de bifurcar un hijo para que atienda la solicitud, el servidor crea un hijo en su propio espacio de proceso. Los hilos tienen un gasto mucho menor y el enfoque puede ser muy eficiente, sobre todo si la solicitud es pequeña 6 en ella predomina la E/S. t comunicación I Una desventaja de la estrategia de servidor con hilos es la posible interferencia entre varias solicitudes en virtud del espacio de direcciones compartido. Enel caso de servicios en los que predominan los cálculos, los hilos adicionales pueden reducir la eficiencia del hilo principal del servidor 6 incluso bloquearlo.

29 Provecto: Elección, de Líder en una Red de Anillo 2.3 SOCKETS. La interface de sockets fie primeramente implementada con el sistema 4. lcbsd para VAX En 982. A continuación mostramos una tabla donde especificamos las fimciones que los sockets deben implementar para una acción determinada. Espacio Asignado SOCKETS Crea punto de encuentro Dirección de lazo Especifica cola Espera por conexión Obtener nuevos fd Espacio Asignado Crea punto de encuentro Dirección de lazo Conexión a servidor Transferencia de Datos listen read ( ) write ( ) recv ( ) Datagramas Terminaciones sendto( ) shutdown ( ) Proyecto Ingeniería Electrhica [zmq &#Tg&:

30 ~~ ~~ ~ Provecto: Elección de Líder en una Red de Anillo A continuación mostramos el diagrama de un escenario típico que toma lugar para una transferencia orientada a conexión y aquí el servido es iniciado primero y un tiempo después algún cliente cs iniciado y conectado al servidor. + Servidor (conecction-oriented protocol) socket ( ) I bind ( ) r hasta Se bloquea conectarse l+ con el cliente - - datos(request. Cliente proceso de solicitud datodreplay) LZ-7

31 Provecto: Elecciónl de Líder en una Red de Anillo Para un cliente-servidor usando un protocolo sin conexión, tenemos que las llamadas a sistema son diferentes. El siguiente diagrama muestra estas llamadas. El cliente no establece una conexión con el servidor. En lugar de establecer una conexión, el cliente manda un datagrama al servidor usando la llamada a sistema sendto, la cual requiere la dirección destino (servidor) como parámetro. De manera similar el servidor no tiene que aceptar una conexión por parte del cliente. En lugar de eso, el servidor sólo utiliza la llamada a sistema recvfrom que espera hasta que los datos llegan de algún cliente. El recvfrom regresa la dirección de red de un proceso cliente. asi el servidor puede mandar su respuesta al proceso correcto. Servidor (protocolo 7 sin conexi6n) socket ( ) bloques hasta recibir cliente datos de un 7 socket ( ) bind ( ) I solicitud-de proceso I datos (request) datos(repiy

32 Proyecto: Elección de Líder en una Red de Anillo 2.3. Sockets (TCP/UDP) Podemos decir que un socket es la combinación de una dirección IF y un número de puerto. Este término aparece en las especificaciones originales de TCP y más tarde también se tomo este nombre para la interface programable derivada de Berkeley. Se dice que socket pair es el que especifica los dos puntos finales que de forma única determinan cada conexión TCP en internet. A continuación hablaremos de los protocolos TCPIUDP como un s;umario para que el lector conozca sus principales características. Primeramente es bueno decir que aunque TCP (Transmisión Control Protocolo) y UDP (User Datagram Protocol) utilizan la misma capa de red (IP), TCP nos brinda un servicio totalmente diferente a la capa de aplicación que nos da UDP. TCP soporta servicios orientados a conexión (byte stream). El termino orientado a conexibn significa que dos aplicaciones que usan TCP (normalmcnte consideradas cliente - servidor) debe establecer una conexión TCF entre cada una de ellas antes de que puedan intercambiar datos. Por lo que podemos decir que hay dos terminales comunicándose entre ellas con una conexión TCP. TCP es un servicio confiable de transporte entre puntos extremos UDP es simplemente un protocolo de transporte no confiabl e y sin conexión (orientado a datagramas), cada operación de salida dada por UDP, que viaja encapsulado en un datagrama IP. un proceso produce exactamente un datagrama Se envían los datagramas que la misma aplicación escribe dentro de la capa IP, pero no hay garantía de que se haga la comunicación. Electronica Proyecto de Ingeniería m

33 Provecto: Elección de Líder en una Red de Anillo 3. MANUAL DE USUARIO (Algoritmo <<Las Vegas>>)) Este programa funciona mediante un algoritmo que determina quien es el líder de acuerdo a la probabilidad de cada computadora dentro de n máquinas, es decir, que utiliza una función que nos regresa un valor real entre (0,l) y el valor aleatorio que esta función nos da resulta ser menor ó igual que la probabilidad l/n que tiene cada maquina de ser líder, este proceso puede seguir compitiendo, de lo contrario eventualmente este proceso quedará vencido y no podrá seguir compitiendo para ser líder, por otro lado quienes si cumplieron la condición tienen primero que conocer cuantos siguen compitiendo para ser líder y así pasar a la siguiente ejecución del algoritmo y que se repitan las operaciones hasta que exista solamente un candidato algoritmo termine nombrándolo como el Único líder del anillo. a ser líder dentro del anillo y por lo tanto el Para mostrar de una manera más practica como fimciona el algoritmo y que es necesario para echarlo a trabajar, a continuación daremos una poder ejecutarlo. explicación paso a paso de lo que se tiene que hacer para Primeramente es necesario aclarar que el algoritmo en su totalidad esta dividido en cuatro módulos El primero de estos módulos se llama pr0to.h y contiene las variables globales y las llamadas a las librerías que contiene las fbnciones que nuestro programa utiliza. El segundo modulo es el anillo.h, este módulo contiene todas las funciones estructurales necesarias para formar el anillo, es decir, las fimciones necesarias para hacer las conexiones entre clienteservidor que nos sirven para formar el anillo lógico entre n computadoras.

34 Proyecto: Elección de Líder en una Red de Anillo El siguiente modulo es AlgorVeg.h, contiene el cuerpo principal del algoritmo <<Las Vegas>>. Es decir, la codificación del algoritmo junto con una función capaz de saber el número de máquinas que después de una vuelta siguen siendo activas. El último módulo LasVegas.c contiene las solicitudes de los valores para las variables globales, además de la llamada a la función Zonagrincipal que inicializa el anillo y realiza la llamada correspondiente a éi algoritmo <<Las Vegas>>. Estos cuatro módulos anteriores serán explicados con más técnico correspondiente a este algoritmo. detalle dentro de la parte del manual Es importante mencionar que estos cuatro módulos deben estar en todas y cada una de las máquinas que participen en el anillo y vayan a ejecutar el algoritmo. Una vez que los cuatro módulos estén en un mismo directorio es; necesario compilar el programa LasVegas.c ya sea con CtrbF9 dentro de la utileria XWPE o WPE de linux con este programa cargado o bien desde el directorio que contenga los módulos mediante la instrucción gcc EasVegasx -o LasVegasx Donde el último parámetro puede cambiar segun se elija sabiendo que este último será el nombre del programa ejecutable. Proyecto de lngenieria Electrónica

35 Proyecto: Elección de Líder en una Red de Anillo Después de haber compilado, el programa se ejecuta de la siguiente manera:./lasvegas.e Antes de la ejecución del algoritmo es necesario conocer la dirección de quienes participarán en el anillo, pues este es uno de los parámetros necesarios para formar el anillo. El anillo debc ir formándose armando primero todos los procesos como servidores y el último proceso deberá ser marcado como cliente, es decir, que para que el algoritmo funcione debe haber uno y solo un cliente a la hora de echar andar el algoritmo, además de que al momento de armar el anillo se debc llevar un orden en las direcciones que se colocan para formar el anillo, de otra forma el anillo no quedará bien formado y el algoritmo marcará un error. AI momento de ejecutar el algoritmo aparecerá la siguiente pantalla. Proyecto de Ingenieria Electronica

36 Proyecto: Eleccidn de Líder en unu Red de Anillo Casa Abierla a Tiempo EL primer parámetro que nos pide el programa es la dirección de red de quien estará conectado a la máquina que esta pidiendo el dato. la dirección en este parámetro debe tener el siguiente formato entero.entero. entero.entero por ejemplo: Así, codifica la dirección IP de la siguiente máquina con la que se conecta la estación que sc esta configurando. Es importante que este parámetro se introduzca de manera correcta y quc exista de manera real pues de lo contrario el algoritmo no se ejecutará. El segundo parámetro especifica si el proceso actual debe actuar como servidor o cliente. Este parámetro es importante para el fimcionamiento del anillo sabiendo que este trabaja bajo la técnica dc cliente - servidor. Es necesario saber que solamente un proceso dlebe funcionar como clicnte y que también debe ser el último en comenzar, es decir, que primero tenemos que terminar de darle los parámetros a todos los procesos servidores y hasta el final llenar los parámetros del cliente para que el algoritmo empiece a funcionar. El siguiente parámetro a teclear es el que se refiere al número de puerto de comunicación que utilizara la computadora para realizar las recepción y envío de información. Es importante que este número sea mayor a 5500 pues números menores están ya siendo ocupados por la computadora para otras tareas y al estar ocupados no permitirían que el algoritmcl se comunique como es debido. También debemos mencionar que este número de puerto debe ser el mismo en todas las máquinas en las que se desee ejecutar el programa y en las que se quiera formar el anillo.

37 Proyecto: Elección de Líder en una Red de Anillo Casa Abisrla al Tiempo Después de que se eligió un número de puerto y este funcionó de manera satisfactoria, este puerto queda inhabilitado para ejecuciones posteriores del algoritmo. Por lo que siempre que se ejecute el programa hay que elegir un número de puerto distinto. El cuarto parámetro pide un número entero cualquiera, a diferencia del número que se pide en el puerto. debe ser distinto en cada uno de los procesos que participan en la elección del líder. Esto, debido a que este numero sirve como semilla ala función que nos dará los números aleatorios entre (0,l). Esta semilla nos servirá para que cada proceso genere un grupo de números distintos entre cada proceso. Si de alguna forma esta semilla fuera la misma entre dos o más procesos la generación de números sería la misma entre los procesos que tienen la misma semilla y de esta manera el algoritmo nunca terminará, puesto que siempre estará cumpliendo todos los que estuvieran generando los mismos números y nunca tendríamos un También es bueno mencionar que aunque no debe de las mismas comparaciones entre líder en concreto. repetirse el ]mismo número entre procesos, se puede repetir en una ejecución distinta del algoritmo a diferencia de lo que pasa con el número del puerto donde ya que se utilizó un número no se puede utilizar posteriormente. Por último, el parámetro que se refiere al tamaño del anillo debe ser llenado con numero predeterminado del tamaño n del anillo, un dato necesario que el algoritmo utiliza para la ejecución correcta del mismo. Un proceso marcado como servidor después de que recibió este parámetro entrará en estado de espera hasta que el algoritmo se ejecute. Un proceso marcado como cliente, iniciará la ejecución del algoritmo al recibir el parámetro, por lo cual debe ser el idtimo en configurar. Proyecto de Ingenieria Electrónica

38 Proyecto: Elección de Líder en una Red de Anillo 3.2 MANUAL TECNICO (Algoritmo <<Las Vegas>>). Para entender como se resuelve la elección de líder en un anillo con técnicas probabilistas. mostramos un diagrama de la comunicación entre las funciones y la comunicación entre los procesos hijos que se crean, en cada máquina que participa. -cliente Tuberia-para-el- -sewidc La función Zonaqrincipal es quien inicia las llamadas a las funciones Tuberiagara-el-servidor y Tuberiaqara-el-cliente, estas a su vez crean un pipe para comunicarse con los procesos hijos que manejarán la comunicación por sockets tcp para la parte del cliente y para la parte del servidor de cada una de las máquinas que estén participando en el anillo.

39 Proyecto: Eleccidn de Líder en una Red de Anillo Después de que se han credo los sockets y los procesos hijos correspondientes para manejarlos, dentro de la función Zonagrincipal se hace la llamada a Algoritmo~LasVegas que contienc la estructura del algoritmo <<Las Vegas>> y por lo tanto será esta función quien determine al final quien será el líder dentro del anillo. La función Algoritmo-Lasvegas utiliza otra función para la comunicación con las máquinas quc participan en el anillo y así poder determinar que computadoras participantes en el algoritmo siguen siendo candidatos a ser líder cada vez que se ejecuta el algoritmo, la función utilizada para este fin es la función Mensajes-enel-anillo. Más adelante se explicarán en detalle los módulos del programa. y cada una de las funciones que utilizan. También en el diagrama anterior observamos que la técnica que utiliza el anillo para poder comunicarse es la creación procesos hijos, que se encargarán de la comunicación permitiendo así al programa principal dedicarse a otras operaciones mientras los procesos hijos reciben y envían los datos que necesita el algoritmo para funcionar. En este programa se le llama servidor al proceso que se dedica a recibir los datos, y cliente es aquel que se va encargar de enviar los datos, tomando en cuenta que es8te es un anillo de comunicación unidireccional, es decir, que solamente transmitirá datos en un sentido, ya sea en el sentido de las manecillas del reloj ó al contrario según se diseñe el anillo al momerto de ejecutar el programa. Para que el programa hncione adecuadamente se tiene que armar el anillo primero con n- servidores y un cliente para un anillo de tamaño n, después de una primera,vuelta todos los participantes dcl anillo ya tienen sus respectivos proceso cliente y proceso servidor. A continuación presentamos una gráfica que muestra el flujo de información y el orden de las llamadas a las funciones hasta llegar al final del programa. Proyecto de Ingeniería Electronica

40 Proyecto: Elección de Líder en una Red de Anillo Proyecto Electrónica de Ingeniería c"""""" M%$&

41 Provecto: Elección de Lider en una Red de Anillo Casa Abietla al Tiempo Ahora veremos con más detalle los cuatro módulos que forman al programa de elección de líder. PROT0.H Contiene las llamadas a las librerías que manejan las funciones que se utilizan en este programa además de la definición de algunas etiquetas que ayudan a que el programa sea comprendido más fácilmente, se encuentran las variables globales que utilizan los módulos y que son necesarias para que el algoritmo pueda determinar un líder dentro del anillo. ANILL0.H Contiene cuatro funciones encargadas de la arquitectura del millo y de los procesos mediante los cuales se podrán comunicar los miembros del anillo. En este módulo se encuentran las rutinas para crear los sockets tcp y crear procesos hi-jos para manejar las rutinas de los sockets ya sea por parte del servidor ó del cliente. También encontramos las funciones necesarias para crear un anillo unidireccional y manejar la recepción y el envío de datos de manera eficiente. Es decir, que en este módulo se encuentran las herramientas para construir una red de anillo y sólo restarán los procesos que hacen hncionar a la red, es decir, fimciones que utilicen estas herramientas para hacer las conexiones adecuadas para tener una red de anillo funcionando. Presentamos a continuación las cuatro funciones que están en este módulo y mencionaremos su tarea dentro del programa. Haz-socket-servidor Tiene la tarea de crear un socket tcp para recibir los datos por parte de un cliente. Por lo que se dice que crea un socket para fbncionar como servidor, después se dedica a esperar datos provenientes de la red y una vez recibidos los coloca en una tubería para ser utilizados por el resto del algoritmo. Esta hnción trabaja dentro de un proceso hijo que es el encargado de llamar a esta función.

42 Proyecto: Elección de Líder en una Red de Anillo Casa Abierla ( Tiempo Haz-socket-cliente Es la parte complementaria de la función anterior, su tarea es crear un socket tcp para enviar datos a la red y comunicarse directamente con un proceso servidor que lo esté esperando en la computadora vecina y se cumpla la pareja cliente-servidor. Después de crear el socket, tiene la tarea de leer los datos que el algoritmo genera por medio de una tubería de conexión, que comunica al resto del algoritmo con el proceso hijo, es decir administra el socket de cliente. De la misma manera que el socket del servidor fue creado y manejado por un proceso hijo, de igual forma, aquí un proceso hijo se encarga de todos datos que tienen se que mandar al resto dc la red, por lo que esta función en su totalidad es llamada dentro de un proceso hijo. Tuberiaqara_el_sewidor Crea la tubería que comunica al proceso hijo que maneja al socket servidor, también aquí se hace un fork para crear a ese proceso hijo que tiene la función de llamar a Haz ~ socketsewidor y permitir que se realice la comunicación con el anillo. Tuberiagara-el_cliente Crea la tubería para comunicar al algoritmo con el proceso hijo que tiene la tarea de crear y manejar la parte del cliente que tendrá que comunicarse y mandar datos con el vecino próximo en la red. Después de que se crea la tubería se construye al proceso hijo que manejara al socket cliente y será quien mandará llamar a Haz-socketcliente. ALG0RVEG.H Este modulo incluye las funciones que representan al algoritmo <<Las Vegas>>: Mensajes-en-el-anillo y Algoritmo-Lasvegas. Esta última es quien contiene integralmente al algoritmo probabilista que elegirá un líder en la red de anillo. La primera es un complemento de la segunda que tiene la tarea de intercambiar los mensajes de cada uno de los participantes en la red ademas de contar el número de integrantes que sobreviven a cada llamada del algoritmo de elección. Mensajes-en-el-anillo(char tam-ani[tammax],int num,char mensaje[tammaxfl Esta fknción esta construida para mandar y recibir los mensajes que las máquinas de la red genercn durante la ejecución del Algoritmo-Lasvegas y utiliza estos mensajes para contabilizar quiencs son los que dentro de la red continuarán enla siguiente vuelta, es decir, regresa el número al que se reduce el anillo después de cada ejecucion del algoritmo de elección. Proyecto de Ingenieria Electrónica

43 Proyecto: Elección de Líder en una Red de Anillo Esta función requiere de tres parámetros para poder funcionar de manera correcta. tam-ani Contiene el tamaño del anillo que esta guardado en la variable global del programa num del mismo nombre. Contiene é numero de sobrevivientes que Algoritmo-Lasvegas tiene registrado. Este número que se registra y sale de Algoritmo-Lasvegas, indica si el proceso que manda llamar a Mensajes-en-elanillo se encuentra (num = ) ó no (num = O) como sobreviviente en la red. mensaje Define el mensaje que el proceso que esta ejecutando manda hacia su vecino para ser interpretado y sirva así para que los demás sepan :si sobrevive ó permanecerá vencido en la siguiente vuelta. Este último parámetrlo tiene dos tipos de mensajes: PERMANEZCO ó ME-SALGO. Algoritmo-lasvegas Decide quien será el líder dentro de la red y funciona mediante el principio del algoritmo probabilista <<Las Vegas>>. Este algoritmo utiliza la probabilidad que tiene una y solo una computadora para ser líder dentro de una red de tamaño n. Esta probabilidad es l/n y utiliza este número para compararlo con un número aleatorio generado por una función que toma un numero real aleatorio dentro del intervalo (0,l) y después de realizar esta comparación decide si el proceso debe continuar a la siguiente ronda y ser el posible líd.er ó simplemente pasar a ser un proceso que se declara vencido y solamente se dedicará a pasar los mensajes que le lleguen y permanecerá pasivo dentro de las llamadas posteriores del algoritmo. Este criterio de comparación se puede explicar como sigue: Si número-aleatorio<=l/n el proceso se convierte candidato a ser el posible líder del anillo. De otra forma mediante comparaciones posteriores pasará a declararse como vencido y no tomará parte significativa en el algoritmo. LASVEGAS.C oltimo modulo del programa y es el que se compila para obtener el ejecutable. Esta parte dcl programa contiene a la función principal además de tener a la hnc.ión que será la encargada de hacer las llamadas a las funciones que construyen el anillo y hacer una primera vuelta para darles a todos los miembros del anillo el mensaje de inicio, para que todos comiencen el algoritmo de elección de líder.

44 Pro-yecto: Elección de Líder en una Red de Anillo Zonagrincipal Se encarga de llamar a las funciones que tienen la tarea de crear los procesos hijos que manejarán la parte del servidor y la parte del cliente, además de armar las tuberías que comunican a estos procesos con el resto del algoritmo. Dentro de esta función tambikn se hace una primera comunicación para indicarle a todas las computadoras del anillo que el algoritmo esta por iniciar, cada máquina recibe este mensaje y hace la llamada correspondiente a la función Algoritmo-Lasvegas para así tener un líder dentro del anillo. Main 0 Esta es la función principal en donde se obtienen todas las variables globales que el algoritmo necesita para ejecutarse sin problemas como son: la dirección, el modo de inicio, el tamaiío del anillo, el puerto de comunicación y el número que recibirá como semilla para la generación de números aleatorios. Además aquí es donde se realiza la llamada a Zonagrincipal que dará inicio al algoritmo las vegas y que nos dará un líder.

45 Proyecto: Eleccióhl de Líder en una Red de Anillo Casa Abisrla al Tiempo 3.3 CODIGO FUENTE (Algoritmo <<Las Vegas>>). A continuación se muestra el código fuente de los cuatro módulos que forman el programa de elección de líder y que fueron explicados en la sección pasada del manual técnico. Los módulos aquí mostrados aparecen en el mismo orden en que fueron explicados en el manual técnico. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define TAMMAX 256 #define IGUALES O int tuberia_servidor[2]; /** Tuberia de conexión con el proceso hijo que es el servidor, **/ int tuberia_cliente[2]; i** Tuberia de conexión con el proceso hijo que es el cliente. **/ int PUERTO; /*+ Variable que guarda el puerto de comunicación. **/ char pdireccion[40]; /** Variable que guarda la direccion de una computadora en la red. **/ char pmodo[2]; /** Variable que tiene el modo en que se activa una maquina (s/c]. **/ char TAM_ANI[lO]; /** Variable que guarda el tamaño de la red de anillo. **I char semilla(40j; /** Variable que guarda la semilla para la función que genera **/ /** números aleatorios entre O y. * */

46 Provecto: Eleccidn,de Líder en una Red de Anillo #include "pr0to.h'' void Haz-socket-servidor0 c int sockfd,clilen,newsockfd; struct sockaddr-in cljaddr, sew-addr; char entra[tammax]; if((sockfd = socket (AF-INET, SOCK-STREAM, O)) < O) I** habrci un socket tcp **I { /+* (un,internet stream socket ) **I printf ("ERROR SERVIDOR : NO puedo abrir STREAM SOCKlET\n"); return; I bzero ((char *) &sew-addr, sizeof (sen-addr)); I** Se da de alta nuestra propia direccion **I sew-addr.sin-family = AF-INET; I** para que un clknte nos pueda mandar datos. **I serv-addr.sin-addr.s-addr = htonl (INADDR-ANY); sew-addr.sin-port = htons (PUERTO); if(bind (sockfd, (struct sockaddr *) &sen-addr, sizeof (sew-addr)) < O) I printf ("ERROR SERVIDOR : NO puedo BIND LOCAL ADRRE,SS\n"); return; listen (sockfd, 5); for(;;) clilen = sizeof(ci-addr); newsockfd = accept(sockfd, (struct sockaddr *) &di-addr, &clilen); while() I** Espera por conexión una de un proceso cliente **I c I** y al un recibir dato del cliente los pasa al **I read(ncwsockfd,entra,tammax); I** resto del algoritmo por medio de una tubería **I write(tuberia-servidor;l;,entra,tammax); I geniería Proyecto de Electrónica m

47 Proyecto: Elección de Lider en una Red de Anillo void Hm-socket-cliente0 f int newsockfd; struct sockaddr-in cli-addr; char sale[tammax]; bzero ((char*) &di-addr, sizeof (di-addr)); cli-addr.sin-family = AF-INET;,I** Se da de a h nuestra propia direccion **/ di-addr.sin-addr.s-addr = inet-addr(pdireccion); cljaddr.sin-port = htons (PUERTO); if((newsockfd = socket (AF-INET, SOCK-STREAM, O)) < O) /*'i. habré un socket tcp **I { P*(un internet stream socket ) **I' printf ('I ERROR-CLIENTE : NO puedo crear SOCKET\n"); return; I if(connect(newsockfd, (struct sockaddr *) &cljaddr, sizeof (di-adldr)) < O) c printf ("ERROR-CLIENTE : NO me return; I while() I /**Intentamos **I /**conectarnos con un */ puedo comunicar\n"); /** servidor. * *,/ /'** Espera un #dato por medio de la tuberia del "4!'** cliente que parte llega por del resto de **I read(tuberia-cliente[o],sale,tammax); /** algoritmo y lo manda por medio del socket-. **/ write(newsockfd,sale,tammax); /** cliente hacia el vecino próximo en la red. **, I close (newsockfd); I void Tuberia-para-el-servidoro c int pid-ser; if(pipe(tuberia-servidor)==-) unldireccional tuberia I** Creamos **I c comunicar,i** para proceso al hijo **;' printf("err0r PIPE: NO se pudo Crear la tuberia al servidor\n"); /** que maneja el socket de **I return; ;'** conexicin del servidor. **/ if((pid-ser=forko) == -) Í** Creamos proceso htjo para manejar socket el **, I parte /** por del sentidor. **,I printf("err0r FORK : No se pudo Crear proceso servidor hijo\n"); return; else if(pid-ser==o) Haz-socket-servidoro;

48 Provecto: Elección de Líder en una Red de Anillo void Tuberia-para-el-cliente0 t int pid-cli; if(pipe(tuberia-cliente)==-) /** (Creamos tubería unidirecciold **! I./**para comunicar al proceso hijo **, printf("err0r PIPE : NO se pudo Crear la tuberia al cliente\n")l; I** que maneja el socket de **, return; /** conexión del cliente **/ if((pid-cli=fork()) == -) i** Creamos proceso hijo para manejar el socket **I t /**por parte del cliente. **/ printf("err0r FORICNo se pudo Crear proceso cliente hijo\n"):; return; J else if(pid-cli==o) I Hm-socket-cliente(); Proyecto de Ingeniería Electronica

49 Proyecto: Elección,de Líder en una Red de Anillo Casa Abierla a Tiempo #include "proto.h" #include "anillo.h" int Mensajes-en-el-anillo(char tam-ani[tammax],int num,char mlensaje[tammax]) c int continuan,cont=o; int tam-anillo; char mi-mensaje[tammax],mensaje-anterior[tammax]; strcpy(mi-mensaje,mensaje); tam-anillo=atoi(tam-ani)-; continuan=num; if(strcmp(pmodo,"c")==iguales) /** Si soy el cliente mando mi mensaje primero **/ I /**para iniciar el intercamhio de mensajes. **/ write(tuberia-cliente[l],mi-mensaje,tammax); while (cont!=tam-anillo) /**Hasta que mi mensaje de una vuelta completa **/ /**permaneceré r'ecibiendo los mensajes de los **,I read(tuberia-servidor[o],mensaje-anterior,tammax);,/** demás participantes del anrllo. c **/ contu; if(strcmp(mensaje-anterior,"permanezco")==iguales) /**'Alguien continua participando **/ continuanu; /** en el anillo **/ if(strcmp(pmodo,"c")==iguales)!i** Si soy el cliente mando mi mensaje solo una vez **I if(cont!=tam-anillo) t strcpy(mi-mensaje,mensaje-anterior); write(tuberia-cliente[l],mi-mensaje,tammax); else c write(tuberia-cliente[l],mi-mensaje,tammax); strcpy(mi-mensaje,mensaje-anterior); return(continuan); :**Regresamos el numero de quienes siguen compitiendo en el anillo **,' Proyecto de Ingeniería Electronica

50 Proyecto: Elección de Líder en una Red de Anillo void Algoritmo-LasVegas(void) /**Algoritmo que determina el lider en la red de anillo **, f int flag,c; float x,a; char estado[tammax],mcli[tammax],mser[tammax],mensa,je[tammax]; a=atof(tam-ani); c=o; srand48(atoi(semilla)); /** Coloco la semilla para generar los números aleatorios entre (O, ) **/ strcpy(estado,"activo"); while(c!=l) f if (strcmp(estado,"activo")==iguales) c x=drand480; /** Generamos números aleatorios if(x<=(l/a)) I strcpy(estado,"candidato"); en el intervalo (O,]) **,I c=l; strcpy(mensaje,"peranezco"); c=mensajes-en-el-aniilo(tam-ani,c,mensaje); /** Obtenemos quien mas en el anillo sigue **/' I /* *participando **/ else f strcpy(mensaje,"me-salgo"); c=mensajes-en-el-aniilo(tam_ani,c,mensaje); /** Obtenemos quien mas en el anillo sigue **; I i* *participando **/ I else f strcpy(mensaje,"me-salgo"); c=mensajes-en-el-aniilo(tam-ani,c,mensaje); /** Obtenemos pien mas en el anillo **/ '* * sigue participando **/ if((c==l)&&(strcmp(mensaje,"o")==iguales)),'** C'ondzcion /?ara salir del algoritmo Y **,/ E /** estar vencido **/ printf("---estoy VENCIDO---\n"); exit(0); I if((c==l)&&(strcmp(estado,"candidato")==iguales)) /** Condicion para salir del algoritmo **/ c /**y ser lider **/ printf("***soy EL LIDER***\n"); exit(0);

51 Prqyecto: Elección de Líder en una Red de Anillo Casa Abiella al Tiempo else c if(c!=o) c if ((strcmp(estado,"candidato")==iguales) && (c>l)) strcpy(estado,"activo"); /** No soy lider pero continua participando en la siguiente vuelta**/ else strcpy(estado,"vencido"); /** Ya no participare en la siguiente vuelta **/ I c=o; /** Reeiniciamos 'IC" y comenzamos la siguiente vuelta **/ I #include "pr0to.h" #include "AgorVeg.h" void Zona-principal0,I** Zona donde estan llamadas las para construir **/ c logic0 anillo /** el y la llamada al algoritmo **/ int flag; /**para lider el elegir anillo. en el **/ char mensaje-servidor[tammax],mensaje-cliente[tammax]; if(strcmp(pmodo,"c")==iguales) I Tuberia-para-el-cliente(); I** si es cliente crea al proceso cliente y comienza **I write(tuberia-cliente[l],"inicio",tammax); /** la comunicación mandando un mensaje * */ Tuberia-para-el-servidor(); /** después de mandar el mensaje crea el proceso servrdor**/ flag=l; I** mensaje y espera el que el mismo mando **/ while(flag) { read(tuberia-servidor(o],mensaje-ser~idor,tammgyo if(strcmp(mensaje-servidor,"inicio")==iguales) t flag=o; 9 else flag=l; if (strcmp(pmodo,"s")==iguales) /** S i es sewidor crea el proceso que atenderri **/ I /** la parte del servidor y espera a que llegue le **/ Tuberia-para-el-servidoro; /** el mensaje que le indique que comenzó el algoritmo **/ flag=l;,i** y entonces crea al proceso que se encargara de la **I while(flag) /** la parte del cliente para mandar mensajes a la red. **/ I read(tuberia-servidor[o],mensaje-servidor,tammax) d

52 Provecto: Elección de Líder en una Red de Anillo if(!strcmp(mensaje-servidor,"iniclo")) I Tuberia-para-el-cliente(); write(tuberia-cliente[l],"inicio",tammax); flag=o; 3 else flag=l; 3 Algoritmo-Lasvegaso; /** se llama al algoritmo para elegir al lider después **/ I /** de que cliente el y el servidor recibieron el mensaje **/ /** de INICIO * */ void main(void) /**Función principal del todo el programa **/ I char puerto[20]; /** Se piden todas las variables glohalespara que el algoritmo trabaje **I printf("= ELECCION DE LIDER EN RED DE ANILLO *LAS VEGAS* =\n"); printf("\ndame una direccion :"); gets(pdirecci0n); printf("dame modo de inicio [c/s]: 'I); gets(pmodo); printf("dame puerto de comunicación (Mayor a 5500) :"); gets(puert0); PUERTO=atoi(puerto); printf("dame un entero diferente al de las otras maquinas: "); gets(semila); printf("dame el tam. exacto del anillo :"); gets(tam-ani); Zona-principalo; /**Llamada para iniciar la elección del lider **/ close(tuberia-servidor[o]); /** Cerramos todas **/ close(tuberia-servidor[l]); close(tuberia-cliente[o]); /** tuberias que /** se crearon. **/ **/ close(tuberia-cliente[l]); Proyecto m c...>::e.,,,.:.s

53 Proyecto: Elección! de Líder en una Red de Anillo 4. MANUAL DE USUARIO(Agoritmo <<HS>>) El HS Algoritmo consiste en elegir un proceso líder en una red dle anillo lógica bidireccional, cada proceso tiene un identificador ID en la red, y el líder será el que tlenga el mayor ID. El identifícador debe ser diferente para cada uno de los procesos, y no importa el número de procesos que intervenga en la elección. El anillo lógico se implanta sobre una red linux, tomando cada máquina que proceso, así con sus direcciones IP de red formamos el anillo. la conforma como un Las direcciones deben ser conocidas antes de ejecutar el algoritmo :ya que para formar el anillo lógico es necesario conocer la dirección de la máquina que estará a la izquierda y la que quedará a la derecha de cada máquina. P Fig. l. Red conformada por cinco maquinas Einulx ó procesos, indicando direcciones IP de rled Una vez conocidas sus direcciones se forma un anillo lógico iniciando con cualquiera, al final debe quedar un anillo lógico formado, para así trabajar la bidirección clue implica a cada proceso podcr comunicarse tanto a la izquierda como a la derecha las veces que seta necesario.

54 Proyecto: Elección de Líder en una Red de Anillo Puede obtenerse un anillo como el de la fig. siguiente: O Fig. 2. Una vez formado el anillo El algoritmo es el mismo para todas las máquinas que intervienen, y solo hay dos modos de inicio c(ciente) ó s(servidor), por el estado asíncrono que brinda una red una vez formado el anillo sólo una máquina puede empezar la comunicación ejecutándose en modo cll~ente, las otras estarán en modo dc espera ó servidor debido a ello intervendrán en la elección al recibir el primer mensaje. El algoritmo comienza cuando un proceso quiere declararse líder, este manda un mensaje en fases conteniendo el identifícador de proceso ID en ambas direcciones del anillo, este mensaje se implementa para viajar distancias de 2 procesos con n=o al inicilo, si todo es correcto regresa otro mensaje indicando éxito al recorrer la distancia, generando otro mensaje incrementando la distancia que seria la siguiente fase.

55 Proyecto: Elección! de Líder en una Red de Anillo Fig. 3. Diagrama de Recorrido El mensaje que contiene al ID del proceso que inicia y va por ambas direcciones de la red es llamado de CONQUISTA y cada proceso debe decidir su estado al recibir el mensaje del proceso que genera el ID de conquista. Si el ID de conquista es mayor que el ID propio se declara en estado VENCIDO y regresa un mensaje de rendición. Si el ID de conquista es menor que el ID propio se declara el proceso en estado de conquista. iniciando el recorrido hacia ambos lados de la red con su ID de proceso como ID de conquwta. Si el ID de conquista es igual al ID propio se declara fin de recorrido de conquzsta por el lado en quc llega mensaje y espera por el otro, así al llegar el mensaje por ambos lados el algoritmo termina declarando líder al proceso con el ID mayor en al anillo.

56 Provecto: Elección de Líder en una Red de Anillo Para ejecutar el algoritmo en cada máquina tenemos que limpia la pantalla y aparece: seguir los siguientes pasos, al iniciar sc "ELECCIóN DE LÍDER EN ANILLO BIDIRECCIONAL" Define Identificador: - Se declara eí ID de proceso. Sólo evita repetir el Id para cada máquina. El ID de debe ser un número entre O y 9. Después de teclear, presiona ENTER.... Define dirección IZQUIERDA: Teclea la dirección lógica de la máquina que estará la izquierda para armar el anillo Eje Después de teclear, presiona ENTER... ~ Define dirección DERECHA: Teclea la dirección lógica de la máquina que estará la derecha para armar el anillo Despues de teclear, presiona ENTER.... Dame puerto de comunicación (Mayor a 5500): El puerto de comunicación es necesario para tener una comunicación óptima, debe ser mayor a 5500 y para que el algoritmo mantenga su lógica todos los procesos deben tener declarado el mismo puerto de comunicación, de otra forma no se comunicarán las máquinas. Después de teclear, presiona ENTER....

57 Provecto: Elección de Líder en una Red de Anillo Dame modo de iniciojcls]: Todos excepto la máquina que inicia deben estar en modo s(servidor) y la que inicia en c(ciente) Después de teclear, presiona ENTER.... Al tener todos los proceso listos nos ubicamos en el que se haya declarado en modo cliente, todas iniciarán reconociendo su ID propio como líder del anillo Veremos en pantalla: Identificador [ID propio/ Dir. Izquierda: x Dir Derecha: x Modo : [e] ó [S]... */ /* El LÍDER ES [ID propio] */... Estado :[INICIAL] Y la que comenzó en modo cliente tendrá una leyenda más: presiona ENTER.... AL oprimir ENTER se ejecuta el algoritmo y acaba cuando un sólo proceso termina en estado de conquista y todos los demás en estado de vencido reconociendo como líder al ID del proceso que esta en estado de conquista

58 Proyecto: Elección (de Líder en una Red de Anillo * * * Aclaraciones. o Solo sé aceptan letras minúsculas y números. o Si se tienen problemas de comunicación con el servidor ó el cliente se debe cambiar el puerto de comunicación en todas las máquinas debido a procesos que puedan estar bloqueando dichos puertos. o Cada vez que se ejecute el algoritmo se debe declarar un puerta diferente y válido. Proyecto Electrónica de Ingeniería fy] &#@,yfg

59 Provecto: Elección de Líder en una Red de Anillo ~~ 4.2 MANUAL TECNICO <<Algoritmo HS>> No existe mucha información sobre el funcionamiento del algoritmo HS determinista en un anillo asíncrono, se implementó sobre una red linux, en donde sólo una máquina comienza el algoritmo y las demás despiertan cuando les llega mensaje vía red de la máquina que inicio, para ello existen 2 modos de inicio s(servidor) y c(cliente), el primero es de espera y el segundo es de inicio, así de todas las máquinas que intervienen en el algoritmo únicamente la máquina que inicia debe estar en modo cliente. El algoritmo es similar en todas las máquinas que intervienen, su estructura en el ámbito funcional se representa de la siguiente forma: Iniciavalores() m

60 Proyecto: Elección tie Líder en una Red de Anillo El programa para implementar el algoritmo se descompone en dos archivos: HSBIDRECClON.H : Archivo de cabecera que contiene a las variables globales que sc manejan y a los procedimientos que intervienen en la comunicación con las otras máquinas en la red. HSBIDIRECCI0N.C : Contiene el cuerpo del algoritmo y elementos necesarios para que se ejecute. Descripción de Funciones main() La función principal que se encarga de iniciar todos los valores necesarios para presentarse ante el algoritmo esto lo hace mediante el procedimiento iniciavalores(), donde identificamos el valor ID, que es el identificador de proceso personal de la máquina para algoritmo, definimos también las direcciones IP izquierda y derecha de las máquinas cl siguiendo la lógica del anillo basándonos en la ubicación de cada máquina; otra parte importante es el puerto de comunicación, que será el mismo para todas las máquinas que intervienen, es conveniente asignarle valores enteros mayores a 5500, y finalmente seleccionamos el modo de inicio y así se finaliza con las variables globales. Existen otras variables como son: ~ ~ L ~ D ~ Al R principio ~ : se define como el mismo ID, así al inicio solo se reconoce a el mismo como líder del anillo. caso : Se ocupa cuando sólo existen 2 máquinas en la rcd, como la dirección izquierda es igual a la dirección derecha sólo ocupamos el cliente-izq() para enviar los mensajes ya que el derecho puede ser excluido.

61 Provecto: Elección 6 Líder en una Red de Anillo Casa Abierla a Tiempo flag - izq y flagder : Banderas para indicar el fin de ejecución de algoritmo, se activan respectivamente cuando llegue el rnensaje terminación, el algoritmo termina cuando ambas se activan ( i.e. valor=l) Una vez iniciados los valores, se hace el llamado al procedimiento server() ( En modo clientc se mandan los mensajes de inicio de algoritmo y después se llama al procedimiento server()) que espera por un cliente, en este procedimiento interviene un ciclo infinito para que siempre este esperando por conexión de otro cliente. Mientras() comienza SI conexión entonces atiende-cliente0 termina Así cuando entra un mensaje al socket del servidor este hace una llamada al procedimiento atiende-cliente(), de otra forma sigue esperando por conexión. Atiende-cliente0 Es un procedimiento que se encarga de leer el mensaje y la dirección de donde proviene, una vez leído se llama a la función zona() parma determinar por donde llegó (Le. izquierda ó derecha), datos requeridos para llamar al procedimiento que lleva la lógica del algoritmo hsbidirecciono;

62 Provecto: Elecciolr de Líder en una Red de Anillo ~~ HS-hidireccion(mansaje,lado) estado comienza selecciona estado inicio: Determina = Tipo de mensaje selecciona Lado caso izquierdo: analisis caso derecho analisis termina vencido: Determina = Tipo de mensaje selecciona lado caso izquierdo: analisis caso derecho analisis conquista: Determina = Tipo de mensaje selecciona lado caso izquierdo: analisis caso derecho analisis Es bueno mencionar que se atienden dos tipos de mensajes conquista y rendición los cuales identificamos de la siguiente forma. Mensaie de conquista IC] [id][pasos][lleva] o 2 3 O) C ) id 2) pasos 3) lleva Variable que indica conquista Valor del identificador de proceso que se quiere declarar líder Número de posiciones que tiene que recorrer el mensaje por la red Número de posiciones que lleva recorridas

63 Proyecto: Elección de Líder en una Red de Anillo Casa Abierta al Tiempo Mensaje de vencido [VI [pasos] [lleva] O 2 O) v Variable que )pasos 2)lleva indica vencido Posiciones que tiene que regresar el mensaje Posiciones que lleva recorridas. Los mensajes de respuesta dependen del estado que tome el proceso y del lado por donde recibc el mensaje, para ello se ocupan los procedimientos de conquista0 y vencidoo. conquista() Genera los mensajes de conquista hacia ambos lados de la red, y se incrementa en una secuencia de 2 la distancia de recorrido del mensaje de conquista. vencido() Genera los mensajes de vencido para enviar por la red, respondiendo al mensaje de conquista ó para que termine recorrido de vencido. EL envío de estos mensajes se hace mediante dos procedimientos: cliente-izq() por la izquierda y cliente-der() por la derecha, estos procedimientos están imglementados para conectarse creando un socket y enviar el mensaje, inmediatamente despuks se desconectan, eliminando el socket. Proyecto de Ingeniería Electronica

64 Proyecto: Elección de Lider en una Red de Anillo Casa Abierla Tiempo Funcionamiento del Algoritmo. Supongamos que el proceso con id=3 se quiere declarar como líder entonces inicia mandando dos mensajes de conquista uno a la izquierda y otro a la derecha. El proceso con id=l determina que es menor y regresa un mensaje de vencido, de manera similar ocurre en el proceso de id=2 Así el proceso 3 genera otros dos mensajes incrementando la distancia de conquista, m

65 Proyecto: Elección de Líder en una Red de Anillo El proceso con id=l que es vencido incrementa el número de pa:sos que lleva y sigue, enviando el mensaje ai proceso con id=2 en el cual ocurre algo similar pero en (dirección contraria. Cuando en el mensaje de conquista las dos últimas variables son iguales indican fin de recorrido del mensaje de conquista así el proceso con id=2 regresa un mensaje de vencido al proceso con id=l y este a su vez al proceso con id=3 que fue el inicial, lo mismo ocurre del proceso con id=l al proceso con id=2. El proceso con id=3 vuelve a mandar el siguiente mensaje de conquista Este último mensaje de conquista hace el recorrido llegando a hasta é mismo, lo que determina quc no hay un proceso con id mayor en el anillo, y se declara líder del anillo dejando a todos los demás procesos como vencidos. Proyecto de Ingenieria Electronica

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011 Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011 Introducción Aplicaciones Orientadas a Conexión TCP:Servicio

Más detalles

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico El Modelo Es una arquitectura por niveles para el diseño de sistemas de red que permiten la comunicación entre todos los dispositivos de computadoras. Esta compuesto por siete niveles separados, pero relacionados,

Más detalles

Introducción a las Redes de Computadoras

Introducción a las Redes de Computadoras Introducción a las Redes de Computadoras Capitulo 2 Capa de Aplicación Nota acerca de las transparencias del curso: Estas transparencias están basadas en el sitio web que acompaña el libro, y han sido

Más detalles

Introducción a las Redes de Computadoras. Capa de aplicación. Programación con Sockets. Capitulo 2 Capa de Aplicación

Introducción a las Redes de Computadoras. Capa de aplicación. Programación con Sockets. Capitulo 2 Capa de Aplicación Introducción a las Redes de Computadoras Capitulo 2 Capa de Aplicación Nota acerca de las transparencias del curso: Estas transparencias están basadas en el sitio web que acompaña el libro, y han sido

Más detalles

TEMA 1. Introducción a las arquitecturas distribuidas

TEMA 1. Introducción a las arquitecturas distribuidas TEMA 1. Introducción a las arquitecturas distribuidas Tema 1. ARQUITECTURAS DISTRIBUIDAS: CONCEPTOS BÁSICOS 1. Qué es un sistema distribuido? 2. Servicios 3. Arquitectura 4. Definición de AD 5. Modelos

Más detalles

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES SISTEMA DE AUTOMATIZACIÓN ADUANERA INTEGRAL (S. A. A. I.) PROTOCOLOS DE COMUNICACIÓN

Más detalles

CAPITULO V. Implementación del Sistema de Transmisión y Recepción.

CAPITULO V. Implementación del Sistema de Transmisión y Recepción. CAPITULO V Implementación del Sistema de Transmisión y Recepción. Para que el operador tenga control constante del móvil debe haber una comunicación constante entre este y una terminal, en este caso una

Más detalles

Protocolos de transporte y aplicación

Protocolos de transporte y aplicación Protocolos de transporte y aplicación Tema 1 SRI Vicente Sánchez Patón I.E.S Gregorio Prieto Funciones protocolos de aplicación Los protocolos de la capa de aplicación los utilizan tanto los dispositivos

Más detalles

PROCESAMIENTO DISTRIBUIDO

PROCESAMIENTO DISTRIBUIDO Pág. 1 INTRODUCCIÓN PROCESAMIENTO DISTRIBUIDO Arquitectura de comunicaciones: Software básico de una red de computadoras Brinda soporte para aplicaciones distribuidas Permite diferentes Sistemas Operativos

Más detalles

La pila TCP/IP es la familia de protocolos que dirige el internet actual. Mientras otros protocolos también se usa en redes de computador, TCP/IP es

La pila TCP/IP es la familia de protocolos que dirige el internet actual. Mientras otros protocolos también se usa en redes de computador, TCP/IP es La pila TCP/IP es la familia de protocolos que dirige el internet actual. Mientras otros protocolos también se usa en redes de computador, TCP/IP es sin duda el más común de todos. TCP/ip puede compararse

Más detalles

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación síncrona Programación de Sistemas Concurrentes y Distribuidos Grado de Ingeniería Informática Dpto. de Informática

Más detalles

Propósito de la capa de transporte

Propósito de la capa de transporte Propósito de la capa de transporte Seguimiento de conversaciones individuales. Es responsabilidad de la capa de transporte mantener los diversos strams comunicación entre sus aplicaciones. Segmentación

Más detalles

Capítulo III: JGTel. JGTel es un prototipo el cual permite comunicar a un usuario de computadora con

Capítulo III: JGTel. JGTel es un prototipo el cual permite comunicar a un usuario de computadora con : JGTel. JGTel es un prototipo el cual permite comunicar a un usuario de computadora con otro, estos usuarios podrán enviarse texto, voz o archivos. A lo largo de este capítulo, se habla de cómo fue diseñado,

Más detalles

TCP Transmission Control Protocol

TCP Transmission Control Protocol 1 TCP Transmission Control Protocol TCP es un protocolo orientado a conexión que crea una conexión virtual entre dos TCPs para enviar datos. Además, TCP usa mecanismos de control de flujo y error en la

Más detalles

Interfaz de Socket. Agustín J. González ELO309 ELO309 1

Interfaz de Socket. Agustín J. González ELO309 ELO309 1 Interfaz de Socket Agustín J. González ELO309 ELO309 1 Introducción Cómo las aplicaciones se comunican con la familia de protocolos de software y así logran comunicación con aplicaciones remotas? La interfaz

Más detalles

Hilos Secciones Stallings:

Hilos Secciones Stallings: Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los

Más detalles

Redes de Computadoras

Redes de Computadoras Redes de Computadoras TCP/IP Ing. Eduardo Interiano Ing. Faustino Montes de Oca Antecedentes TCP/IP es un conjunto de protocolos que prestan diversos servicios TCP es el nombre de uno de los protocolos

Más detalles

Práctica 4: Desarrollo de clientes bajo TCP y UDP.

Práctica 4: Desarrollo de clientes bajo TCP y UDP. Práctica 4: Desarrollo de clientes bajo TCP y UDP. Autores: Enrique Bonet Rogelio Montañana Paco Soriano Objetivo y descripción general. El objetivo de esta práctica es el desarrollo de dos clientes, uno

Más detalles

Desarrollo de Aplicativos con winsockets

Desarrollo de Aplicativos con winsockets Seminario de Redes de Computadoras 66.48 Desarrollo de Aplicativos con winsockets Docentes: Ing. Marcelo Utard Ing. Pablo Ronco Alumnos: Baños, Germán Gámez, Pablo Rabino, Juan Pablo Salas, Federico Introducción

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets.

Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets. Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets. Prof. Ricardo Gonzalez Redes de Computadores Tema 3 1 1 Modelo Cliente-Servidor Dos

Más detalles

UNIDAD VII CONMUTACIÓN DE CIRCUITOS Y DE PAQUETES.

UNIDAD VII CONMUTACIÓN DE CIRCUITOS Y DE PAQUETES. UNIDAD VII CONMUTACIÓN DE CIRCUITOS Y DE PAQUETES. 7.1 Introducción. En las redes conmutadas de área amplia (WAN) se emplean dos tecnologías diferentes: conmutación de circuitos y conmutación de paquetes.

Más detalles

UNIDAD IV MÉTODOS DE DETECCIÓN DE ERRORES.

UNIDAD IV MÉTODOS DE DETECCIÓN DE ERRORES. UNIDAD IV MÉTODOS DE DETECCIÓN DE ERRORES. 4.1 Introducción. Como indicamos en los capítulos anteriores, durante la transmisión de datos entre dos dispositivos eléctricos de comunicación es muy común,

Más detalles

Curso de Java Java Redes

Curso de Java Java Redes Curso de Java Java Rogelio Ferreira Escutia Conceptos de Modelo OSI Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002 3 Capas TCP/IP Java Network Programming

Más detalles

Bloque I: Introducción. Tema 2: Introducción a TCP/IP

Bloque I: Introducción. Tema 2: Introducción a TCP/IP Bloque I: Introducción Tema 2: Introducción a TCP/IP Índice Bloque I: Introducción Tema 2: Introducción a TCP/IP Introducción Niveles y protocolos Direcciones IP y nombres DNS Números de puerto Transmisión

Más detalles

Redes (9359). Curso Ingeniería Técnica en Informática de Sistemas (plan 2001)

Redes (9359). Curso Ingeniería Técnica en Informática de Sistemas (plan 2001) La fuente original de gran parte de las imágenes presentadas en esta lección son cortesía del texto docente Redes y Transmisión de Datos P. Gil, J. Pomares, F. Candelas. Servicio de Publicaciones Universidad

Más detalles

Topologías de Red. Hosts:

Topologías de Red. Hosts: La topología define la estructura de una red, dependiendo de la topología será la distribución física de la red y dispositivos conectados a la misma, así como también las características de ciertos aspectos

Más detalles

LABORATORIO DE GESTIÓN DE REDES (I)

LABORATORIO DE GESTIÓN DE REDES (I) UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE GESTIÓN DE REDES (I) 1. PRESENTACIÓN El laboratorio de Gestión de Redes constará de un conjunto de prácticas

Más detalles

Modelo OSI y TCP/IP. Teleprocesamiento Ing. Zoila Marquez.

Modelo OSI y TCP/IP. Teleprocesamiento Ing. Zoila Marquez. Modelo OSI y TCP/IP Teleprocesamiento Ing. Zoila Marquez. Modelo OSI El Modelo OSI divide en 7 capas el proceso de transmisión de la información entre equipo informáticos, donde cada capa se encarga de

Más detalles

Tipos de Filtros Introducción

Tipos de Filtros Introducción Tipos de Filtros Introducción Tanto en los circuitos eléctricos como los sistemas de comunicaciones, se desea manejar información la cual debe estar dentro de ciertas frecuencias. Pero, ciertos grupos

Más detalles

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 5: Subcapa de acceso al medio

Redes (IS20) Ingeniería Técnica en Informática de Sistemas.  CAPÍTULO 5: Subcapa de acceso al medio Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es CAPÍTULO 5: Subcapa de acceso al medio ÍNDICE Curso 2002-2003 - Redes (IS20) -Capítulo 5 1 Tipos de redes: de difusión y

Más detalles

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Comunicación de Datos (6003) Práctica #7 Capa de Red

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Comunicación de Datos (6003) Práctica #7 Capa de Red Capa de Red 1) El valor de HLEN en un datagrama IPv4 es de 8. Cuántos bytes tiene el campo opciones? 2) Un datagrama IPv4 transporta 2048 bytes de datos. Si no hay opciones cuál es el valor del campo longitud

Más detalles

Tipos de Diseño. Ing. Elizabeth Guerrero V.

Tipos de Diseño. Ing. Elizabeth Guerrero V. Tipos de Diseño Ing. Elizabeth Guerrero V. Tipos de Diseño Tipos de diseño de Procesos: Centralizado, Distribuido y Cooperativo Procesos Centralizados Un sistema centralizado está formado por un computador

Más detalles

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información Modelo Dinámico del Diseño del Software y Representación en UML UNIDAD 9 Análisis y Diseño de Sistemas de Información El Modelo Dinámico El objetivo del modelo Dinámico es presentar o describir el comportamiento

Más detalles

TEMA 11 CONMUTACIÓN DE PAQUETES

TEMA 11 CONMUTACIÓN DE PAQUETES TEMA 11 CONMUTACIÓN DE PAQUETES La conmutación de circuitos fue diseñada para transmisión de voz o Recursos dedicados a una llamada en particular o Parte considerable del tiempo la conexión de datos no

Más detalles

Aspectos Básicos de Networking

Aspectos Básicos de Networking Aspectos Básicos de Networking ASPECTOS BÁSICOS DE NETWORKING 1 Sesión No. 4 Nombre: Capa de transporte del modelo OSI Contextualización Existen diferencias en los servicios de protocolos? Los protocolos

Más detalles

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS PROCESOS DISTRIBUIDOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen El proceso cliente servidor es la clave para comprender el potencial de los sistemas de información y las redes

Más detalles

cilred.com GESTIÓN DE TRANSACCIONES

cilred.com GESTIÓN DE TRANSACCIONES cilred.com GESTIÓN DE TRANSACCIONES ING. EDUARDO CRUZ ROMERO eduar14_cr@hotmail.com cilred.com GESTIÓN DE TRANSACCIONES En las base de datos existen una serie de operaciones fundamentales tales como la

Más detalles

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

TELEPROCESO Y SISTEMAS DISTRIBUIDOS Universidad Nacional del Nordeste TELEPROCESO Y SISTEMAS DISTRIBUIDOS La Interfaz Socket Lic. Vanesa S. Roffé Año 2009 Introducción - Origen de la INTERFAZ SOCKET La Interfaz Socket es una API para redes

Más detalles

Manual de Usuario. Manual de Instalación NOVACAJA.Net y SQL Server 2012/2014

Manual de Usuario. Manual de Instalación NOVACAJA.Net y SQL Server 2012/2014 Manual de Usuario Manual de Instalación NOVACAJA.Net y SQL Server 2012/2014 PU-PLA-OP-006 V4.0 Fecha Efectiva 28/07/2017 Hoja de Contenido Requerimientos mínimos 4 Instalación de NOVACAJA.net 4 Instalación

Más detalles

Primer Certamen (Tiempo: 90 min.) Si algo no está claro, haga una supuesto razonable, anótelo, y responda conforme a ello.

Primer Certamen (Tiempo: 90 min.) Si algo no está claro, haga una supuesto razonable, anótelo, y responda conforme a ello. Primer Certamen (Tiempo: 90 min.) Si algo no está claro, haga una supuesto razonable, anótelo, y responda conforme a ello. 1.- (50 puntos) Responda en forma precisa y clara (cuide su caligrafía, 5 puntos

Más detalles

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS La principal razón para que las personas aprendan lenguajes de programación es utilizar una computadora como una herramienta para la resolución de problemas. Cinco

Más detalles

SISTEMAS DE REDES TOPOLOGÍA JUAN SEBASTIÁN FERNÁNDEZ TAMAYO

SISTEMAS DE REDES TOPOLOGÍA JUAN SEBASTIÁN FERNÁNDEZ TAMAYO SISTEMAS DE REDES TOPOLOGÍA JUAN SEBASTIÁN FERNÁNDEZ TAMAYO La topología de red se define como el mapa físico o lógico de una red para intercambiar datos. En otras palabras, es la forma en que está diseñada

Más detalles

Introducción de Sockets en C.

Introducción de Sockets en C. PRÁCTICA 2: Introducción de Sockets en C. 1 La Interfaz Socket es una API para redes TCP/IP que se compone de funciones o rutinas. Originalmente se construyó a principios de los 80 para el sistema operativo

Más detalles

Transmisión y Comunicación de Datos. Luis Aldana

Transmisión y Comunicación de Datos. Luis Aldana Transmisión y Comunicación de Datos. Luis Aldana 2010 Todos los derechos reservados. Queda estrictamente prohibida la reproducción parcial o total de esta obra por cualquier medio sin previa autorización

Más detalles

Sistemas de Transportes de Datos (STD) Tema III: UDP y TCP (Entrega 4) Grupo de Aplicaciones Telemáticas. Grupo de Aplicaciones Telemáticas

Sistemas de Transportes de Datos (STD) Tema III: UDP y TCP (Entrega 4) Grupo de Aplicaciones Telemáticas. Grupo de Aplicaciones Telemáticas Sockets Abstracción para las operaciones de E/S a través de la red. Generalización de mecanismos de acceso a ficheros para suministrar un punto a través del cual realizar las comunicaciones. : Crear un

Más detalles

La Máquina de Acceso Aleatorio (Random Access Machine)

La Máquina de Acceso Aleatorio (Random Access Machine) La Máquina de Acceso Aleatorio (Random Access Machine) Nuestro modelo de cómputo secuencial es la máquina de acceso aleatorio (RAM, Random Access Machine) mostrada en la Figura 2.1, y que consiste de:

Más detalles

Introducción a la conmutación LAN.

Introducción a la conmutación LAN. Introducción a la conmutación LAN. Profesor: Segmentación LAN. La siguiente figura muestra un ejemplo de una red Ethernet segmentada. La red consta de quince computadores. De esos quince computadores,

Más detalles

COMUNICACIÓN ENTRE PROCESOS SOCKETS

COMUNICACIÓN ENTRE PROCESOS SOCKETS COMUNICACIÓN ENTRE PROCESOS SOCKETS Diseño de Sistemas Operativos Curso 2007/08 Grupo: Mi30 Martín Santana, A. David Martínez Santana, Luis Ignacio Qué son?(definición) n) Los sockets son mecanismos de

Más detalles

ARQUITECTURA DE REDES

ARQUITECTURA DE REDES ARQUITECTURA DE REDES 2º curso de Ingeniería Informática Tecnologías Informáticas Curso 15/16 Boletín de problemas 4 Redes de área local inalámbricas Problema 1. Dada una red IEEE 802.11 en modo infraestructura,

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA

ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA U C V F A C C I E N C I A S Organización y Estructura del Computador II ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA T e m a 2 G D O E C - II S e m e st r e I - 2012 AGENDA Subsistema de Buses

Más detalles

MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255

MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255 MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255 INTRODUCCIÓN Este integrado de la firma INTEL, conocido como PPI 8255 (Programmable Peripherical Interfase) realizado

Más detalles

Sistemas Operativos Distribuidos

Sistemas Operativos Distribuidos Contenidos del Tema Gestión de procesos Modelos de sistema Asignación de procesadores Estrategias dinámicas Estrategias estáticas Ejecución remota de procesos Modelos de sistema Organización de los procesadores

Más detalles

Servicios de Internet

Servicios de Internet Servicios de Internet Area de Ingeniería Telemática http://www.tlm.unavarra.es Arquitectura de Redes, Sistemas y Servicios 3º Ingeniería de Telecomunicación 1 Temario 1. Introducción 2. Arquitecturas,

Más detalles

APLICACIONES TELEMÁTICAS

APLICACIONES TELEMÁTICAS APLICACIONES TELEMÁTICAS Grado en Ingeniería Telemática Celeste Campo (celeste@it.uc3m.es) Carlos García Rubio (cgr@it.uc3m.es) CONTEXTO EN LA TITULACIÓN Celeste Campo (celeste@it.uc3m.es) Carlos García

Más detalles

INSTITUTO TECNOLÓGICO

INSTITUTO TECNOLÓGICO INSTITUTO TECNOLÓGICO DE NUEVO LAREDO Con la Ciencia por la Humanidad Introducción a la Ingeniería en Sistemas Computacionales y al Diseño de Algoritmos Curso propedéutico Instructor: Bruno López Takeyas

Más detalles

Introducción a las redes de ordenadores y protocolos de comunicación. Ordenador que no depende de otro para su funcionamiento.

Introducción a las redes de ordenadores y protocolos de comunicación. Ordenador que no depende de otro para su funcionamiento. Introducción Evolución de la informática: Inicialmente un ordenador que ejecuta todos los trabajos. Actualmente un conjunto de ordenadores conectados entre sí. Ordenador autónomo: Ordenador que no depende

Más detalles

La secuencia de referencias a páginas para el proceso B es:

La secuencia de referencias a páginas para el proceso B es: SISTEMAS OPERATIVOS (Código: 71902048) Enero 2017 Material permitido: Solo calculadora no programable Tiempo: 2 horas N1 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba

Más detalles

SISTEMA DE FICHEROS EN UNIX

SISTEMA DE FICHEROS EN UNIX SISTEMA DE FICHEROS EN UNIX SISTEMA DE FICHEROS EN UNIX CONTENIDOS: - El subsistema de ficheros en la arquitectura general de Unix. - El buffer caché. - Estructura del buffer caché. - Funcionamiento del

Más detalles

Planificación y Administración de Redes: El nivel de Transporte. Jesús Moreno León Raúl Ruiz Padilla Septiembre 2010

Planificación y Administración de Redes: El nivel de Transporte. Jesús Moreno León Raúl Ruiz Padilla Septiembre 2010 Planificación y Administración de Redes: El nivel de Transporte Jesús Moreno León Raúl Ruiz Padilla j.morenol@gmail.com Septiembre 2010 Estas diapositivas son una obra derivada de las transparencias del

Más detalles

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda Tipos de Dispositivos ENTRADA-SALIDA 1. Dispositivos de Bloque: Almacena información en bloques de tamaño fijo (512b hasta 32Kb) Se puede leer o escribir un bloque en forma independiente 2. Dispositivos

Más detalles

El nivel de transporte

El nivel de transporte El nivel de transporte Jesús Moreno León Alberto Molina Coballes Redes de Área Local Septiembre 2009 Nivel de transporte Gobierna el acceso múltiple a la red de los diversos procesos de la máquina que

Más detalles

Arquitectura de computadores I

Arquitectura de computadores I Arquitectura de computadores I Perspectiva de alto nivel de los computadores Septiembre de 2017 Contenido Componentes del computador Funcionamiento del computador Estructuras de interconexión Interconexión

Más detalles

Valerus Guía de Acceso a Internet

Valerus Guía de Acceso a Internet Valerus Guía de Acceso a Internet XX285-40 Vicon Industries Inc. no garantiza que las funciones contenidas en este equipo cumplan sus requisitos o que la operación esté totalmente libre de errores o que

Más detalles

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc. REDES DE DATOS Modelo OSI Angélica Flórez Abril, MSc. Jerarquía de protocolos Organización en capas o niveles. El número de capas y sus funciones difieren de red a red. Cada capa ofrece servicios a las

Más detalles

Enrutamiento en redes de paquetes. Jhon Jairo Padilla A., PhD.

Enrutamiento en redes de paquetes. Jhon Jairo Padilla A., PhD. Enrutamiento en redes de paquetes Jhon Jairo Padilla A., PhD. Red WAN WAN: Wide Area Network Pueden cubrir un país entero Requieren de Nodos que recogen/distribuyen la información de los usuarios y comunican

Más detalles

Figura 6.3 Descripción de la ventana deslizante.

Figura 6.3 Descripción de la ventana deslizante. Figura 6.3 Descripción de la ventana deslizante. Dada una longitud para los números de secuencia, el tamaño de la ventana real no necesita ser el máximo posible. Por ejemplo, si se usan números de secuencia

Más detalles

Laboratorio 3 Capa de Transporte (TCP)

Laboratorio 3 Capa de Transporte (TCP) Redes de Datos Laboratorio - Informe Laboratorio 3 Capa de Transporte (TCP) Fecha: Estudiante: Estudiante: Estudiante: Puesto de trabajo: Firma: Firma: Firma: Procedimiento. Se recomienda salvar las capturas

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Conceptos básicos 1 Conceptos básicos 1. Definición de puerto 2. Sockets 3. Conceptos cliente/servidor 4. Definición de Stream 5. Concurrencia, multiprogramación y multitarea

Más detalles

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Introducción Aplicaciones Distribuidas Su funcionalidad se distribuye

Más detalles

SISTEMAS OPERATIVOS Y TCP/IP. - El Modelo de Referencia TCP/IP -

SISTEMAS OPERATIVOS Y TCP/IP. - El Modelo de Referencia TCP/IP - SISTEMAS OPERATIVOS Y TCP/IP - El Modelo de Referencia TCP/IP - Objetivos Describir el modelo de referencia TCP/IP Comparar el modelo TCP/IP con el modelo OSI Analizar el formato general del datagrama

Más detalles

CONFIGURANDO EL SERVIDOR DE SIABUC9 ACTIVIDADES PREVIAS

CONFIGURANDO EL SERVIDOR DE SIABUC9 ACTIVIDADES PREVIAS CONFIGURANDO EL SERVIDOR DE SIABUC9 ACTIVIDADES PREVIAS Previo a la configuración del servidor de SIABUC9 es necesario que en el equipo de cómputo se realicen las siguientes acciones: Establecer una IP

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas

Más detalles

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Introducción y Conceptos Básicos Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería

Más detalles

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,

Más detalles

CAPITULO 2: MARCO TEÓRICO. En el desarrollo de este capítulo se presentan descripciones generales,

CAPITULO 2: MARCO TEÓRICO. En el desarrollo de este capítulo se presentan descripciones generales, CAPITULO 2: MARCO TEÓRICO En el desarrollo de este capítulo se presentan descripciones generales, definiciones y métodos, que nos pueden ayudar a entender con claridad el método que desarrolló en esta

Más detalles

Procedimiento para Distribución de Datos Maestros vía ALE

Procedimiento para Distribución de Datos Maestros vía ALE Procedimiento para Distribución de Datos Maestros vía ALE Durante la implantación de R/3 en grupo IUSA, surgió la necesidad de transportar algunos datos vía ALE del sistema de desarrollo hacia el sistema

Más detalles

SISTEMAS OPERATIVOS Manejo de procesos

SISTEMAS OPERATIVOS Manejo de procesos SISTEMAS OPERATIVOS Manejo de procesos Amilcar Meneses Viveros ameneses@computacion.cs.cinvestav.mx Universidad de Occidente Presentación Concepto de proceso Despacho de procesos Operaciones sobre procesos

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

PRACTICA FINAL. Diseño e implementación de un servidor FTP básico y cliente ftp. Protocolo FTP-RC

PRACTICA FINAL. Diseño e implementación de un servidor FTP básico y cliente ftp. Protocolo FTP-RC PRACTICA FINAL Diseño e implementación de un servidor FTP básico y cliente ftp Descripción de la práctica Protocolo FTP-RC Se propone desarrollar un servidor FTP básico iterativo (sólo atiende a un cliente

Más detalles

Tema 4.1: - TRANSPORTE-

Tema 4.1: - TRANSPORTE- Tema 4.1: - TRANSPORTE- -Introducción - Terminología OSI - Tipologia y complejidad - Servicios - Calidad de servicio - Conexiones de transporte - Transporte en Internet - Introducción. Su función básica

Más detalles

Aspectos Básicos de Networking. Sesión 4: Capa de transporte del modelo OSI

Aspectos Básicos de Networking. Sesión 4: Capa de transporte del modelo OSI Aspectos Básicos de Networking Sesión 4: Capa de transporte del modelo OSI Contextualización Ejemplos de servicios y protocolos de la capa de aplicación Existen diferencias en los servicios de protocolos?

Más detalles

Tema 7. Entrada / Salida

Tema 7. Entrada / Salida Tema 7 Entrada / Salida Problemática Entrada/Salida Elementos claves en un computador: Procesador, memoria y módulos de E/S Cada módulo de E/S se conecta al bus del sistema y controla a uno o a más periféricos

Más detalles

Funciones Lógicas X5

Funciones Lógicas X5 DOCUMENTACIÓN ESPECÍFICA Funciones Lógicas X5 Módulo Zennio de 5 funciones lógicas Edición: 1.a ÍNDICE 1. Introducción... 3 1.1. Módulo de Funciones lógicas... 3 1.2. Dispositivos Zennio con módulo X5...

Más detalles

Protocolos de Telecomunicaciones. Semana 3, Capas de Transporte y Red

Protocolos de Telecomunicaciones. Semana 3, Capas de Transporte y Red Protocolos de Telecomunicaciones Semana 3, Capas de Transporte y Red La capa de Transporte incluye las siguientes funciones: permitir múltiples aplicaciones para comunicarse a través de la red al mismo

Más detalles

Introducción a Internet

Introducción a Internet Introducción a Internet Ejemplo: Navegación En mi navegador escribo: http://www.fing.edu.uy Se despliega en mi pantalla un conjunto de textos, imágenes, animaciones Qué es lo que hace posible esto? 1 En

Más detalles

Ingeniería en Automática Industrial Software para Aplicaciones Industriales I

Ingeniería en Automática Industrial Software para Aplicaciones Industriales I Formas de comunicación! " Formas de comunicación! " TRABAJO EN RED BÁSICO Los computadores en una red se comunican unos con otros a través de protocolos de comunicación. Un protocolo establece una descripción

Más detalles

Tema 4 CURSO 2015/16 (PLAN 2009) PRIMER SEMESTRE. Internet

Tema 4 CURSO 2015/16 (PLAN 2009) PRIMER SEMESTRE. Internet Tema 4 SUPUESTO 1 CURSO 2015/16 (PLAN 2009) PRIMER SEMESTRE A B Una entidad TCP de un equipo A desea establecer una conexión con otra entidad TCP de otro equipo "B" remoto por. La entidad TCP de "A" maneja

Más detalles

Conexión segura al Laboratorio

Conexión segura al Laboratorio Conexión segura al Laboratorio Objetivo: El alumno aprenderá a conectarse vía secure shell al servidor del Laboratorio utilizando las herramientas proporcionadas en la página del mismo. SSH (Secure SHell)

Más detalles

Tema 3. Paso de mensajes. mensajes. Bibliografía. Sistemas de paso de mensajes (2) Sistemas de paso de mensajes. Ventajas del paso de.

Tema 3. Paso de mensajes. mensajes. Bibliografía. Sistemas de paso de mensajes (2) Sistemas de paso de mensajes. Ventajas del paso de. Tema 3. Paso de mensajes Bibliografía Programación Concurrente J. Palma, C. Garrido, F. Sánchez, A. Quesada, 2003 Capítulo 7 Principles of Concurrent and Distributed Programming M. Ben-Ari. Prentice Hall,

Más detalles

Figura 1. Desactivación del firewall

Figura 1. Desactivación del firewall Proyecto CLCript Cuadernos de Laboratorio de Criptografía. Entrega nº 8 Última actualización 25/09/18 Autor: Dr. Jorge Ramió Aguirre (@criptored) Prácticas con el algoritmo RSA: ataque por paradoja del

Más detalles

2.0 Práctica 1.- CONFIGURACION DE RUTAS ESTATICAS

2.0 Práctica 1.- CONFIGURACION DE RUTAS ESTATICAS UNIVERSIDAD NACIONAL AUTONOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN INGENIERÍA EN COMPUTACIÓN OPTAVO SEMESTRE ASIGNATURA: Laboratorio Redes de Computadoras II ÁREA DE CONOCIMIENTO: Redes Profesor:

Más detalles

Funciones Lógicas X10

Funciones Lógicas X10 DOCUMENTACIÓN ESPECÍFICA Funciones Lógicas X10 Módulo Zennio de 10 funciones lógicas Edición: 1.a ÍNDICE 1. Introducción... 3 1.1. Módulo de Funciones lógicas... 3 1.2. Dispositivos Zennio con módulo X10...

Más detalles

Práctica 3 Multidifusión con ordenación total

Práctica 3 Multidifusión con ordenación total Práctica 3 Multidifusión con ordenación total Objetivo Programar mediante Java-RMI el algoritmo que permite conseguir una multidifusión con ordenación total similar al utilizado en el sistema ISIS Multidifusión

Más detalles

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús Microprocesador Introducción El microprocesador es la parte de la computadora diseñada para llevar acabo o ejecutar los programas. Este viene siendo el cerebro de la computadora, el motor, el corazón de

Más detalles

Programación Concurrente Trabajo de asignatura Un juego de dominó distribuido

Programación Concurrente Trabajo de asignatura Un juego de dominó distribuido Programación Concurrente Un juego de dominó distribuido Escuela de Ingeniería y Arquitectura Depto. de Informática e Ingeniería de Sistemas Curso 11 12 1. Objetivos Los objetivos de este trabajo de asignatura

Más detalles

Sistemas Distribuidos. Soporte de Sistemas Operativos

Sistemas Distribuidos. Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Tareas principales de un SO: Administrar recursos Proveer abstracciones de los

Más detalles

Dpto. de Teoría de la Señal, Comunicaciones e Ingeniería Telemática E.T.S.I. Telecomunicación Universidad de Valladolid

Dpto. de Teoría de la Señal, Comunicaciones e Ingeniería Telemática E.T.S.I. Telecomunicación Universidad de Valladolid Dpto. de Teoría de la Señal, Comunicaciones e Ingeniería Telemática E.T.S.I. Telecomunicación Universidad de Valladolid Arquitectura de Redes, Sistemas y Servicios Ing. Técnica de Telecomunicación / Telemática

Más detalles