PDF de programación - Programación Multiproceso - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas

Imágen de pdf Programación Multiproceso - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas

Programación Multiproceso - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticasgráfica de visualizaciones

Publicado el 28 de Mayo del 2018
539 visualizaciones desde el 28 de Mayo del 2018
744,0 KB
34 paginas
Creado hace 9a (30/04/2014)
Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Proyecto Universidad-Secundaria

Incorporación de contenidos de programación paralela en

la rama de tecnologías informáticas

Facultad Informática, Universidad de Murcia e

Instituto de Enseñanza Secundaria Ingeniero Juan de la Cierva

Programación Multiproceso

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Posible utilización

Módulo de Programación de servicios y procesos, segundo
de Desarrollo de Aplicaciones Multiplataforma
Parcialmente se podría usar en Tecnologías de la Información
y de las Comunicaciones, primero de Bachillerato

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Contenido

1 Procesos

2 Elementos de Programación Multiproceso

3 Entornos de Programación Multiproceso

Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Concepto de proceso

Un proceso es una instancia de un programa que se ejecuta:

Programa: Colección de instrucciones.
Proceso: Ejecución de las instrucciones.

se pueden ejecutar varias instancias (procesos) del mismo
programa,
varios procesos (del mismo o distinto programa) pueden
colaborar en la resolución de un problema, compartiendo los
recursos del sistema computacional,
se necesitan mecanismos de comunicación y sincronización.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Recursos asociados a un proceso

Cada proceso tiene asociados una serie de recursos del sistema:

Una imagen del código máquina del programa
Una parte de memoria, para almacenar el código, los datos
del proceso, la pila de llamadas de sus rutinas...
Descriptores de los recursos del sistema asociados al
proceso (por ejemplo, descriptores de ficheros)
El contexto del proceso: contenido de los registros,
direcciones de memoria...

El sistema operativo almacena la información de los procesos
activos en bloques de control de procesos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Estados de un proceso

Inicialmente se crea el proceso: se carga
de memoria secundaria a principal.
Después pasa a estado de esperando,
hasta que el scheduler del sistema lo
asigna a un procesador.
Pasa a estado de ejecutándose.
Cuando necesita esperar a que un
recurso esté disponible pasa a
bloqueado, y cuando ya tiene el recurso
pasa a esperando y de ahí a
ejecutándose.
Finalmente pasa a terminado.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Planificación de procesos

El sistema operativo puede mantener varias instancias
programas al mismo tiempo: puede haber programas de
usuarios distintos, varias instancias del mismo programa...
Un núcleo ejecuta sólo un proceso en un instante de tiempo.
En sistemas con varios núcleos o procesadores se pueden
asignar procesos distintos a núcleos distintos (ejecución
concurrente).
La asignación y desasignación de procesos a núcleos debe
hacerla el sistema operativo de forma rápida.
Los procesos pueden cambiar de estado por interrupciones
software o hardware.
Un cambio de contexto ocurre cuando un proceso en un
núcleo para y se le asigna otro proceso.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Procesos versus hilos

Un proceso puede tener subprocesos o hilos, que son
secuencias independientes de ejecución dentro del código de
un proceso.
Los hilos son las secuencias más pequeñas de instrucciones
que el sistema operativo puede manejar de forma
independiente.
Los hilos dentro de un proceso comparten más recursos que
los procesos: la memoria, la última instrucción del código,
valores de las variables...
La gestión de hilos por el sistema operativo será más rápida
que la de procesos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Programación concurrente, paralela y distribuida

Programación Concurrente

Cuando varios elementos de proceso (hilos, procesos)
trabajan de forma conjunta en la resolución de un problema.
Puede ser en un único procesador o núcleo.

Programación Paralela

Es programación concurrente cuando se utiliza para acelerar
la resolución de los problemas,
normalmente usando varios procesadores o núcleos.

Programación Distribuida

Es programación paralela cuando los sistemas están
distribuidos,
por ejemplo una red de procesadores,
con lo que hay que usar paso de mensajes.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Necesarios mecanismos de

creación
ejecución
finalización
comunicación
sincronización

de procesos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Creación

Se ordena al sistema poner en marcha procesos, y cada proceso tiene
asociadas sus zonas de memoria:

En C:
Con fork se crea un proceso hijo, que tiene una copia de las variables del
proceso padre.
En MPI:
Al lanzar la ejecución con mpicc -np X programa se ponen en marcha X
procesos que ejecutan el mismo código programa y cada uno tiene en su
memoria asociada copias distintas de las variables del programa.
Los procesos pueden empezar a colaborar cuando se inicializa MPI, con
MPI Init.
En Java:
Está la clase ProcessBuilder, y se inicializan con el método start.
También se pueden poner en marcha desde otro proceso con
Runtime.getRuntime().exec("programa").
Y se pueden usar RMI (Java Remote Method Invocation) para invocar
métodos de forma remota, para aplicaciones cliente-servidor.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Ejecución

Una vez puestos en marcha, los procesos trabajan de forma
independiente, ejecutando el mismo o distinto programa, y
cada uno con los datos a él asociados.
Si ejecutan el mismo programa, aunque las variables se
llaman igual, cada proceso trabaja con una copia distinta de
ellas, por lo que la misma variable tiene valores distintos en
procesos distintos.
Hay mecanismos para sincronizar los procesos.
Cuando un proceso necesita datos de otro proceso el acceso
a esos datos se realiza con comunicaciones.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Finalización

La finalización de un proceso supone la liberación de los recursos que se
le asociaron (memoria, variables, descriptores de fichero...).

En C:
Con wait el proceso padre espera a que finalice un proceso hijo.

En MPI:
Los procesos que se lanzaron con mpicc -np X programa acaban
cuando llegan al final del programa.
Al ejecutar MPI Finalize se liberan los recursos generados para
gestionar procesos a través de MPI, y los procesos dejan de poder
colaborar.

En Java:
En la clase ProcessBuilder se pueden usar los métodos
finalize, wait, notify y notifyAll heredados de la clase
Object.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Comunicación

Los procesos acceden a datos asociados a otros procesos por
medio de comunicaciones.

En C:
Los procesos padre e hijo emparentados al ejecutar fork
pueden comunicarse a través de una tubería usando la
función pipe.
En MPI:
Hay comunicaciones punto a punto (MPI Send, MPI Recv, y
otras versiones) y comunicaciones colectivas (MPI Bcast,
MPI Gather...)
En Java:
Ofrece multitud de posibilidades: colas de mensajes, canales,
RMI, sockets, redireccionamiento de flujos de entrada/salida.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Sincronización

Los procesos se sincronizan al comunicarse,
pero también al acabar la ejecución, por ejemplo si un
proceso espera a otro en un wait.
En las comunicaciones puede haber sincronización entre dos
procesos (comunicaciones punto a punto, o tuberías
asociadas a dos procesos) o entre varios procesos
(comunicaciones colectivas).
Puede ser necesaria sincronización sin comunicar datos, por
ejemplo para esperar que todos los procesos lleguen a un
punto de la ejecución para seguir trabajando juntos. Se
utilizan barreras, en MPI con la función MPI Barrier.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

Procesos
Elementos de Programación Multiproceso
Entornos de Programación Multiproceso

Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI

Veremos ejemplos básicos de programación multiproceso:

Uso de pipe en C/C++
Captura de flujo de I/O en Java
MPI
veremos programación por paso de mensajes en MPI
con versiones nuevas de l
  • Links de descarga
http://lwp-l.com/pdf11367

Comentarios de: Programación Multiproceso - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad