PARALELOS 07

download PARALELOS 07

of 9

description

este es un tema de alumnos de estudios superiores, relizado el 2015 en el tercer año academico

Transcript of PARALELOS 07

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

UNIVERSIDAD:UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD: INGENIERA

ESCUELA: ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS

CURSO: PROGRAMACIN PARALELA

AO: SEGUNDO A

TEMA:PRACTICA DE LABORATORIO

N :07

DOCENTES: ING.HUGO BARRAZA / ING. ANA CORI

ALUMNO: JUAN ANTONIN QUISPE HUILLCA

CODIGO: 2012-36163

TURNO: Maana

HORA : 8:00 am -10:00 am

F. ELAB.:13/10/14

F. ENT.:27/10/14

TACNA PERU2014

1. OBJETIVOS Poner en prctica lo aprendido acerca de paso de mensaje sncrono. Aprender el funcionamiento de paso de mensaje sncrono.2. FUNDAMENTO TERICOLa iniciativa de los canales de sncronos consiste en que ser necesario el encuentro del emisor y el receptor en las operaciones de envo y recepcin. var ch: channel of synchronous;ch ! any Enviar mensaje de sincronizacin al canal chch ? any Recibir mensaje de sincronizacin del canal ch

El compilador declara automticamente una variable any de tipo synchronous para todos los programas.Aqu las diferentes variantes de la en Pascal fc. ALTERNATIVAS CON GUARDASLas alternativas con guardas se utilizan para filtrar las alternativas seleccionadas no deseadas temporalmente. En Pascal-FC tiene la siguiente sintaxis:when B =>Donde B es una expresin booleana. Cuando se encuentra una instruccin de seleccin, todos los guardas se comprueban y solo los que evalan a true se consideran abiertos.selectwhen condicion1 =>ch1 ? mensaje1;(*mas sentencias*)orwhen condicion2 =>ch2 ? mensaje2;(*mas sentencias*)or...orwhen condicionN =>chN ? mensajeN;(*mas sentencias*)end;

Tenga en cuenta que timeout y terminate no se pueden mezclar en la misma sentencia select en Pascal-FC, principalmente debido a una combinacin no tiene sentido (por ejemplo, mezclar un else con un timeout significa que nunca ser elegido el timeout).ALTERNATIVA TIMEOUTselectch1 ! a;orch2 ? b;ortimeout 3;end;

La alternativa timeout especifica las sentencias que se ejecutaran si no hay otra alternativa disponible despus del tiempo especificado (que es en segundos).ALTERNATIVA TERMINATEselectch1 ! a;orch2 ? b;orterminate 3;end;

La alternativa terminate se elige si y solo si: No hay pendientes de lecturas o escrituras de canales en otras alternativas y todos los dems procesos que podan leer o escribir en un canal o han terminado o estn esperando en un select con una alternativa terminate.Esto proporciona una manera conveniente para los procesos que deban terminar cuando ya no son necesarios.ALTERNATIVA ELSEselectch1 ! a;orch2 ? b;else{Hacer otras cosas}end;

La alternativa else se ejecuta inmediatamente si no hay otra alternativa disponible. Esto es til para procesos hbridos que responden a las peticiones de otros procesos, pero tambin tienen su propio trabajo que hacer cuando no hay consultas para tratar.ALTERNATIVAS CON PRIORIDADHay una variacin adicional en la instruccin select que le permite al programador especificar la prioridad de las alternativas cuando ms de una se est disponible:pri selectch1 ? a;orch2 ? b;orch3 ? c;end;

Pri select elige a la primera (en orden textual) alternativa disponible3.- PROCEDIMIENTO Y DESARROLLO

