Você está na página 1de 29

CAPITULO

Comunicacn entre procesos


La espinadorsalde los sistemas distribuidos son los mecanismos de comunicacinentre procesos (interprocess communication o IPC): la posibilidad de que procesos separados e independientes (comopodr recordar el lector,los procesosson representaciones en tiempode ejecucin de programas) se comuniquen entres para colaborar en unatarea.En estecaptulo, se van a ver los paradigmas fundamentos, caractersticas, de e implementaciones los mecanismos de comunicacin entreprocesos. 2.1 ilustra La Figura un mecanismo bsico de comunicacin procesos: procesos dos independientes, entre con la posibilidad ejecutarse en mquinas separadas, intercambian datossobreuna red de comunicaciones. En estecaso,el proceso1 actacomo emisor,que transmite datosal proceso 2, el receptor.
Proceso 1 Proceso 2
Un paradigma es un modelo abstracto de cmo se realiza una determinada tarea.

tPc

Emisor

Receptor

Figura2.1. Comunicacin entreprocesos.

una En sistemas distribuidos, dos o ms procesos establecen (un conjunto entreellospor mediode un protocolo comunicacin que debenser observadas por los participantes de reglas en la

46

y aplicaciones Computacin Fundamentos distribuida.

por los procesos. comunicacin de los datos)acordado Un procesopuedeser emisoren determinados puntosdurante el protocolo y receptor en otros.Cuandola comunicacin es desde proceso proceso, un a nicamente el modelode comunicacin otro entreprocesos se dice que es unidifusin o unicast.Cuandola el comunicacin es desdeun proceso con un grupode procesos, mecanismo de comunicacin se denomina multidifusin o que multicast, sertratadoen el Captulo 6. La Figura 2.2 ilustra el lPC. concepto de estosdos tipos de

Unidifusin

Mullidifusin Figura 2.2. Unicasty multicast.

En ingeniera del software, se denomina abstraccin a un mecanismo para ocultar las complejidades internas de una tarea. Por ejernplo los lenguajes de alto nivel, como Java, proporcionan una abstraccin que permite al programador tener que comprender los detalles al nivel del sistema operativo.

Los sistemas operativos actuales, como UNIXy Windows proporcionan parala comunicacin funcionalidades entreprocesos. Llamaremos a estasfuncionalidades mecanismos de comunicacin procesos para entre a nivelde sistema operativo, distinguirlos de los mecanismos de comunicacin de alto nivel.Los mecanismos de comunicacin a nivelde sistema operativo incluyen colasde (Si el y regiones mensajes, semforos, de memoria compartida. lectorno ha realizado no se un cursode sistemas operativos, preocupe no le resultan trminos; no van a ser si familiares estos casosde estudioen este libro). Es posible desarrollar software de red usandodirectamente a nivelde sistema estasfuncionalidades Ejemplos operativo. de estosprogramas son los manejadores y programas (drivers) de red los de prestaciones. de evaluacin muy Se puedendesarrollar tambin aplicaciones distribuidas rudimentarias aunque normalmente no se hace,debidoa que la complejidad tpicade estasaplicaciones requiere el uso de algn para programador tipo de abstraccin al de los detalles a separar nivelde sistema ms operativo. El lectorpuedeencontrar informacin sobremecanismos de comunicacin a nivelde sistema operativo en librossobredichossistemas operativos,

IPC- Comunicacin entreprocesos

47

-\ continuacinse va a presentar una interfaz de programacinque proporcionael mnimo nivel de abstraccinpara facilitar la comunicacinentre procesos.Para ello se necesitancuatro operaciones primitivas bsicas.Los detalles acetcade estas opera:iones (tales como los argumentosy los valores devueltos) se vern cuando se coy funcionalidades mentenherramientas especficas a lo largo de los siguientescaptulos.Estasoperaciones son: . Enviar. Esta operacin se invoca por el proceso emisor con el propsito de transmitir datos al procesoreceptor.La operacindebe permitir al procesoemisor identificar al procesoreceptory especificarlos datos a transmitir . Recibir. Esta operacines invocadapor el procesoreceptor con el objetivo de aceptardatos de un procesoemisor. La operacindebe permitir al procesoreceptor identificar al proceso emisor as como especificar el 6trea de memoria que permitir almacenn el mensaje,que posteriormenteser accedidapor el receptor. . Conectar. Paramecanismos de comunicacinorientados a conexindebenexisque permitanestablecer tir operaciones una conexinlgica entreel procesoque lo invoca y otro procesodeterminado:un procesoinvoca una operacinde solicitar-conexin (denominadaconectar en adelante)mientras que el otro proceso solicita la operacinde aceptar-conexin. . Desconectar. Para mecanismosde comunicacinorientados a conexin. esta operacinpermite que una conexin lgica, previamenteestablecida,sea liberada en ambosexhemosde la comunicacin. - n procesoinvolucrado en un mecanismode comunicacininvoca estasoperaciones :n un orden determinado.La invocacin de cada operacinimplica la ocurrenciade -n evento. Por ejemplo, una operacinde enviar solicitadapor el procesoemisor de,embocaen el eventode transmisinde datoshacia el procesoreceptor,mientrastanr la invocacinde la operacinrecibir por parte del procesoreceptorimplica que di: hos datos sean entregados al proceso.Es necesarioindicar que los procesos :rrticipantes invocan operaciones de forma independiente, ya que no hay forma de . ,nocerel estadodel otro proceso. l,dos los paradigmasde sistemas distribuidosque se van a ver en este libro propor::Lrnan, implcita o explcitamente, operaciones de comunicacinentre procesos. El si:riente captulo (Captulo 3) presentarn una jerarqua de los paradigmas de sistemas -r.tribuidos. En los siguientescaptulos,se vern ejemplosde cmo se utilizan estos - :radigmasen protocolos,herramientas y funcionalidades. Los protocolos de servicio de red puedenser implementados usandooperaciones -: comunicacinentre procesosprimitivas. Por ejemplo, en el protocolo HTTP bsi' tHyperTextTransfer Protocol, protocolo de transferenciade hipertexto, usado de ' rrna extensivaen el entornoweb, que serestudiado prximoJcaptulos) proen un -=.o. el navegadorweb, invoca una operacinconectarpara establecer una conexin :ica con otro proceso,el servidor web, seguidode una operacinenviar hacia el =ridor web, para transmitir los datosque representan una solicitud. El servidor web . :no respuesta invoca una operacinenviar para transmitir los datos solicitadospor :. :ravegador web. Al finalizar la comunicacin, cadaprocesoinvoca su operacindes,lectar para finalizar con la conexin.La Figura 2.3 ilustra la sequencia de opera-

48

Computacindistribuida.Fundamentosy aplicaciones

ciones. Se vern protocolos de servicto de red como HTTP ms adelante en este otros captulos.

Un proceso

o
+

Una operacin Flujo de datos

Navegador Web

Operociones: 51 : aceptar conexin S,2:recibir (peticin) 53: enviar (respuesta) 34: desconectar C1 : realizar conexin C2:enviar(peticin) C3: recibi r (respuesta) C4: desconectar

entre procesosen HTTP bsico. Figura 2.3. Comunicacin

En el resto de este captulo se van a tratar determinados aspectos clave de estas operaciones de comunicacin entre procesos.

de comunicacin Una de las mayoresdificultades cuando se trabaja con mecanismos entre procesoses que cada proceso involucrado ejecuta de forma independientesin que ninguno de ellos sepaqu ocure en el procesoen el otro extremo. Si tenemosen cuentael caso del protocolo bsico HTTP, tal y como lo hemos descrito antes,como Sepuede observar,los dos extremosinvolucradosen el protocolo invocan operacionesde comunicacin en un orden determinado.Por ejemplo, el proceso del navegador web no debe invocar ninguna operacin enviar antes de haber completado la operacin conectar. Tambin es importante que el servidor web no empiece a transmitir datos antes de que el proceso del navegador An ms, el procesonavegadornecesitaconocer cundo los web est preparado. datos solicitados se han transmitido, de tal manera que el subsiguienteprocesamiento de los mismos tenga lugar, incluyendo el dar formato y mostrar los contenidos al usuario. La forma ms sencilla que tiene un mecanismode comunicacinde procesospara proporcionarsincronizacinde eventoses por meo de peticionesbloqueantes, que es la supresinde la ejecucindel procesohastaque la operacininvocadahaya finalizado. en la sincrotizacin de eventos, Para ilustrar el uso de las llamadasbloqueantes se va a considerarde nuevo el caso del protocolo HTTP bsico. Un procesode na-

