PDF de programación - Programación Multihilo - 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 Multihilo - Proyecto Universidad-Secundaria - Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas

Programación Multihilo - 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
181 visualizaciones desde el 28 de Mayo del 2018
1,0 MB
45 paginas
Creado hace 5a (30/04/2014)
Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

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 Multihilo

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

1/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

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

2/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Contenido

1 Hilos

2 Elementos de Programación Multihilo

3 Entornos de Programación Multihilo

Sincronización en Pthreads
Sincronización en Java
OpenMP

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

3/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Concepto de hilo

Un hilo (thread) es la porción más pequeña de instrucciones
de un programa que puede gestionar de forma independiente
el planificador (scheduler) del sistema operativo.
Normalmente los hilos se ejecutan dentro de un proceso.
Un proceso puede tener subprocesos o hilos, que son
secuencias independientes de ejecución dentro del código de
un proceso.
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

4/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Recursos asociados a los hilos

Los hilos dentro de un proceso comparten más recursos que
los procesos: la memoria, los descriptores de fichero, la
última instrucción del código, valores de las variables
Cada hilo dentro de un proceso tiene su propia: pila, copia de
los registros, contador de programa, y posiblemente algo de
almacenamiento local
El planificador puede asociar hilos distintos a cores distintos
en un sistema multicore

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

5/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Multithreading - Hyperthreading

Multithreading es el modelo de programación y ejecución de varios
hilos dentro de un proceso.

Con hyperthreading (de Intel) se simulan dos cores dentro de un
único core.
Se asignan recursos del sistema a varios hilos simultáneamente, y
se ve el sistema con el doble de cores, aunque la reducción real
en el tiempo de ejecución depende de la aplicación.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

6/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Estados de un hilo

Al igual que los procesos, los hilos se crean, se les
asigna recursos, pueden bloquearse y finalizan.

En un programa cada proceso tiene un hilo
maestro

que puede crear hilos esclavos,

cuando un hilo esclavo crea un conjunto de hilos
esclavos hablamos de paralelismo anidado.

Los hilos en un conjunto de hilos esclavos (incluido
el maestro) se ejecutan concurrentemente, pero
puede haber zonas de exclusión mutua.

Los hilos de un conjunto de esclavos se
sincronizan y finalizan su ejecución, continuando
el hilo maestro, que puede volver a crear nuevos
grupos de hilos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

7/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Necesarios mecanismos de

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

de hilos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

8/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Creación

Al lanzar un proceso se crea el hilo a él asociado. Este hilo puede crear grupos
de hilos esclavos, y estos a su vez pueden crear otros hilos, obteniéndose
paralelismo anidado.

Con Pthreads:
Se declara una variable de tipo pthread t
y se pone en marcha con pthread create
En OpenMP:
Se indica el números de hilos a crear con la función omp set num threads
o la variable de entorno OMP NUM THREADS
y se generan los hilos esclavos con el constructor
#pragma omp parallel
En Java:
Se crea un objeto Thread t=new...
que hereda de la clase Runnable
y se pone en marcha llamando al método t.start
(tiene otras formas de gestión de hilos)

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

9/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Ejecución

Una vez puestos en marcha, el hilo maestro y los hilos que él
creó trabajan de forma conjunta.
Ejecutan el mismo programa, pero pueden ejecutar zonas de
código distinto; utilizando el identificador de hilo para
determinar las instrucciones a ejecutar.
Comparten las variables, pero se pueden declarar variables
locales a los hilos.
Puede haber problemas de coherencia en el acceso a las
variables comunes.
Hay mecanismos para asegurar el acceso en exclusión mutua
a las variables comunes.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

10/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Finalización

Se puede acabar la ejecución de un hilo con una llamada a una función de finalización o
con una finalización implícita.
Cuando un hilo finaliza, los recursos asignados a él (core, variables locales...) se liberan.

Con Pthreads:
Se puede usar la función pthread cancel para cancelar un hilo,
también se puede usar pthread kill, pero en este caso se manda una señal que
debe tratarse.
El hilo que puso en marcha otro hilo hijo lo puede esperar con pthread join
En OpenMP:
Al final del bloque del constructor #pragma omp parallel con que se creó un grupo
de hilos esclavos, el maestro espera a que acaben todos los hilos para continuar su
ejecución.
En Java:
Como se hace con los objetos en Java, al acabar la ejecución de un objeto de la
clase Thread se ejecuta el destructor y se liberan los recursos asignados.
Hay métodos para comprobar si un hilo está activo (isAlive) y para esperar a que
acabe (join).

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

11/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Comunicación

Al trabajar con memoria compartida, los hilos no se
comunican por paso de mensajes, si no escribiendo y leyendo
en la memoria.
Puede haber problemas de coherencia en los datos al
leer-escribir varios hilos concurrentemente, por lo que los
lenguajes proporcionan mecanismos de sincronización y de
acceso en exclusión mutua.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

12/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Sincronización

A los recursos compartidos por varios hilos se accede en zonas de
código que se llaman secciones críticas.
Para acceder en exclusión mutua a estas zonas de código los
lenguajes pueden ofrecer distintas herramientas:

Semáforos: es un tipo abstracto de datos que se usa para
controlar el acceso a un recurso compartido (memoria,
pantalla...). Controlan el número de hilos que acceden a la
vez al recurso. Si sólo puede acceder un hilo
simultáneamente se habla de semáforos binarios, y se
accede al recurso en exclusión mutua.
Llaves: son implementaciones del tipo abstracto semáforo, y
por tanto sirven para controlar el acceso a recursos
compartidos.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

13/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Sincronización - Pthreads

Se declaran variables del tipo mutex con
pthread mutex t variable
Un hilo, antes de entrar en la sección crítica controlada por
esa variable llama a
pthread mutex lock (&mutexsum)
y al salir de la sección crítica se llama a
pthread mutex unlock (&mutexsum)
para permitir el acceso a esa sección por otro hilo.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

14/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Sincronización - Java

Se sincroniza el acceso a objetos por medio de bloques de
código synchronized:

synchronized(objecto) {

sección crítica

}

Cada hilo realizará el acceso a los datos de ese objeto,
ejecutando el método correspondiente, dentro de un bloque
sincronizado.
También es posible declarar métodos sincronizados:
public synchronized void metodo...
que aseguran que la ejecución del método se realiza en
exclusión mutua.

Univ de Murcia-IES Ing. de la Cierva

Paralelismo en la rama de tecnologías informáticas

15/45

Hilos
Elementos de Programación Multihilo
Entornos de Programación Multihilo

Sincronización - OpenMP

Hay constructores de ejecución secuencial:
#pragma omp single: el bloque de código lo ejecuta un único hilo
#pragma omp master: el bloque de código lo ejecuta el hilo maestro
#pragma omp ordered: el bloque de código se ejecuta como lo haría en
secuencial
El constructor #pragma omp critical [nombre] asegura el acceso en
exclusión mutua a un bloque de código.
Se puede asignar nombre, de forma que hilos distintos pueden acceder
concurrentemente a secciones con nombres distintos.
El constructor #pragma omp atomic asegura que una expresión se
ejecuta de forma atómica (sin interrupción).
Para sincronizar todos los hilos en un grupo se
  • Links de descarga
http://lwp-l.com/pdf11368

Comentarios de: Programación Multihilo - 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
Es necesario revisar y aceptar las políticas de privacidad