Creacin de Procesos y Ejecucin - PowerPoint PPT Presentation

1 / 40
About This Presentation
Title:

Creacin de Procesos y Ejecucin

Description:

... librer a (informaci n, comunicaci n entre pares de procesos, grupos de procesos, ... Estas llamadas son comunicaciones entre pares de procesos (pairwise) ... – PowerPoint PPT presentation

Number of Views:77
Avg rating:3.0/5.0
Slides: 41
Provided by: Marc328
Category:

less

Transcript and Presenter's Notes

Title: Creacin de Procesos y Ejecucin


1

SISTEMAS DISTRIBUIDOS Y PARALELOS -2006- Dto. de
informática UNSL Argentina
2
UNIDAD Nro. Pasaje de Mensajes 1
-Característica del Pasaje de Mensajes 2 -Máquina
Virtual Paralela (PVM) 3 -Programación Paralela
con Pasaje de Mensajes 4 -Message Passing
Interface (MPI)
3
UNIDAD Nro. Pasaje de Mensajes (1era. Parte)
1-Características del Pasaje de
Mensajes 2-Máquina Virtual Paralela (PVM) 2.1-
Demonio PVM - Creación de Procesos 2.2- Opciones
de la librería (información, comunicación entre
pares de procesos, grupos de procesos,
comunicaciones colectivas, sincronización) 2.3-
Ejemplos
4
PASAJE DE MENSAJES
  • Modelo de Pasaje de Mensajes
  • procesos que colaboran para resolver un problema
  • espacios de memoria independientes
  • coordinación y comunicación por medio de Mensajes
  • Factible y apropiado
  • en multiprocesadores
  • en multicomputadores
  • en redes de computadoras

5
CARACTERÍSTICAS DEL PASAJE DE MENSAJES
  • Programabilidad
  • La tarea de programación es pesada ya que todos
    los detalles de distribución de datos,
    planificación y comunicación entre las tareas
    queda en manos del programador.
  • Esta responsabilidad incluye el balance de carga,
    replicación de datos y mantenimiento de la
    coherencia
  • Los programas de pasaje de mensajes son propensos
    a error y son difíciles de depurar

6
CARACTERÍSTICAS DEL PASAJE DE MENSAJES
  • Eficiencia
  • Si el programador tiene suficiente tiempo para
    depurar su programa, puede lograr acercarse tanto
    como se pueda a una solución óptima (todo queda
    en manos del programador)
  • En aplicaciones de intensivo cómputo, la
    eficiencia es la principal razón de la
    predominancia del pasaje de mensajes sobre la
    programación de memoria compartida

7
CARACTERÍSTICAS DEL PASAJE DE MENSAJES
  • Portabilidad
  • Los programas se pueden ejecutar en SMP, Máqs.
    secuenciales y en Cluster de SMP

8
ESTRUCTURA GENÉRICA
  • Estructura Básica de un Algoritmo Paralelo PM
  • 1º Reparto de tareas y datos
  • 2º Procesamiento Paralelo
  • 3º Reunión y Combinación ? Resultados
  • Organización del Algoritmo Paralelo
  • organización maestro-esclavos
  • organización nodos iguales con líder
  • Modelos de escritura de los programas
  • modelo MPMD
  • modelo SPMD

9
CREACIÓN DE PROCESOS
  • Existen dos métodos para crear y comenzar la
    ejecución de procesos
  • 1) Creación Estática
  • todos los procesos son especificados a priori
    de la ejecución
  • el sistema ejecutará con un número fijo de
    procesos
  • la creación se realiza a nivel de la línea de
    comando
  • Ejemplo MPI

10
CREACIÓN ESTÁTICA DE PROCESOS
  • Modelo de ejecución es generalmente SPMD

11
CREACIÓN DINÁMICA DE PROCESOS
  • 2) Creación Dinámica
  • los procesos pueden ser creados y sus ejecuciones
    iniciadas durante la ejecución de otros procesos
  • los procesos pueden ser destruidos dinámicamente
  • la creación y destrucción se realiza mediante
    constructores o llamadas a librerías que provean
    la funcionalidad paralela
  • la creación y destrucción puede ser realizada
    condicionalmente, por lo que el número de
    procesos puede variar durante la ejecución de un
    programa
  • Ejemplo PVM