IPC- Comunicacin entre Drocesos vegadorweb invoca una operacinbloqueantepara conectar, que bloquea su posterior ejecucinhasta que la conexin haya sido aceptada por el lado servidor.P0St0riormente,el procesonavegador invoca una operacitrecibir bloqueante, la cual suspendela ejecucindel procesohastaque la operacinse haya completado(con xito o no). La opcin bloqueanteo no bloqueantese realizaa nivel del sistemaoperativo y se inicia por medio de las funcionalidades proporcionadas por el mecanismode comunicacinentre procesos,no por el programador. Los programasde los dos procesos se muestranen la Fisara 2.4.

49

Programa del navegador Web

Programa del servidor Web

conectarse con el servidor enviar (servidorweb, peticin)

aceptar una conexin recibir (proceso navegador web) procesar los datos recibidos enviar (proceso navegador web)

recibir (servidorweb) desconectar procesar los datos recibidos

Figura 2.4. Fluio de ejecucinde dos programasque intervienen en una comunicacin entre procesos.

Durante su ejecucin, el proceso se suspendedespusde que se invoque cada llamada bloqueante. Cada vez que se ejecuta una invocacin a una operacin bloqueante,la condicin de bloqueo se inicia por las funcionalidadesde comunicacin entre procesosen conjunto con el sistemaoperativo sobre el que se apoya. La condicin de bloqueo termina posteriormentecuando la operacinha sido completada, en dicho instantese dice que el procesose encuentradesbloqueado. Un procesodesbloqueadotransita al estado de listo y en su momento continuar la ejecucin. En el caso de que la operacin no pueda ser completada,un proceso bloqueado sufrir un bloqueo indefinido, durante el cual el proceso permanecer en el estado de bloqueadoindefinidamente,a menosque se tomen las medidasde intervencin apropiadas. Las operaciones bloqueantes a menudo se llaman operaciones sncronas. Como alternativa,las operaciones de comunicacinentre procesostambin puedenser asncronas o no bloqueantes.Una operacinasncrona invocadapor un procesono causarbloqueo,y por consiguiente el procesoes libre de continuarcon su ejecucinuna vez que se invoca al mecanismode comunicacinpan realizat la operacinasncrona. Se informar posteriormente al procesosi la operacinse ha completadoy si lo ha sido con xito o no.

IPC - Comunicacin entreprocesos

49

vegador web invoca una operacinbloqueantepara conectar, que bloquea su posterior ejecucinhasta que la conexin haya sido aceptada por el lado servidor.Posteriormente,el procesonavegadorinvoca una operacinrecibir bloqueante, la cual suspendela ejecucindel procesohastaque la operacinse haya completado(con xito o no). La opcin bloqueanteo no bloqueantese realiza a nivel del sistemaoperativo y se inicia por medio de las funcionalidades proporcionadas por el mecanismode comunicacin entre procesos,no por el programador. Los programasde los dos procesos se muesfranen la Fipara 2.4.

Programa del navegador Web

Programadel servdorWeb

conectarse con el servidor envar(servidorweb, peticin)

aceptar una conexn recibir (proceso navegador web) procesar los datos recibidos enviar (procesonavegadorweb)

recibir (servidorweb) desconectar procesar los datos recibidos

Figura 2.4. Flujo de ejecucinde dos programasque intervienen en una comunicacin entre procesos.

Durante su ejecucin, el proceso se suspendedespusde que se invoque cada llamada bloqueante. Cada vez que se ejecuta una invocacin a una operacin bloqueante,la condicin de bloqueo se inicia por las funcionalidadesde comunicacin entre procesosen conjunto con el sistemaoperativo sobre el que se apoya. La condicin de bloqueo termina posteriormentecuando la operacinha sido completada, en dicho instantese dice que el procesose encuentradesbloqueado. Un procesodesbloqueado transita al estado de listo y en su momento continuar la ejecucin. En el caso de que la operacin no pueda ser completada,un proceso bloqueado sufrir un bloqueo indefinido, durante el cual el proceso permanecer en el estado de bloqueadoindefinidamente,a menosque se tomen las medidasde intervencin apropiadas. Las operaciones bloqueantes a menudo se llaman operaciones sncronas. Como alternativa,las operaciones de comunicacinentre procesostambinpuedenser asncronas o no bloqueantes.Una operacinasncrona invocadapor un procesono causarbloqueo,y por consiguiente el procesoes libre de continuarcon su ejecucinuna vez que se invoca al mecanismode comunicacinpara realizar la operacinasncrona. Se informa posteriormente al procesosi la operacinse ha completadoy si lo ha sido con xito o no.

50

Computacin distribuida.Fundamentosy aplicaciones

Un procesopuede invocar una operacinno bloqueantecuando el procesopuede continuar sin esperara que se completeel eventoiniciado por la operacin.Por ejemplo, la operacinrecibir invocada por el navegadorweb debe esperara la respuesta Por el contrario,la operacin del servidor para poder continuar con el procesamiento. porque el servidor web enviar invocadapor el servidor web puede ser no bloqueante, no necesitaesperara que la operacinse haya completadoantesde procedercon la de forma que puedecontinuarsirviendo siguienteoperacin(la operacindesconectar), a otros procesosnavegadores. y de de sincronizacin Es responsabilidad del programadorreconocerla necesidad Por ejemplo, si se invoca una operacinrecibir no cundouna llamadaes bloqueante. se bloqueanteen el cdigo del navegadorweb, debido a un programadordescuidado, despus de que se invoque la operaasumeque los datos se reciben inmediatamente posteriorpuedemostrardatosque no seanvlidos o, peor an, cin, el procesamiento generarelTores. enviar y recibir es fundamentalpara los sisDebido a que el uso de operaciones en los cuales se usan diferentes temas distribuidos vamos a ver diferentesescenarios de estosmodos. combinaciones

Enviar sncrono y recibir sncrono


La Figura 2.5 es un diagrama,que a lo largo de este libro vamos a denominardiagrama de eventos,que ilustra la sincronizacinde los eventospara una sesinde un protocolo implementadapor medio de una operacinenviar y wa recibir sncronas. del proEn este escenario,la invocacin de la operacinrecibir causala suspensin ceso que la invoca (proceso2) hasta que se reciben los datos y se completa la operacin. De la misma forma, la operacinenviar invocada causaque el procesoemisor (proceso 1) se suspenda. Cuando se reciben los datos enviados al proceso 2, el
Proceso 2 2 en computador ejecutando

Proceso I ejecutandoen computador 1

@ +,
Figura 2.5, Enviary recibfi sncronos.

Una operacin Flujo de ejecucin Periodosuspendido

IPC- Comunicacin entre orocesos mecanismode comunicacinentre procesosen el ordenador2 envaun asentimiento al mecanismode comunicacinanilogodel ordenador1, y el proceso1 puedeposteriormente desbloquearse. Es necesarioremarcar que el asentimientose gestionapor medio de los mecanismos y que es transde comunicacinde ambos computadores parentepara el proceso. El uso de un enviar sncronoy un recibir sncronoes aconsejable cuandola lgica de la aplicacinde ambosprocesosnecesitaque los datos enviadosse reciban antes de continuar con el procesamiento. Dependiendode la implementacinde las funcionalidades de comunicacinentre procesos, la operacinrecibir sncronapuedeno completarse hastaque la cantidadde por el receptorhaya llegado. Por ejemplo, si el proceso2 invoca una datos esperada operacinde recibir para 300 bytes de datos,y la operacinenviar slo transmite2OO bytes, es posible que el bloqueo del proceso2 contine incluso despusde haberse entregadolos primeros 200 bytes; en este caso,el proceso2 no se desbloquear hasta que el proceso 1 transmitaposteriormente los 100 bytes de datos restantes.

51

Enviar asncrono y recibir sncrono


En la Figura 2.6 se ilustra un diagramade eventospara una sesinde protocolo implementada y una operacinde recibir snusandouna operacinde enviar asncrona crona. Como antes,la operacinrecibir bloquea al procesoque la invoca hasta que lleguen datos para completarla operacin.Sin embargo,la operacinenviar invocada no va a causarque el procesoemisor se suspenda. En este caso, como el proceso emisor no se bloquea no resulta necesarioun asentimientopor parte del mecanismo de comunicacinen el ordenadordel proceso2. Este uso de una operacinde enviar asncronay una de recibir sncronaes apropiadocuando la lgica de la aplicacin emisorano dependede la recepcinde los datospor parte del otro extremo. Sin em-

Proceso1

Proceso2

:"env.iar no b|:squeante

@ -->

Unaoperacin Flujode ejecucin Periodo suspendido

Fi ra 2' 6'Yf5fFfnE su affill'ff lft

ACAOETTA U*.8.C.

52

Computacindistribuida.Fundamentosy aplicaciones