*Cree un proyecto de Pascal- FC al cual llamar P07.*Copie el siguiente cdigo Fuente en un nuevo archivo al cual llamara Ej1.pfc.program ej01;constksminsleeptime=5;ksmaxleeptime=10;kwminworktime=5;kwmaxworktime=15;kciclos=10;kworkers=2;typesyn= channel of synchronous;barreras= array[1..kworkers] of syn;varterminado: barreras;barrera: barreras;process starter;varid: integer;cont: integer;sleeptime: integer;beginwriteln(' Starter activo. ');for cont:= 1 to kciclos dobeginsleeptime:= ksminsleeptime + random(ksmaxleeptime - ksminsleeptime + 1);writeln(' Starter durmiendo por ', sleeptime,' seg. ');sleep(sleeptime);writeln(' starter liberando workers en ciclo ', cont, ' . ');for id:= 1 to kworkers do beginbarrera[id] ! any;end;writeln(' starter esperando a que workers terminen. ');for id:=1 to kworkers dobeginterminado[id] ? any;end;end;writeln(' starter terminado ');end;process type worker(id: integer);varcont: integer;worktime: integer;beginwriteln(' worker ', id,' activo. ');for cont:= 1 to kciclos dobeginwriteln(' worker ', id, 'esperando a ser liberado en el ciclo ', cont,' . ');barrera[id] ? any;worktime:=kwminworktime + random(kwmaxworktime - kwminworktime + 1);writeln(' worker ', id,' working for ', worktime,' seconds. ');sleep(worktime);terminado[id] ! any;end;writeln(' worker ', id,' terminado. ');end;varindex: integer;workers: array[1..kworkers] of worker;beginwriteln(' PROGRAMA DE CANALES SINCRONOS ');writeln(' ============================= ');cobeginfor index:= 1 to kworkers dobeginworkers[index](index);end;starter;coend;end.

4.- ACTIVIDADESSalida del programa Y el programa compilado

Desarrolle lo que se pide a continuacin a) Qu es lo que hace el programa?Por lo que se llega entender, es que hay trabajadores que empezaran a laborar en un tiempo determinado, el programa en si hace que los trabajadores se activen y descansen, luego de que cada obrero termine, seguidamente entrara otro que realizara la misma labor y descansar, en el programa tambin se ve los tiempos en los que los trabajadores esperarn.El tiempo que descansen y trabajen ser aleatorio, pero se tomara en cuenta para la salida del programa, se medir en segundos. b) Realice un diccionario de variables y constantes, indicando la funcin de cada una de ellas en el programa.Ksminsleeptime : el mnimo tiempo que duerme Ksmaxleeptime : el mximo tiempo que duermeKwminworktime : el mnimo numero de procesosKwmaxworktime : el mximo nmero de procesosKciclos: nmero de ciclosSleeptime: tiempo dormido

c) Qu es channel of synchronous? Por qu se us en este programa?Sirve para sincronizar los canales, para que haya interaccin entre los subprocesos que se vienen ejecutando, se uso para interactuar, la variable barrera con la otra variable terminado.d) Para qu sirve la palabra reservada any?Esta palabra se aade de manera automtica para identificar que estamos usando el synchronous en nuestro programa. Para indicar que estamos enviando y recibiendo un mensaje de sincronizacin hacia cualquiera de los canales existentes.e) Por qu las barreras est definido como un arreglo de canales?Para identificar un lmite exacto de trabajadores que laboren y as el programa no transcurra de manera infinita gastando as memoria del procesador.Dentro del proyecto P07, copie el siguiente cdigo fuente del problema resuelto 1 (pgina 306 del texto base y nmbrelo EJ2.pfc.)program ej02;constnumpro=10;varcontador:integer;pidoper: array [1..numpro] of channel of synchronous;permisocon: array[1..numpro] of channel of synchronous;process type proceso(ident: integer);varmensaje:integer;contador:integer;beginrepeatwriteln(' PEDIR PERMISO ');pidoper[ident] ! any;permisocon[ident] ? any; writeln(' PERMISO CONCEDIDO ');foreverend;process controlador;varident: array[1..3] of integer;cont1, cont2: integer;begincont1:=0;repeatcont1:= cont1+1;selectfor cont2:=1 to numpro replicatepidoper[cont2]? any;ident[cont1]:=cont2;orterminate;end;if cont1=3 thenbeginfor cont1:=1 to 3 do permisocon[ident[cont1]]! any;cont1:=0;end;foreverend;varprocesos: array[1..numpro] of proceso;begincobegincontrolador;for contador:=1 to numpro doprocesos[contador](contador);coend;end.

5.-CONCLUSIONES *El uso de paso de mensajes sncronos en Pascal FC son los inicios de la implementacin en cuanto a hechos reales se trata. * El uso de paso de mensaje asncrono nos ayud a dar eficiencia en el proceso a programar.6.-REFERENCIA BIBLIOGRAFICA.-

Mndez, J. T. (2003). Programaci Concurrente. Espaa : Parainfo.