12
CREACIÓN DINÁMICA DE PROCESOS
  • Modelo de ejecución es generalmente MPMD

13
PASAJE DE MENSAJES
  • Un pasaje de mensajes se basa en la siguientes
    formas básicas de primitivas o llamadas al
    sistema
  • send(x, id_destino)
  • recv(y, id_fuente)
  • Estas llamadas son comunicaciones entre pares de
    procesos (pairwise).
  • También se pueden establecer comunicaciones
    colectivas, entre un grupo de procesos

14
OPCIONES DE PROGRAMACIÓN
  • Diseñar y emplear un lenguaje de programación
    paralelo 'ad hoc'
  • 2. Extender la sintaxis y las palabras reservadas
    de un lenguaje secuencial de alto nivel
  • 3. Recurrir a un lenguaje secuencial de alto
    nivel proporcionando una librería de funciones
    para paso de mensajes.

15
MAQUINA VIRTUAL PARALELA
  • (PVM)

16
QUE ES LO NUEVO ?
  • PVM es un programa que permite conectar máquinas
    heterogéneas, tanto paralelas como secuenciales,
    para que trabajen como un recurso computacional
    único.

17
CARACTERISTICAS
  • Heterogeneidad
  • Escalabilidad
  • Múltiple representación de datos
  • Tolerancia ante fallos.

18
La plataforma PVM se compone de dos partes
  • Un demonio pvmd que provee la conectividad de
    la máquina
  • Librerías con procedimientos que proveen la
    funcionalidad de pasaje de mensajes

19
EL DEMONIO
  • pvmd debe estar corriendo en todas las
    computadoras que constituyan la máquina virtual.
  • Un usuario que desea ejecutar una aplicación PVM
    ejecuta primero el demonio en una única máquina,
    y éste se encarga de activar el resto de demonios
    de las máquinas que forman la PVM

20
MAQUINA VIRTUAL PARALELA
Estación de trabajo
pvmd
Prog (.exe)
Estación de trabajo
Estación de trabajo
21
LIBRERIA
  • Control de procesos
  • Crear, enviar y recibir mensajes
  • Información del sistema
  • Configuraciones dinámicas (añadir y eliminar

  • procesadores)
  • Señalización
  • Mensajes de error
  • Empaquetar datos en mensajes
  • Gestionar grupos de procesos

22
Creación de Procesos y Ejecución
  • Organización master - slave.
  •  
  • Comenzar un nuevo proceso PVM
  • nrop pvm_spawn(tasks, argv, flag, where,
    ntasks, tids)
  • Terminar un proceso PVM
  • pvm_exit()
  •  

23
Información
  • Conocer el ID de una tarea (proceso) PVM
  • tid pvm_mytid() Retorna ident. de tarea
  • tidp pvm_parent() Retorna ident. de
    proceso
  • que hizo spawn o 0.

24
Rutinas De Pasaje De Mensajes Básicas
  •  
  •  
  • Los programas se comunican por pasaje de mensajes
  • Para el envío y recepción de mensajes cada
    proceso dispone de buffers para realizar la
    operaciones
  •  

25
Enviar Un Mensaje
  •   ? 3 pasos
  • bufidpvm_initsend(PvmDataDefault) Requerir un
    Buffer
  • info pvm_pkint(int np, int nitem, 1) Llenar
    el buffer
  • info pvm_pkstr(char c) con
    los datos
  • info pvm_pkfloat(float f, int nitem, 1)
    del mensaje
  • info pvm_send(tid, msgtag)
    Enviar en mensaje

No Bloqueante
26
Recibir Un Mensaje (1)
  • ?2 pasos
  •  bufid pvm_recv(tid, msgtag) Espera y recibe un
    mensaje
  • Espera hasta que un mensaje con rótulo msgtag
    haya arribado
  • desde tid
  • Cuando el mensaje arriba se crea un nuevo buffer
    de recepción
  • donde se ubica el mensaje
  •  
  • / Si msgtag es 1, recibe cualquier mensaje
    /
  • / Si tid es 1, recibe desde cualquier
    fuente /