de la implementacindel mecanismode comunicacin,no se gabargo, dependiendo al receptor.Por ejemplo, si rantizaque los datos enviados,realmenteseanentregados de recibir sea invoque la correspondiente antes de la operacinenviar es ejecutada al procesorecepno se entreguen que posible los datos es cada en el otro extremo, para almacenar proporcione espacio comunicacin que el mecanismo de a menos tor, datos enviadosde forma prematura.

Enviar sncrono y recibir asncrono


de un protocolo de sesinque emplee La Figura 2.7 llustra los diferentesescenarios asncrono. y de recibir sncrono de enviar operaciones

1: Escenario enviar sncrono y recibir asncrono 1 Proceso 2 Proceso Proces

2: Escenario envior sncrono y recibir asncrono 1 Proceso


t

2 Proceso

@- Invocado I

#l i ff:;:.,''..l
i-----------

ll rl

I I
I I t

...li.liri.i ...1..l.l.....i ....l..'...'...'...... il.ffi$ffiu*

I Y
@ i, i

- Invocado envisr nuqueante

'-i = ii.ii..i iiii i..iilii. .i i=in...i*i-i=*"-ii ... :,ii'iiii'i:i::i:i:irii'i::r


ffiffi****ff-

*d' r- U.'Ulu.Hffi l.lff''.ret*i[l9..r ::i ,lilii l * f*.* l':ll'..l;.llii ilil

I I I t

mren Asentin paren transpi 'ciona ProPorc la lib Por brer

: i aloqueo
i indefinido

::.iiliii:.iiilri'i:i'ilii':i.

iiiii;:ii;iiiii.i.lii.liiil.i;jiil;i;i;iiliir:::l:,1:,:::..:.::;:::;,:::;,: l.'lll':.;,;:.. l:iiii iii;i:ii::i',,,1:,,',,,1,,,,1,,,.',,,.,,,,l,,:,::,tl:,;-;,,,,,,,;,.l,tll:t:,:,::::;::;:;'.;.:.''.;

-******ffi

Escenario 3: envior sncrono y recibir asncrono 1 Proceso


Proceso 2 Proces

tl tl

#l
@ i i
. I I I *

tl

it ;-----'-----

-tnvocado I enviar I uloqueante I


Asentar transp, ProPorc P o rl a l i b

@
--&

Unaoperacn Flujode ejecucin suspenddo Periodo

o y fecibir asncrono. Figura 2.7. Enviarsncron

procesos entre IPC- Comunicacin

53

Una operacinde recibir asncronocausaque el procesoque la invoca no se blomucho de cmo se encuentreimplementadoel quee,y el comportamiento depender mecanismode comunicacin.La operacinrecibir, en todos los casos,retornarinde qu ocurria a continuacin: existiendotres posiblesescenarios mediatamente, . Escenario 1. Los datos solicitadospor la operacindel receptorya han llegado en el momentoque la operacinrecibir se invoca. En este casolos datos se enpor medio y el proceso 1 se desbloquear tregan al proceso2 inmediatamente, transmitido por el mecanismode comunicacindel ordede un asentamiento nador 2. . Escenario 2. Los datos solicitadospor la operacinrecibir no han llegado todel prodava; el procesoreceptor no recoge ningn dato. Es responsabilidad renecesario, si es que los datos se han recibido, receptor cerciorarse de ceso petir el procesohasta que los datos hayan llegado. (Nteseque es comn que el programautilice un bucle para invocar a la operacinrecibir repetidasveces llegue. Este tcnica de repetir intentos se denomina hastaque el dato esperado muestreo, en ingls polling.) El proceso I se quedabloqueadode forma indefinida hasta que el proceso 2 vuelve a invocar a recibir y el asentimientofinalmentele llega por parte del mecanismode comunicacindel ordenador2. . Escenario-1.Los datos solicitadospor la operacinrecibir no han llegado an. 2 notificara dicho procesocuande comunicacindel ordenador El mecanismo do los datos solicitadoshayan llegado,en dicho instanteel proceso2 puedepaEste escenariorequiereque el proceso2 proporcioneun masar a procesarlos. de comunicacin nejadorde eventoque puedeinvocarsepor partedel mecanismo han llegado. para notificar al procesoque los datos esperados

Enviar asncrono y recibir asncrono


Sin ningn bloqueo en cualquierade los dos lados, la nica forma en que los datos al receptores que el mecanismode comunicacinpueda almacenar puedeentregarse los datosrecibidos.El procesoreceptorpuede ser notificado de la llegada de los datos (vasela Figura 2.8). Ofia alternativaes, que el procesoreceptorhaga muestreo en busca de la llegada de datos,para su posterior procesamiento.
Proceso 1 Proceso 2

-l.n:vCfl..g : gfx:Yjgi ,
f,I,o,. ,.: ,

,bloq,uea:nte @ -+ Unaoperacin Flujode ejecucin furiodosuspendido Figura 2.8. Enviarasncronoy recibir asncrono.

il

y aplicaciones Computacin distribuida. Fundamentos

Aunque el bloqueo proporcionala sincronizacinnecesariaparu los mecanismosde comunicacin,es por lo generalinaceptableque un proceso se quede suspendido de forma indefinida. Existen dos medidaspara solucionareste problema.La primera es el uso de temporizadores (timeouts),que se puedenutthzar para fijar el tiempo mximo de bloqueo. Los temporizadores los proporciona el propio mecanismode comunicacin y puedenser fijados desdeel programapor medio de una operacin.En segundolugar, un proceso puede lanzar otro proceso hijo o un hilo de ejecucin (thread independiente paru invocar la operacinbloqueante, permitiendode esta manera al hilo de ejecucinprincipal o al procesopadre del programa seguir ejecutando otras tareasde procesamiento mientrasel hilo de ejecucino procesohijo se suspende.La Figura 2.9 ilustra este uso de los hilos de ejecucin.
Tiempo
Proceso @ Una operacin H i l oe n ejecucin Hilo bloqueado Nuevo hilo que invoca a la IPC bloqueante l ontina El hiloprincipac su propia ejecucin Hilo bloqueado" Hilo desbloqueadouna vez que la operacin se ha completado

principal

paraunaoperacin Figura2.9. Utilizacin de un hilode ejecucin bloqueante. Los temporizadores son importantessi la ejecucinde operaciones puesncronas de potencialmente dar como resultadoun bloqueo indefinido. Por ejemplo, una operacin bloqueantede conectar puede causarque el proceso que la solicita se quede suspendidode forma indefinida si la conexin no est establecida y no se puede establecer debido a una cada en la red de interconexinentre ambos ordenadores. En esta situacin,es tpicamenteinaceptable para el procesosolicitantequedarse <<colgado>> de forma indefinida. Los bloqueosindefinidos puedenresolverseusandotemporizadores.Por ejemplo, se puedefijar un temporizadorde 30 segundos para la operacin de conectar. Si la peticin no se completaen aproximadamente 30 segundos, el mecanismode comunicacinla abortar,en dicho instanteel procesoque la solicit pudiendo as continuar con su procesamiento. se desbloquear,

Otra causapara sufrir un bloqueo indefinido son los interbloqueos (deadlocks). En comunicacinentre procesos, un interbloqueopuede causarse por una operacinin-

procesos entre IPC- Comunicacin

55

ocadade forma no apropiada,quizs por culpa de una mala interpretacindel pro.rcolo o por erroresde programacin.La Figura 2.10 muestraeste caso. El proceso . ha invocadouna operacinde recibir para recogerdatosdel proceso2. A la vez, el rroceso 2 ha invocado otro recibir bloqueantecuando deberaser una operacinde bloqueados a es.,tvia.rlo apropiado.Como resultado,ambosprocesosse encuentran :eras de datos del otro, cosa que nunca puedeocurrir (debido a que cada procesose :ncuentrabloqueado).En resumen,cadaprocesopor su parte se encontrarsuspendi:o indefinidamente hastaque salte un temporizadoro hastaque el sistemaoperativo proceso. 'borte el

Proces o l

so

I I
lnvocado " recibirdel proceso 2"; El procesoI queda bloqueadoa esperade dat,rsdel proceso2

-@

l,Jna operacin Proceso ejecutando Proceso bloqueado

I I

Invocad o " recibirdel proceso l"; El proceso2 queda bloqueado a esperade datos del procesoI

bloqueantes. Figura 2.1O.Un interbloqueo causadopor operaciones

En el nivel fsico de una arquitecturade red (que es el nivel ms bajo, en oposicin anaal nivel de aplicacinque es el ms alto), los datos se transmitencomo seales un flujo binario. En el nivel de aplicacin,se necesilgicas, las cualesrepresentan ms compleja de los datostransmitidoscon el objeto de dar sora una representacin porte a la representacinde tipos de datos y estructurasproporcionadaspor los de caracteres, enteros,valoresen coma de programacin, talescomo cadenas lenguajes flotante, vectores,registrosy objetos. el caso simple de dos procesos,proceso 1 en el ordenadorA y Si consideramos proceso2 en el ordenadorB, que participan en un protocolo que implica el intercambio de un valor entero durante su ejecucin.El proceso 1 calcula el valor e invoca una operacinenviar para mandarel valor al proceso2, el cual invoca una operacin recibir para recoger dicho valor, para que el proceso 2 realice las operaciones con dicho valor, todo de acuerdoal protocolo establecorrespondientes cido. en el valor enteroque el proceso1 tiene que enviar.El valor enSi nos centramos del ordenadorA, que en el formato de representacin tero se encuentrarepresentado big-endian para tipos de datos es una mquina de 32-bits que utiliza representacin de varios bytes. (Los trminos big-endian y little-endian indican cul es el byte ms de valores de varios bytes de tamao.En arquitecsignificativo en representaciones

Analgico es lo opuesto a digital: hace referencia a algo mecnco, en oposicna algo que representa datos. El procesamiento de seales analgicas es un rea de trabajo dentro de redes de computadores.

Un flujo binario es un flujo de bits (0 y 1), tal . . . 1 0 1 01 11 . como 00101

54

y aplicaciones Fundamentos Computacin distribuida.

Aunque el bloqueo proporcionala sincronizacinnecesariapara los mecanismosde de comunicacin,es por lo generalinaceptableque un proceso se quede suspendido forma indefinida. Existen dos medidaspara solucionareste problema.La primera es el uso de temporizadores (timeouts),que se pueden atilizar para fijar el tiempo mximo de bloqueo. Los temporizadores los proporciona el propio mecanismode coy pueden municacin ser fijados desdeel programapor medio de una operacin.En proceso puede lanzar otro proceso hijo o un hilo de ejecucin segundolugar, un (thread) independiente para invocar la operacinbloqueante, permitiendode esta mapadre programa proceso nera al hilo de ejecucinprincipal o al del seguir ejecutando otras tareasde procesamiento mientras el hilo de ejecucino procesohijo se suspende.La Figura 2.9 ilustra este uso de los hilos de ejecucin.
Tiempo Proceso
@ principal Una operacn H i l oe n ejecucin Hilo bloqueado Nuevo hilo que invoca ala IPC bloqueante l ontina El hiloprincipac su propia ejecucin Hilobloqueado Hilo desbloqueadouna vez que la operacin se ha completado

paraunaoperacin Figura2.9. Utilizacin de un hilode ejecucin bloqueante. pueLos temporizadores sncronas son importantessi la ejecucinde operaciones de potencialmente dar como resultadoun bloqueo indefinido. Por ejemplo, una operacin bloqueantede conectar puede causarque el procesoque la solicita se quede y no se puede esde forma indefinida si la conexin no est establecida suspendido En tablecer debido a una cada en la red de interconexinentre ambos ordenadores. <<colgaesta situacin,es tpicamenteinaceptablepara el procesosolicitantequedarse do>> de forma indefinida. Los bloqueosindefinidos puedenresolverseusandotempoparala operarizadores.Por ejemplo, se puedefijar un temporizadorde 30 segundos el cin de conectar. Si la peticin no se completaen aproximadamente 30 segundos, mecanismode comunicacinla abortar,en dicho instanteel procesoque la solicit pudiendo as continuar con su procesamiento. se desbloquear,

Otra causa paa sufrir un bloqueo indefinido son los interbloqueos (deadlocks). En comunicacin entre procesos, un interbloqueo puede causarse por una operacin in-

entre IPC- Comunicacin orocesos

55

r.ocadade forma no apropiada,quizs por culpa de una mala interpretacindel prorocolo o por erroresde programacin.La Figura 2.10 muestraeste caso. El proceso i ha invocadouna operacinde recibir para recogerdatos del proceso2. Ala vez, eI proceso2 ha invocado otro recibir bloqueantecuando deberaser una operacinde a esbloqueados enviar lOlpropiado.Como resultado,ambosprocesosse encuentran perasde dtos del otro, cosa que nunca puede ocurrir (debido a que cada procesose incuentra bloqueado).En resumen,cada procesopor su parte se encontrarsuspendiJo indefinidamentehastaque salte un temporizadoro hastaque el sistemaoperativo borteel proceso.

Proces o l

Proces o2
I

o " recibirdel proceso 2"; Invocad El procesoI queda bloqueadoa esperade dat,rsdel proceso2

-@

I I

I I
I

I I
Invocad o " recibirdel proceso l"; El proceso2 queda bloqueadoa esperade datos del procesoI

I I

I I

l,Jna operacin Proceso ejecutando Proceso bloqueado

bloqueantes. causadopor operaciones Figura 2.10. Un interbloqueo

En el nivel fsico de una arquitecturade red (que es el nivel ms bajo, en oposicin ana.rl nivel de aplicacinque es el ms alto), los datos se transmitencomo seales un flujo binario. En el nivel de aplicacin,se necesilgicas,Ias cualesrepresentan ms compleja de los datostransmitidoscon el objeto de dar so:3 una representacin rorte a la representacinde tipos de datos y estructurasproporcionadaspor los enteros,valoresen coma de caracteres, talescomo cadenas -enguajes de programacin, y objetos. -lotante,vectores,registros el caso simple de dos procesos,proceso I en el ordenadorA y Si consideramos rroceso 2 en el ordenadorB, que participan en un protocolo que implica el inter:ambio de un valor entero durante su ejecucin.El proceso 1 calcula el valor e in1.oca una operacinenviar para mandarel valor al proceso2, el cual invoca una ope:acin recibir para recoger dicho valor, para que el proceso 2 realice las con dicho valor, todo de acuerdoal protocolo estableoperaciones -'orrespondientes ;ido. en el valor enteroque el proceso1 tiene que enviar.El valor enSi nos centramos del ordenadorA, que en el formato de representacin .ero se encuentrarepresentado big-endian para tipos de datos 3s una mquina de 32-bits que utiliza representacin ,le varios bytes. (Los trminos big-endian y little-endian indican cul es el byte ms .ignificativo en representaciones de valores de varios bytes de tamao.En arquitec-

Analgico es lo opuesto a digital: hace referencia a algo mecnco, en oposicin a algo que representa datos. El procesamiento de seales analgicas es un rea de trabajo dentro de redes de computadores.

Un flujo binario es un flujo de bits (0 y 1), tal . . . 1 0 1 01 11 . como 00101

56

y aplicaciones Fundamentos distribuida. Computacin

Se denominan computadores heterogneos a aquellos computadores que disponen de diferente hardware y por tanto de diferentes representaciones de datos.

ASCII son las siglas de American Standard Code for lnformation lnterchange (Cdigo estndar amercano para intercambio de informacin),y es un esquema de codificacin usado para caracteres del alfabeto ingls usando un rango de v a l o r e sd e 0 a 1 2 7 . Unicode es un esquema de codificacin complejo que permite traducir caracteres, no slo del alfabeto ingls, a valores numrcos entre 0 y 65535. Para una definicin ms precsa, vase http ://www. u n icode.org.

turas de tipo big-endian,el byfe ms a la izquierda [el de menor direccin] es el ms little-endian es el byte ms a la derechael ms signisignificativo. En arquitecturas, ficativo). de El computadorB, por su parte, es una mquina de 16-bits con representacin desque el dato de 32 bits es transmitido directamente datoslittle-endian. Supngase de el espaciode almacenamiento del proceso 1 aI espacioreservadopor el proceso2. (1) 16 bits de los 32 enviadosvan a ser truncadosya que el tamao de un Entonces entero en el computadorB es de slo 16 bits y (2) el orden de los bytes de la representacinde los enterosdebe ser intercambiadode forma que se interpretecorrectamente el mismo valor por parte del procesoreceptor. participan en heterogneos Como se ha visto en el ejemplo, cuandocomputadores una comunicacinentre procesos,no basta con transmitir los valores de los datos o las estructuras usandoflujos de bits en crudo a menosque los procesosparticipantes tomen las medidas oportunas para empaquetare interpretar los datos de forma apropara hacer esto: piada. Para nuestroejemplo hay tres esquemas 1. Antes de invocar a la operacinenviar, el proceso 1 convierteel valor entero a 16-bits en formato liule-endian para el proceso2. big-endian.Tras re2. El proceso 1 enva los datos en 32-bits y representacin cibir los datos, el proceso2 convierteel valor a su formato, 16-bits y littleendian. 3. Un tercer esquema es que los procesoscuandointercambiendatoslo haganen a esareuna representacin externa: los datosse van a enviar transformados presentacin y los datos recibidos se van a interpretarcon esa representacin y se van a traducir a la representacin nativa. que el proceso 1, ejecutndose en el ordenador Tomando otro ejemplo, supongamos en el ordenadorB. A, deseaenviar un simple carcteta al proceso 2, ejecutndose miende caracteres, El programapara el proceso 1 usa ASCII como representacin tras que el programadel proceso2 usa Unicode. El esquema1 obligar al proceso 1 a convertir el carcter a a Unicode antes de enviarlo. El esquema2 rcqu'erir que el proceso 2 reciba el dato, y lo convierta de ASCII a la representacin Unicode correspondiente. El esquema3 exigir que ambos extremos se pongan de acuerdo en una representacin externa,digamosASN.I (Abstract SyntaxNotation Number 1), de forma que el proceso 1 convierta el carctera a ASN.1 antesde mandarlo,y el proUnicode. (La repreceso 2 convierta el dato recibido de ASN.I a la representacin sentacin ASN.1 se explicaren la Seccin2.6.) Si se consideraotro caso ms cuando se transmiteuna estructurade datos, como externade por ejemplo una lista de valores,ademsde lo necesario de representacin o serializarla eslos valores de datos, existe en este caso la necesidadde <<aplanar>> el cambio en el otro extremo. tructura de datos en el extremo del emisor v deshacer para as reconstruirlos datos. El trmino de empaquetamiento de datos (data marshaling) se usa en el contexto de los mecanismosde comunicacinentre procesospara referirse a las transEl empaquetapara transmitir valores de datos o estructuras. formacionesnecesarias de comunicacine incluye los miento de datos se necesitapara todos los mecanismos pasos necesarios para acondicionarlos datos para ser transmitidos:(1) serializacin de las estructuras de datos,y (2) conversinde los valores de datos a las representade datos. ciones externas.La Figura 2.11 muestrael conceptode empaquetamiento a objetoscomo Java,unas Paraaplicaciones de red escritasen lenguajesorientados estructurasde datos que requieren especialatencin en 1oreferenteal empaquetamiento

IPC- Comunicacin entreprocesos

57

Compufqdor A

1. Aplanado de los campos de la estructurade datos. 2. Conversinde los datos ala representacin externa (de red).

1 1 0 0 1.1 . .1 0 0 0 0 1 0 .0 ..

Unmorsholing

Conversinde los datos ala representacin interna. Reconstruccinde las estructurasde datos.

..Esto es unaprueba,' 1.2

La conversin de representacininterna a externa, y viceversa no es necesariasi: -los dos extremos son el mismo tipo de computado ra; o -si los dos extremos negocian una conexin.

Compulqdor B

Figura2.11.Empaquetamiento de datos. -: datos son los propios objetos.A diferencia de estructuras de datos estticascomo 3ctores o registros,un objeto encapsula tantosdatos (representando el estadodel ob:io), como mtodos(representando el comportamientodel objeto). Si se va a trans,-rtirun objeto usando un mecanismode comunicacinentre procesoses necesario - -reel procesode empaquetamiento (de nuevo aplanadoy codificacin) cubra tanto a s datoscomo a la representacin de mtodos,incluyendo el estadode ejecucin,de ' rrna que el objeto una vez desempaquetado por el procesoreceptorpueda funcio- como un objeto ejecutandoen el espacio de dicho proceso.Debido a la compleJad existente,el empaquetado de objetos implica un mayor reto que el del resto de :!tructuras, se le ha dado un nombre especfico: serializacin de objetos .1\'a.sun.com, 11]. En Java, <<La seializacin de objetos soporta la codificacin de :ietos, y de los objetos alcanzables desdeellos, en un flujo de bytes, as como el rorte complementario para su reconstruccin en un objeto ... desdeel flujo de by=s" [Harold,12].

iunque determinados programasespecializados puedanescribirsepara realizarla co-,unicacinentre procesos usandoun esquema de representacin determinadode mu-\r acuerdo,las aplicacionesdistribuidasde propsito generalnecesitanun esquema ,riversal, e independiente de plataforma,para codificar el intercambio de datos. Por :ito Sehan definido estndares de red para la codificacin de datos. Como se muestraen la Figura 2.I2, bay estndares para la codificacin de datos -.sponiblesa diferentesniveles de abstraccin.

58

Computacin distribuida. Fundamentosy aplicaciones

Nivel de abstraccin

Esquemas de codificacin de datos

Estndares de ejemPlo

Lenguajede codificacinespecficode la aplicacin Lenguajegeneralde codificacin de datos Estndarde codificacinde datos de red

XML (Extensible Markup Language) ASN.1 (Abstract Syntax Notation) rsun XDR (External Data Representation)

de datos de red' de representacin Figura2.12. Estndares Al nivel ms simple, un esquemade codificacin como XDR (External Data Representation) [ietf.org, 1] permite que un conjunto de tipos de datos determinadoy unas estructurasespecficasse puedan codificar para usarsecon mecanismosde code datos se y desempaquetamiento municacin entre procesos.El empaquetamiento procesos en entre de comunicacin por funcionalidades las rcalizan automticamente programador. al transparente los dos extremos, de forma A un nivel de abstraccinms alto (esto es, ocultandoms detalles;se entraren como ASN.I esteconceptocon ms detalleen el prximo captulo),existenestndares de OSI (Open 2]. ASN.l es un estndar (AbstractSyntaxNotation Number 1) [oss.com, Interconnection)que especificala sintaxis de transferenciapata datos sobre Systems cubre un amplio rango de estructuras(como conjuntos y seuna red. El estindar y soportael conceptode cuencias)y tipos de datos (enteros,booleanosy caracteres) etiquetadode datos. Cada elementode datos transmitido se codifica usandouna sinuna etiquetaque identaxis que indica el tipo, la longitud, el valor y opcionalmente tifica una forma especficade interpretaresta sintaxis. IL (ExtensibleMarkup A un nivel an ms alto de abstraccinha emergido XJ Language) [w3.org, 9] como lenguajede descripcinde datos entre aplicacionesque comparteninformacin, principalmenteaplicacionesen Internet, usandouna sintaxis similar a HTML (HyperTextMarkup Language),que es el lenguajeusado para componer pginasweb. XML va un poco ms all que ASN.I en el sentido que permite al usuario usar etiquetasconfigurables(tales como <mensaie>, <de> o <para> en el especificaruna unidad de contenido de datos. XML ejemplo de la Figura 2,I3) parra para sepase utiza para facilitar intercambio de datos entre sistemasheterogneos, para mostrarlo la sintaxis (escrito XML) de en pgina web rar el conienido de una (escrita en HTML), y para permitir que los datos se compartanentre aplicaciones. Desde su aparicin en 1998, XML ha ganadouna atencinconsiderabley en la actualidad se utiliza en un amplio rango de aplicaciones.
<rnensaje> <a>MaryJ@BigU. edu</a> <de>Johll@OpenU. edu</de> <gobre>Comunlcacin <texto> </texto> </mensaje> La espina entre dorsaf procesos</golre> de los sistemas distribuidos son 1os " '

( t

t q l, li F 1 l

IT

Figura 2.13. Un ficheroXML de ejemplo.

n( h

entreprocesos IPC - Comunicacin

59

de datos es, en el caso ms simple, cuando se intercambian El empaquetamiento ;adenas dlcaracteres o texto codificado en una representacinde tipo ASCII. El lntercambiode datos en texto tiene la ventaja adicional de que puede ser fcilmente por un programay mostradoa un usuario humano.Por eso es relativanalizado en forma mente habitual en varios protocolos intercambiar peticiones y respuestas Mutexto. en Estos protocolos se denominanbasados de cadenasde caracteres. (File Transfer FTP ;hos protocolos habituales son basados en texto, incluyendo Protocol, protocolo de transferenciade ficheros), HTTP y SMTP (Simple Mail TransferProtocol, protocolo simple de transferenciade correo). El lector tendrla oportunidad de investigar y experimentar con estos protocolos en ejercicios al fivarios de estosprotocolosen detalle en posnal de este captulo, y se estudiarn reriorescaptulos.

Un tipo importante de protocolos son los protocolos de solicitud-respuesta.En esdel otro extremo. ros protocolosun lado invoca una peticin y esperauna respuesta El respuesta. de nuevo esperndose puede ser enviadaotra solicitud, Posteriormente, que la tarea sotipo hasta interacciones de este en protocolo se desarolla basindose licitada se ha cumplido. FTP, HTTP y SMTP son protocoloshabitualesdel tipo solicitud-respuesta.

en la seccin2.2, es un diagramaque se pueUn diagramade eventos,ya presentado de utilizar para documentarla secuenciadetalladade eventosy bloqueosdurante la ejecucinde un protocolo. La Figura 2.14 es un diagrama de eventospara un proA y B. La en el que participan dos procesosconcurrentes, tocolo solicitud-respuesta lnea vertiuna usando se representa proceso del tiempo respecto ejecucinde cada de ejela lnea durante lnea continua intervalo de que abajo. Un avanza hacia cal, un periodo de tiempo en el cual el proceso estabaactivo. Un incucin representa rervalo de lnea discontinua representacundo el proceso est bloqueado. En el ejemplo, ambosprocesosestn inicialmente activos. El procesoB invoca w recibir bloqueantecon antelacina la solicitud 1 del procesoA. El procesoA mientrastanusandopara ello un enviar no blorc lanza la solicitud 1 que se estabaesperando, queantey acto seguido un recibir bloqueantea la esperade la respuestade B. La de la sollegadade la solicitud 1 reactiva al procesoB que inicia el procesamiento licitud antesde invocar una operacinde enviar con respuesta1 para el procesoA. El proceso B invoca luego un recibir bloqueanteparu la solicitud 2. La llegada de la respuesta1 desbloqueaal procesoA, que reanudasu ejecucin para trabajar con sial procesoB. Una secuencia y prepararla peticin 2, que desbloquea .a respuesta :ular de eventosse sigue. enlazauna pareja de operacioCaberesaltarque cada turno de solicitud-respuesta El protocolo se puede extender ;es enviar y recibir para intercambiardos mensajes. hastacualquier nmero de turnos de intercambioscon este patrn.

60

y aplicaciones Fundamentos distribuida. computacin


Proceso B Tiempo

--*

Comunicacinentre Procesos

_;'::.:: ;iffiil"
de eventos' Figura2.14.Un diagrama que implementanel Tambin es necesarioindicar que es esencialque los programs de enviar y recibir en protocolo debenestar escrito, putu invocar lal operaciones de otr forma uno o los dos procesosparticipantespuede !i or"n preestablecido, que nunca llega y los procesos por una solicitud o una respuesta sperando quedarse pueden qoedat." bloqueados de forma indefinida' protocolo HTTP. por medio de un diagramade eventos.un La Figura 2.15 presenta, peticin-restipo del En su forma ms bsica,HTTP es un protocolo basadoen texto web es un servidor un que utiliza slo un turno de intercambiode mensajes. ;" navegadoprocesos peticionesrealizadasdesde i.o""ro'qo" escuchaconstantemente una invoca ello tras servidor, ies. Un rvegador web estableceuna conexin con el

Servidorweb

Navegador web

peticin

La peticin es un mensaiecon tres partes: de HTTP> - <mondoto><direccindet documento><versin - Una cabecera oPconal - Datos opcionalespara CCI cuando se usa el mtodo post

respuesta

La respuestaes otro mensaiecon tres partes: - Una lnea de estado con el form at <protocolo><cdigoestado><descripcin> que se puede extender en variaslneas - Informacnde cabecera, dicho - El documento Propamente

Figura 2.15. Diagrama de eventos de una sesin HTTP.

IPC- Comunicacin entre Drocesos

61

peticin en el formato digtadopor el protocolo. El servidor procesala peticin y respondecon una lnea de stado, una cabecera de informacin y el documentosolicitael navegadoranalizael documentoy do por el navegador. Tras recibir la respuesta, lo presentaen pantalla. (Se estudiarel modelo cliente-servidory el protocolo HTTP con ms detalle en el Captulo 5.) Un diagramade eventoses una herramientamuy til para ilustrar la sincronizacin entre eventos.Pero es, sin embargo,demasiadodetalladopara documentarprotocolos que sean complejos. Una forma simplificada de este diagrama,denominada para diagrama de secuenciay pafte de la notacin UML, se usa ms habitualmente denotarla comunicacinentre procesos. En un diagramade secuencia, el flujo de ejecucinde cada participantedel prode blopor una lnea discontinuay no se diferenciaentre estados tocolo se representa con queo y ejecucin.Cada mensajeintercambiadoentre dos elementosse representa de emisor y receptorsobre una lnea dirigida que va entre las dos lneasdiscontinuas la que se aadeuna etiquetadescriptivadel mensaje,tal y como se ilustra en la Fisura2,t6.
ProcesoA Proceso B Tiempo

: :
i
:1,

neticin1

peticin2

---.>
Comunicacin entre procesos

respuesta

Figura 2.16. Un diagrama de secuencia.

de una sesinHTTP bsicase muestraen la Figura 2.17. El diagramade secuencia


Navegadorweb Servi d o r web

i
I

i
PeticinHTTP

: t
i

HTTP Respuesta

i i
Figura 2.17. diagramade secuenciapara una sesin HTTP.

62

y aplicaciones Fundamentos distribuida. Computacin

durante una seLaFigla 2.18 muestrael texto de los mensajesintercambiados protocolo utili(telnet es un telnet un cliente medio de Por ejemplo. sin HTTP de se puede remota), mquina una sobre terminal para de una sesin zado normalmente (La mano. HTTP a peticin de una texto el introducir web e servidor conectara un peraqu indicada la forma proceso de un con para comunicarse de telnet utilizacin de escribir el programa,pero mite hacer pruebascon procesosva IPC sin necesidad es necesarioavisar de que sta no es la forma normal de interactuarcon estosproceEn este a programarestasinteracciones). captulosse aprender sos.En los siguientes caso,el servidorweb se ejecutasobreel puerto 80 de la mquinawww.csc.calpoly.edu. del servidor web La peticin GET /-mliu/ HTTP/I.O se teclea y enva. La respuesta se ri*ite a continuacin.En el Captulo 9 se estudiarel significado de las peticiocuando se expongael protocolo HTTP en detalle. nes y respuestas
staried on Tue Oct 10 21-:49:28 2000 vr\^iw. csc. calpoly. edu B0 9 :49pm telnet T r y i n g I 2 9 . 6 5 . 2 4 1 ' . 2 0. . . Connected to tiedye2-srv.csc.calpofy.edu. 'n]'. Escape character is HTTP /L .0 cET / -mLiu/ Sorint

Peticin HTTP

HTTP/1.1200 0K Dare: wed, 11 ocr 2000 04:51:18 GMI<-Lnea


q onor. usl vs!.
nvqvr r s/f

de estadoHTTP
de reSpuesta HTTP

A n a c h e - l ..Jl .-/ Q

r Tlniyr \vr !,!/

anaehe'lServ

ti.

<-Cabecera

Tue, 10 Oct 2000 16:51:54 GMI Last-Modified: ETag: "l-ddle-e27-39e3492a" bytes Accept-Ranges: 3623 Content-Length: Connection: close Content-TVpe : text/html
<HTML> <HEAD> <TITLE> < /TITLE> < /HEAD> <BODY bgcolof=#f f f f f f> Mei-Ling L. Liu' s Home Page

Figura 2.18. El dilogoduranteuna sesin HTTP.

y no orienorientadas En el Captulo 1 se introdujo la distincin entrecomunicaciones de IPC. tadasa conexin.Vamos a aplicar esta distincin a los mecanismos Por medio de un mecanismode IPC orientado a conexin, dos procesosestablecen una conexin (la cual, como recordatorio,decamosque poda ser lgica, es decir, implementada por software en lugar de verdaderamentefsica), y posteriormente insertandatosen o extraendatosdesdedicha conexin.Una vez que la conexin est la identificacin de emisor y receptor. no es necesaria establecida,

entreprocesos IPC - Comunicacin

63

Para el caso de una IPC no orientada a conexin, los datos son intercambiados por medio de paquetes independientes cada uno de los cuales necesita explcitamente la direccin del receptor. Cuando se estudie el API de sockets en el Captulo 4, se ver cmo los mecanismos de IPC orientados v no orientados a conexin se proporcionan aI nivel de aplicacin.

IJna vez expuestoel conceptode comunicaciones entre procesos(IPC), veremosdipor medio de los cualesla comunicacinentre proferentesmodelos,o paradigmas, cesos se proporciona al programador que quiere utilizar una IPC en su programa. Al de codificacin de datos se dan a comienzode estecaptulo se vio que los esquemas Lo mismo se puededecir de los paradigmasde codiferentesniveles de abstraccin. tal y como muestralaFigtra2.I9. municacinentre procesos, En el nivel menos abstracto,la comunicacinentre procesosimplica la transmisin de ristras binarias sobre una conexin, utilizando una transferenciade datos de puedeser bajo nivel, serie o paralelo.Este paradigmade comunicacinentre procesos vlido para el desarrollodel software de un driver de red, por ejemplo. Una IPC de estaforma cae dentro del dominio de programacinde red o de sistemaoperativo y no lo va a cubrir este libro. El siguiente nivel es un paradigmabien conocido, denominado intefiaz de pro' gramacin de aplicaciones de sockets (el API de sockets).Por medio del paradigma de sockets,dos procesosintercambiandatos por medio de una estructuralgica denominadasocket, habiendo uno de cada tipo en cada extremo. Los datos a transmitir se escriben sobre el socket. En el otro extremo, un receptor lee o extrae datos del socket. Se estudiarel API de socketsdel lenguaje Java en el prximo captulo. Los paradigmas de llamadas a procedimientos remotos o de invocacin de mtodos remotos proporcionan una mayor abstraccin, permitiendo al proceso realizar o la invocacin de mtodosde un procesoremoto, con la llamadasa procedimientos transmisinde datos como argumentoso valores de resultado.Se estudiaruna implementacin de esteparadigma,la invocacinde mtodosremotosen Java,en el Captulo 8.

Transferenca de datos serie se refiere a la transmisin de datos bit a bt. Lo opuesto a transferencia de datos sere es transferencia de datos en paraelo, en la cual varos bits se transmiten concurrentemente. Sockef es un trmino tomado de los primeros das de las comuncacones telefnicas, cuando un operador tena que establecer manualmente una conexin entre dos partes inseftando los dos extremos de un cable en sendos socketsl.

Nivel de qbsfrqc cton

Porqdigmqs de IPC Invocacin de mtodos/procedimientos remotos API de Sockef Transmisin de datos

de IPC de implemenfociones Ejemplos RemoteProcedureCall (RPC), (RMl) JavaRemoteMethodlnvocation Winsock API de sockefsde UNIX, nicacinserie/paralelo Comu
' (N. del f: Sockef en ingls significa enchufe.)

I I

entre procesos. de comuncacin Figura 2.19. Paradigmas

64

y aplicaciones Computacin distribuida. Fundamentos

La comunicacinentre procesos(IPC) conforma el eje central de la computacindistribuida. En este captulo se han visto los principios de los mecanismos de IPC, incluyendo lo siguiente: . Comunicacinentre procesos(IPC). La posibilidad de que procesosindependientes,y separados se comuniquenentreellos para colaboraren una tarea.Cuando una comunicacinse realiza nicamentede un procesoa otro, el mecanismo IPC se denominaunidifusin. Cuando la comunicacinse realiza entre un procesoy un grupo de procesos,el mecanismoIPC es multidifusin. . IJna API bsica de funcionalidades para IPC debe proporcionar: -Primitivas de operacin:enviar, recibir, conectarse, y desconectarse. - La sincronizacin de eventospermite que procesosrelacionadosse ejecuten independientemente, sin conocimientode lo que ocune en el otro extremo. La forma ms sencillapara que un mecanismode comunicacinpermita sinque son bloqueantes cronizacines por medio de bloqueos.Las operaciones mientrasque las que no son se denominana menudo operaciones sncronas, puebloqueantes sellaman tambinoperaciones asncronas. Los interbloqueos La utilizacin de hiden aparecer debido al uso de operaciones bloqueantes. los de ejecucin (threads)o procesospermiten la realizacinde otras tareas a un procesoque an esperaque una operacinbloqueantese complete. - El empaquetamientode datos (data marshaling) necesariopara preparar los datos para su transmisinpor red, est compuestopor los siguientespasos: (i) serializacinde las estructuras de datos, y (ii) conversinde los valores de datos a una representacin externao de red. . Existen diferentesesquemas de datos de red a diferentesnide representacin velesde abstraccin. Algunos de los ms conocidosson Sun XDR(External Data Representation), ASN.I (Abstract Syntax Notation Number 1) and XIIL (ExtensibleMarkup Language). . El empaquetamiento de datos es ms sencillo cuandolos datos a transmitir son por medio de una codificacin una secuencia de caracteres o texto representado de tipo ASCII. Los protocolos que utilizan texto se denominanprotocolos basadosen texto. . Los protocolos del tipo solicitud-respuesta son protocolosque envan iterativahastaque se completenlas tareas. mente mensajesde solicitud y de respuesta . Un diagrama de eventos se utiliza para documentarla secuenciadetalladade eventosy bloqueosen un protocolo. Un segmentocontinuo a lo largo de la lnea de ejecucinrepresenta el periodo de tiempo duranteel cual el procesoest que el procesoest bloqueado. activo. Una lnea discontinuarepresenta . Un diagramade secuencia es parte de la notacin UML y se utiliza para documentar iteracionesentre procesosque son complejas.En un diagrama de secuencia, el flujo de ejecucin de cada participantedel protocolo se representa por una lnea discontinuay no se diferencia entre estadosde bloqueo y ejecucin. . Las funcionalidades o no de comunicacinentre procesospuedenser orientadas orientadasa conexin:

procesos IPC- Comunicacin entre - Por medio de los mecanismosorientadosa conexin, dos procesosestablecen una conexin lgica, para posteriormente intercambiardatos insertndolos y extrayndolos de la conexin.una vez que la conexin se ha establecido no es necesarioidentificar a emisor y receptor. - En el caso de mecanismosno orientadosa la conexin, los datos se intercambianpor medio de paquetes independientes, cada uno de los cualesnecesita identificar al receptor. ' Las funcionalidades de tipo IPC puedenclasificarsede acuerdoa sus niveles de abstraccin, yendo desdetransferencia de datosserie/paralelo, al nivel ms bajo, pasando por el API de socketsal siguientenivel, hastallamadasa procedimientos o mtodosremotos.al nivel ms alto.

65

1. Teniendoen cuentael caso de la comunicacinenfre humanos; a. Clasifique cada uno de los siguientesescenarios en trminos de unidifusin o multidifusin: i. Un estudiantehablandocon un amigo por medio de un telfono inalmbrico. ii. Un ejecutivo hablando va conferenciatelefnica con empresariosen varias ciudades. iii. Un profesor dando clase en un aula. iv. Un nio jugando con otro usandoun walkie-talkie. Un presidentedirigindosea la nacin en televisin. b. Cmo se realizala sincronizacinde eventosy la representacin de datos durante una sesin de una conversacincura a cara, tal y como se hace cuando se habla con alguien sentadoa su lado? c. Cmo se realiza la sincronizacinde eventosy la representacin de datos duranteuna sesinde conversacin a distancia.tal v como se hace cuando se habla con alguien por telfono? d. Cmo se realiza la sincronizacinde eventosy la representacin de datos durante una reunin entre dos representantes de dos nacionesque hablan idiomas diferentes? 2. El procesoA mandaun mensajesencillo al procesoB usandouna llamadaIpc no orientadaa conexin. Para hacerlo,A invoca una operacinenviar (especificando un mensajecomo argumento) en algn instantedurantesu ejecucin, y B invoca una operacinrecibir. suponga que la operacinenviar es asncrona (no bloqueante)y la operacinde recibir es sncrona(bloqueante). Dibuje un diagramade eventos(no un diagramade secuencia) para cadauno de los siguientesescenarios. a. El procesoA invoca la operacinenviar antes de que el procesoB invoque la operacinrecibir. b. El procesoB invoca la operacinrecibir antesde que el procesoA invoque la operacinenviar. 3. Repita la ltima pregunta.Esta vez ambasoperaciones (enviar y recibir) son bloqueantes. v.

66

y aplicaciones Fundamentos distribuida. Computacin

4. Considereel API de comunicacinentre procesossiguiente: de buzones.Un procesopuede comuniEsta API enva y recibe los mensajes dos procesos. compartido por eSoS buzn un proceso usando otro carse con por ejemplo, si l procesoA deseacomunicarse con los procesosB y C, debe compartii el buzn 1 con el procesoB, y otro buzn, el buzn 2, con c. Los meniajes entre A y B se depositany recogen del buzn 1, mientras que los la Figu-"nruj". entreA y C se depositany recogendel buzn 2. Obsrvese ra 2.20. enviar y recibir se definen como: Las operaciones - enviar (n, mensaje):Enva un mensajeal buzn n, bloqueante(es decir, que al buzn comhastaque llegue una respuesta el emisor quedarsuspendido partido). - recibir (n, mensaje):Examina el buzn n con antelacina la recepcinde que significa que el proun mensaje;es tambinuna operacinbloqueante, ceso receptor quedar suspendidohasta que llegue un mensaje al citado buzn. Un procesoque se encuentrebloqueadoa la esperade un mensajeen un determinado buz6n no podr recibir ningn mensajepor otro buzn' a. Supongaque un procesoP esperarecibir dos mensajes'uno por el buzn 1 y otro por el buzn 2. No se conocea priori ni el instanteni el orden en el que vn a ilegar los mensajes.Qu secuenciade enviar y recibir, si que el procesoP no se bloquea existe, se puede ejecutar para asegurafse permanentemente? de enviar y recibir, si existe, debe ejecutarel procesoP si b. Qu secuencia por el buz6n 2 [ul"t" esperarpor un solo mensajebien por el buzn 1 9 qu menpor adelantado (b mctuso) por ambos?De nuevo, no se conoce un causar debe no propuesta saje llegar primero. Asimismo, la secuencia bloqueo indefinido. dadasen el cadebe utilizar nicamentelas operaciones (Nota: Su respuesta del sistemaoperaptulo; no utilice hllos (threading) u otras funcionalidades tivo.) 5. Sepuede dar un interbloqueodurantela comunicacinentre procesos(utilizando enviar I recib ir). que proporcionauna operacinde enviar a. en un sistemade comunicaciones bloqueantey de recibir bloqueante? que proporcionauna operacinde enviar b. en un sistemade comunicaciones no bloqueantey de recibir bloqueante? es afirmativa, proporcioneun ejemplo. Si la respuesta Justifique su respuesta. argumentacin. breve una d negativa, es Si la respuesta 6. Considereel desarrollode una API de multidifusin sobre una API existente enviar y de tipo unidifusin. El API de unidifusin proporcionaoperaciones operaproporcionar debe multidifusin de API procesos. El reciiir entre dos de proceso (2) de un recibir y procesos, de grupo (1) un a enviar ciones para multidifusin de operaciones las proporcionara cmo Describa multidiiusin. de unidifusin nicamente.(Nota: Su respuestadebe usando las operaciones utllizar nicamente las operacionesdadas en el captulo; no utilice hilos del sistemaoperativo)' (threading) u otras funcionalidades

IPC - Comunicacin entre procesos

67

I Roceso A

Roceso B

Flujo

de mensajes

Buzn2

Figura2,2o.una inrertaz de programacin de aplicaciones lpc parael Ejercicio 4. 7. En un sistemadistribuido, tres procesosPl, p2, y p3 pnt:cipan en una comunicacin entre procesos. Suponga que sucede la siguiente secuenciade eventos: En el instante I, P3 invoca un recibir para P2. En el instante2, Pl enva el mensajemI hacia P2. En el instante3, P2 invoca un recibir para PL. En el instante4, P2 recibe el mensajemL En el instante5, P2 enva el mensajeml hacia P3. En el instante6, P3 recibe el mensajeml . Pl invoca un recibir paraP2. En el instante7, P2 invoca un recibir para P3. En el instante8, P3 enva el mensajem2 hacia P2. En el instante9, P2 recibe el mensajem2. En el instante I0, P2 enva el mensajem2 hacia pI. En el instante ll, Pl recibe el mensajem2. a. Para cada uno de los siguientesescenarios, dibuje un diagramade eventos para mostrarla secuencia de eventosy los bloqueosy desbloqueos de cada proceso: i. ii. en un sistemade comunicaciones que proporcionauna operacinde enviar bloqueantey de recibir bloqueante, en un sistemade comunicaciones que proporcionauna operacinde enviar no bloqueantey de recibir bloqueante.

b. Dibuje un diagrama de secuencia para documentarla comunicacinentre los procesos PI, P2, y P3.

68

y aplicaciones Fundamentos distribuida. Computacin

de datos(data marshaling). 8. Este es un ejercicio sobre empaquetamiento a. En el contexto de IPC: i. de datos?Hay dos pasosdentro del emQu es el empaquetamiento y describacada uno. Por qu es nmbrelos paquetamiento datos, de de datos? necesarioel empaquetamiento

Qu es la serializacinde objetos? de datosa (i) un iii. Cmo se aplican los dos pasosdel empaquetamiento qu generales en trminos (ii) Describa y un objeto? de enteros, vector datos. con los es necesariorealizar b. El procesoA enva al procesoB un nico dato, una fecha. El procesoA usa el formato americano de fecha: <mes>/<da>/<ao> (por ejemplo, 0ll3Il20OI). El procesoB usa el formato europeo:<da>/<mes >/<ao> (por ejemplo, 3ll0ll200t). ii. i.
una representacin externa de datos. que no se ha acordado Suponga

a. CmoA enviaraLa fecha a B para que A no necesite hacer ninguna conversin? b. CmoA enviarala fecha a B paru que B no necesite hacer ninguna conversin? Supongaque la misma fecha se comunicaal procesoC, que utiliza un formato de fecha del tipo: <ao>-<mes>-<da> (por ejemplo, 200131-01).CmopuedeA enviarla fechaa B y C alavez de forma que A no tenga que realizar conversinalguna?

ii.

externa de datos para la fecha de forma iii. Describa una representacin que cualquier procesoemisor convierta la fecha del formato de repreexterno antesde enviarla, sentacinlocal al formato de representacin la y que cualquier proceso receptor convierta fecha recibida del forexterno al suyo propio. mato de representacin 10]. resultarlede intersla consultade la referencia Puede [saqqara.demon.co.uk, 9 . Utilice telnet pafainteractuarcon un servidorDaytme [RFC 867, 4] sobreuna el puerto 13. Daytime escuchan Los servidores mquinaa la que tenga acceso. teclee: Desdeuna ventanade consola sobre el smbolo de sistema
telnet Ejemplo: <espacio> telnet <nombre o direccn maquina.universidad.edu IP de la 13 mquina><espacio> 13

Recopile wa traza de la sesiny describasus observaciones. para el protocolo Daytime. 1 0 .Dibuje un diagramade secuencia 1 1 .Esposible pata un cliente Daytime que se quedebloqueadode forma indefinida? Explquelo. 12. Utilice telnet pan interactuarcon un servidor echo IFfC 862, 6l sobre una el puerto 7. mquina a la que tenga acceso.Los servidoresecho escuchan a. Dibuje un diagramade eventospara el ptotocolo echo. b. Es posible para un cliente Daytime que se quedebloqueadode forma indefinida? Explquelo. 1 3 .Considereel protocolo F'IP (File TransferProtocol, Protocolo de Transferencia de Ficheros) IRFC 959, 5].

IPC- Comunicacin procesos entre Nteseque esteprotocolo utiliza dos conexiones:una para transmitir las peticiones y respuestas y otro para transmitir los ficheros para ser enviados/recibidos.
a. Utilice telnet para conectarse a un servidor FTP al que tenga acceso. Luego solicite un mandato para listar el contenido del directorio raz del servidor.

69

b. Utilice un diagramade eventospara describirlas interacciones entrelos procesosparticipantes. c. Cul, es el formato de cada peticin? d. Cul es el formato de cada respuesta? e. Considereel mandatoMODE del protocolo: permite especificarel tipo de fichero (texto o binario) a transmitir. Cuifl es la representacin de datos para cada uno de los diferentesmodos de fichero? 1 4 .Considereel protocolo SMTP (SimpleMail TransferProtocol, Protocolo Simple de Transferencia de Correo) [RFC 821, 3]. Un extracto de la RFC de este protocolo proporcionala siguientesesinde ejemplo:
R: 220 USC-ISI.ARPA Simple Mail Transfer Service Ready S: HELO LBL-UNIX.ARPA R: 250 USC-IST.ARPA S: MAfL FROM:<mo@LBL-UNIX.ARPA> R: 250 OK S: RCPT TO:<Jones@USC-ISI.ARPA> R: OK S: DATA R: 354 Start mail input; end !ith <CRLF>.<CRLF> S: Bla bfa bla... S: .. .etc. etc. etc. S: 250 0K QU]T 221 USC-ISI.ARPA Servce closing transmission channef

R: R:

a. Utilice un diagramade secuencia para describir las interacciones entre los procesosparticipantes. b. Cul es el formato de cada peticin? c. Cul es el formato de cada respuesta? d. Utilice telnet para conectarse a un sistemadonde usted tenga una cuenta SMTP, y envesea s mismo un correo. Conctese luego al sistemay verifique que el correo ha llegado. Recopile una traza de la sesiny describasus observaciones.

(Nota: Todos los RFC (Requests se puedenconsultar en Inea en la for Comments) pgina:IETF RFC Page,http:llwww.ietf .orykfc.html.)
1. 2. 3. 4. RFC I0I4, External Data Representation. <ASN. 1 Overview>>, http://www.oss.com./asnl/overview.html. RFC 821, SMTP. RFC 867. Protocolo Davtime.

70

distribuida. Computacin

5. 6. 7. 8. 9. 10. 11. 12.

Você também pode gostar