Bloqueante
27
Recibir Un Mensaje
  • info pvm_upkint(int np, int nitem, 1)
    Recuperar el mensaje
  • info pvm_upkstr(char c) desde el buffer
  • info pvm_upkfloat(float f, int nitem, 1)
  • .....
  • Buffer de datos activo de recepción puede
    contener
  • múltiples tipos de datos (entero, flotante,
    double, char,
  • byte, etc.)

28
Recibir Un Mensaje(2)
  • bufid pvm_nrecv(tid, msgtag) Recibe una
    mensaje
  •  
  • Si el mensaje requerido no ha arribado desde tid
    entonces retorna
  • bufid 0
  • Cuando el mensaje arriba se crea un nuevo buffer
    de recepción donde se
  • ubica el mensaje
  • / Si msgtag es 1, recibe cualquier mensaje /
  • / Si tid es 1, recibe desde cualquier fuente
    /

No Bloqueante
29
Ejemplos
30
hello.c (1)
  • include ltstdio.hgt
  • include "pvm3.h"
  • main()
  • int i, cc, t, tid
  • char buf100
  • printf(Soy el proceso local tx\n",
    pvm_mytid())
  • cc pvm_spawn("hello_other", (char)0, 0,
    "",1, tid)
  • if (cc1)
  • cc pvm_recv(-1, -1)
  • pvm_upkstr(buf)
  • printf( s\n",buf)
  • else
  • printf(No se puede comenzar
    hello_other\n)
  • pvm_exit()
  • exit(0)

31
hello_other.c (1)
  • include "pvm3.h"
  • main()
  • int ptid
  • char buf100
  • ptid pvm_parent()
  • strcpy(buf, "Hola mundo! desde ")
  • gethostname(buf strlen(buf), 64)
  • pvm_initsend(PvmDataDefault)
  • pvm_pkstr(buf)
  • pvm_send(ptid, 1)
  • pvm_exit()
  • exit(0)

32
hello.c (2)
  • include ltstdio.hgt
  • include "pvm3.h"
  • main()
  • int i, cc, t, tid
  • char buf100
  • printf(Soy el proceso local tx\n",
    pvm_mytid())
  • cc pvm_spawn("hello_other", (char)0, 0,
    "",1, tid)
  • if (cc1)
  • cc pvm_recv(-1, -1)
  • pvm_bufinfo(cc, (int)0, (int)0, t)
  • pvm_upkstr(buf)
  • printf(tx s\n", t,buf)
  • else
  • printf(No se puede comenzar
    hello_other\n)
  • pvm_exit()
  • exit(0)

33
hello.c (3) completar!
  • include ltstdio.hgt
  • include "pvm3.h"
  • main()
  • int i, cc, t, tid10
  • char buf100
  • int ntask 4
  • printf("Yo soy el proceso tx\n", pvm_mytid())
  • cc pvm_spawn("hello_other", (char)0, 0,
    "",ntask, tid)
  • /////
  • pvm_bufinfo(cc, (int)0, (int)0, t)
  • pvm_upkstr(buf)
  • printf(desde tx s\n", t,buf)
  • ////
  • pvm_exit()
  • exit(0)

34
Grupos Dinámicos de procesos  
  • Las tareas pueden formar grupos y subgrupos entre
    todos los procesos (procesadores virtuales)
  • Una tarea crea o se reúne a un grupo
  • name pvm_joingroup(char group)

35
Grupos Dinámicos de procesos  
36
Grupos Dinámicos de procesos  
name contiene la instancia dentro del grupo de
tareas
 


37
Comunicación Colectiva
  • Un mensaje puede ser distribuido a todos los
    miembros del grupo excepto a si mismo
  • info pvm_bcast(char group, int msgtag)

38
Sincronización
  • Suponga que un grupo de procesos está computando
    valores y en algún punto debe esperar hasta que
    todos los procesos hayan alcanzado un punto de
    referencia en sus computaciones.
  • El mecanismo básico que implementa esta situación
    se denomina barrier

39
Sincronización
  • info pvm_barrier(char group, int count)

40
Grupos Dinámicos de procesos  
Una tarea se retira de un grupo
 
info pvm_leavegroup(char group)
Write a Comment
User Comments (0)
About PowerShow.com