Programación Multihilo

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Programación Multihilo"

Transcripción

1 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

2 Posible utilización Hilos 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

3 Contenido Hilos 1 Hilos 2 3 Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 3/45

4 Concepto de hilo Hilos 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

5 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

6 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

7 Estados de un hilo Hilos 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

8 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

9 Creación Hilos 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 tipopthreadt y se pone en marcha conpthreadcreate En : Se indica el números de hilos a crear con la funciónompsetnumthreads o la variable de entornoompnumthreads 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étodot.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

10 Ejecución Hilos 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

11 Finalización Hilos 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 usarpthreadkill, pero en este caso se manda una señal que debe tratarse. El hilo que puso en marcha otro hilo hijo lo puede esperar conpthreadjoin En : 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

12 Comunicación Hilos 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

13 Sincronización Hilos 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

14 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

15 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

16 Sincronización - 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 usa el constructor barrier. Hay también sincronización implícita de todos los hilos en un grupo al final de algunos constructores. Ofrece un tipo para llaves (omplockt) y funciones para trabajar con ellas (ompinitlock,ompinitdestroy,ompsetlock,ompunsetlock, omp test lock). Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 16/45

17 Prioridades Hilos En algunos entornos de programación se pueden asignar prioridades a los hilos. A un hilo con mayor prioridad se asignarán antes los recursos (core para trabajar con ese hilo) que a otros con menor prioridad. En Java se puede establecer la prioridad de un hilo, con setpriority() obtener la prioridad de un hilo, con getpriority() En C++ un hilo tiene el valorthreadpriority, al que se pueden asignar valores distintos. Una vez que se establece la prioridad para un hilo, el sistema hace corresponder ese valor a uno de los que puede tener un hilo en el sistema operativo con el que se esté trabajando. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 17/45

18 Veremos ejemplos básicos de programación multihilo: veremos programación en memoria compartida en con versiones nuevas de los ejemplos vistos en la Introducción a la Programación Paralela, y se podrá trabajar con la pruebapp-fp2014 de la página del Concurso de Programación Paralela. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 18/45

19 Ejemplo: máximo de datos en un vector El programa en programas/pthreads/maximo.cpp obtiene el máximo de un vector, cada hilo calcula el máximo de una porción del vector, y a continuación accede en exclusión mutua a la variable global maximo para actualizarla. Para controlar el acceso utiliza una llave que declara e inicializa con pthread mutex t llave = PTHREAD MUTEX INITIALIZER pide la entrada a la sección crítica con pthread mutex lock( &llave) y se libera la llave con pthread mutex unlock( &llave) Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 19/45

20 Ejemplo: cálculo de máximo, con sincronización por datos El programa en programas/java/maximo dat.java obtiene el máximo de un vector. En el programa principal se declara un vector de hilos: Thread[] t=new Thread[nt]; a los que se asigna una función a ejecutar y se ponen en marcha: for (int i = 0; i < t.length; i++) { t[i] = new Thread(new threadmaximo()); t[i].start(); y el maestro espera a que acaben con: for(int i=0;i<nt;i++) while(t[i].isalive()); Los hilos ejecutan la función threadmaximo, que llama a funciones que acceden en exclusión mutua (synchronized) a los arrays indices y valormaximo, para tomar los índices de datos con los que trabajar, y para actualizar el valor del máximo. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 20/45

21 Ejemplo: cálculo de máximo, con sincronización de métodos El programa en programas/java/maximo met.java obtiene el máximo de un vector, utilizando métodos sincronizados. Funciona igual que el programa anterior, y se crea un vector de hilos que ejecutan la función threadmaximo, que llama a las funciones obtenerlimites y actualizarmaximo que se han declarado sincronizadas (synchronized), por lo que el trabajo dentro de ellas se hace en exclusión mutua. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 21/45

22 Primera versión de Es el estándar de facto para programación en memoria compartida. Utiliza el modelo de programación fork-join, con generación de múltiples hilos. Inicialmente se ejecuta un hilo hasta que aparece el primer constructor paralelo, se crean hilos esclavos y el que los pone en marcha es el maestro. Al final del constructor se sincronizan los hilos y continúa la ejecución el maestro. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 22/45

23 Ejemplo básico Hilos Ejemplo de Hola mundo (otra versión en programas//codigo3-11.c): 1 #include <omp.h> 2 int main() { 3 int iam =0, np = 1; 4 #pragma omp parallel private(iam,np) 5 { 6 #if defined (_OPENMP) 7 np = omp_get_num_threads(); 8 iam = omp_get_thread_num(); 9 #endif 10 printf("hello from thread %d out of %d \n",iam,np); 11 } 12 } Se compila con el compilador normal de C y la librería : cc -O3 codigo3-11.c -fopenmp Se ejecuta como un programa normal:./a.out cuántos hilos se ejecutan? Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 23/45

24 Ejemplo básico - Componentes de Hay que incluir la librería omp.h utilizar constructores de #pragma omp parallel private Se pueden usar constantes de la librería ( OPENMP) y funciones de la librería: omp get num threads ompgetthreadnum Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 24/45

25 Ejemplo básico - Componentes de Hay que incluir la librería omp.h utilizar constructores de #pragma omp parallel private Se pueden usar constantes de la librería ( OPENMP) y funciones de la librería: omp get num threads ompgetthreadnum Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 25/45

26 Directivas Hilos Tienen la forma: #pragma omp nombre-directiva [cláusulas] #pragma omp: es directiva del compilador. Si se compila sin enlazar con la librería de (-fopenmp) se obtiene un programa secuencial. nombre-directiva: hay directivas de varios tipos, que veremos a continuación. [cláusulas]: las directivas pueden tener varios tipos de cláusulas, para indicar cómo repartir el trabajo entre los hilos, cómo acceder a los datos... Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 26/45

27 Creación de hilos Hilos Hay un único constructor para crear hilos (ejemplo codigo3-12.c): #pragma omp parallel [cláusulas] bloque de código Se crea un grupo de hilos. El que los pone en marcha actúa de maestro. Con la cláusulaif se evalúa una expresión y si da valor distinto de cero se crean los hilos. Si es cero se hace en secuencial. El número de hilos a crear se obtiene por variables de entorno o llamadas a librería. Hay barrera implícita al final de la región. Cuando dentro de una región paralela hay otro constructor paralelo, cada esclavo crea otro grupo de hilos esclavos de los que es maestro. Hay cláusulas de compartición de variables (private, firstprivate, default, shared, copyin y reduction). Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 27/45

28 Paralelismo anidado Un hilo dentro de un grupo de hilos puede crear nuevos hilos (ejemplo nested), obteniéndose paralelismo anidado. El paralelismo anidado se habilita con omp set nested(1) (con 0 se deshabilita). Se pueden establecer números de hilos distintos en distintos niveles, e incluso hilos distintos pueden tener números de esclavos distintos. Se utilizaompsetnumthreads para fijar el número de hilos a poner en marcha. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 28/45

29 Distribución del trabajo Hay dos constructores para para asignar trabajo a los hilos: Para dividir el trabajo de un bucle (ejemplos codigo3-13.c, ejemplo for.c): #pragma omp for [cláusulas] bloque de código Para asignar trozos distintos de código (ejemplo codigo3-14.c): #pragma omp sections [cláusulas] bloque de código con varias secciones Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 29/45

30 Constructor for Hilos Las iteraciones se ejecutan en paralelo por hilos ya creados. La parte de inicialización del for debe ser una asignación. La parte de incremento debe ser una suma o resta. La parte de evaluación es la comparación de una variable entera sin signo con un valor, utilizando un comparador mayor o menor (puede incluir igual). Los valores que aparecen en las tres partes delfor deben ser enteros. Hay barrera al final a no ser que se utilice la cláusulanowait. Admite cláusulas de acceso a variables (private, firstprivate, lastprivate y reduction). Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 30/45

31 Constructor for - Reparto de trabajo La cláusula schedule indica la forma como se dividen las iteraciones del for entre los hilos: schedule(static,tamano): se dividen cíclicamente bloques detamano. Si no se indica el tamaño se divide por igual entre los hilos. (ejemplo for static.c) schedule(dynamic,tamano): se dividen bloques de tamano y se asignan a los hilos dinámicamente cuando van acabando su trabajo. (ejemplo for dynamic.c) schedule(guided,tamano): se asignan dinámicamente a los hilos pero con tamaños decrecientes. (ejemplo for guided.c) schedule(runtime): deja la decisión para el tiempo de ejecución, y se obtiene de la variable de entorno OMP SCHEDULE. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 31/45

32 Constructor sections #pragma omp sections [cláusulas] { [#pragma omp section] bloque [#pragma omp section bloque... ] } Cada sección se ejecuta por un hilo. Hay barrera al final a no ser que se utilice la cláusulanowait. Las cláusulas para compartición de variables son private, firstprivate, lastprivate y reduction. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 32/45

33 Constructores combinados Crean los hilos y les asignan trabajo: Forma abreviada de parallel + for (ejemplo codigo3-15.c): #pragma omp parallel for [cláusulas] bloque de código Admite todas las cláusulas del for menos la nowait. Forma abreviada de parallel + sections: #pragma omp parallel sections [cláusulas] bloque de código con varias secciones Admite todas las cláusulas del sections menos la nowait. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 33/45

34 Constructores de ejecución secuencial Dentro de una región paralela se pueden ejecutar bloques en secuencial: #pragma omp single [cláusulas] Un único hilo ejecuta el bloque. (ejemplo single.c) Hay barrera al final si no se especificanowait. #pragma omp master [cláusulas] El hilo maestro ejecuta el bloque. (ejemplo master.c) #pragma omp ordered [cláusulas] El bloque se ejecuta como se ejecutaría en secuencial, pero pueden intervenir varios hilos. (ejemplo ordered.c) Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 34/45

35 Constructores de sincronización #pragma omp critical [nombre] Asegura exclusión mutua en el acceso a un bloque. (ejemplo critical.c) El nombre se usa para secciones críticas distintas, que no interfieren entre sí. #pragma omp barrier Sincroniza todos los hilos en un grupo, hasta que no llegan todos a ese punto no se continúa. (ejemplo barrier.c) #pragma omp atomic expresión Asegura la ejecución de la expresión de forma atómica (sin interrupción). La expresión tiene que ser de la formax binop=exp,x++, ++x,x-- o--x. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 35/45

36 Constructores de manejo de variables #pragma omp flush [lista] Se actualizan las variables de la lista para que todos los hilos vean su valor actual. (ejemplo flush.c) Si no se pone la lista se actualizan todas las variables compartidas. Hayflush impícito al acabarbarrier, al entrar o salir de critical u ordered, y al salir de parallel, for, sections ysingle. Mientras no se haceflush cada hilo trabaja con copias locales de las variables, por lo que no vé los cambios hechos por otros hilos. #pragma omp threadprivate (lista) Declara variables privadas a los hilos. (ejemplo copying.c) Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 36/45

37 Cláusulas de alcance de datos private(lista) Privadas a los hilos. No se inicializan antes de entrar y no se guarda su valor al salir. firstprivate(lista) Privadas, se inicializan al entrar con el valor que tuviera la variable correspondiente. lastprivate(lista) Privadas, al salir quedan con el valor de la última iteración o sección. shared(lista) Compartidas por todos los hilos. default(shared none) Indica cómo son las variables por defecto. Si no se indica son compartidas. reduction(operador:lista) Se obtiene su valor aplicando el operador. Por ejemplo, calcular la suma por varios hilos. copyin(lista) Para asignar el valor de la variable en el master a variables locales a los hilos. Se pueden consultar los ejemplos private, firstprivate, lastprivate, reduction y copying. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 37/45

38 Tareas Hilos En la versión 3.0 de se incluye la programación basada en tareas, en contraposición con la basada en hilos de las versiones anteriores. #pragma omp task [cláusulas] bloque Se genera una tarea, que ejecutará algún hilo del grupo de hilos. Las cláusulas pueden ser: if (scalar expression) para comprobar si se pone en marcha. untied para indicar que la tarea no está ligada a un hilo (si está ligada el mismo hilo la ejecuta completa). De alcance de datos: default, private, firstprivate y shared. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 38/45

39 Tareas - Sincronización Una tarea espera a que acaben sus tareas hijas con #pragma omp taskwait Además, las tareas se sincronizan en barreras implícitas (por ejemplo, al final de constructor parallel) o explíıcitas de hilos (por ejemplo, al final de constructor barrier) Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 39/45

40 Tareas - Ejemplo Hilos En ejemplo fibo.c se calculan números de Fibonacci (1,1,2,3,5,8...) utilizando tareas: En una región paralela (constructor parallel) un único hilo (constructor single) llama a una función para calcular el número de Fibonacci. En la función se lanzan dos tareas. Al ser una función recursiva los hilos que ejecuten cada tarea lanzarán cada uno de ellos dos tareas... Todas las tareas generadas las ejecutan los hilos en el grupo de hilos creado con parallel. Cada tarea espera a las dos que generó (y por tanto a las generadas por sus tareas descendientes) con el constructor taskwait. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 40/45

41 Funciones de librería void omp set num threads(int num threads): establece el número de hilos a usar en la siguiente región paralela. int omp get num threads(void): obtiene el número de hilos que se están usando en una región paralela. int omp get max threads(void): obtiene la mayor cantidad posible de hilos. int omp get thread num(void): devuelve el número del hilos. int omp get num procs(void): devuelve el máximo número de procesadores que se pueden asignar al programa. int omp in parallel(void): devuelve valor distinto de cero si se ejecuta dentro de una región paralela. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 41/45

42 Funciones de librería int omp set dynamic(void): permite poner o quitar el que el número de hilos se pueda ajustar dinámicamente en las regiones paralelas. int omp get dynamic(void): devuelve un valor distinto de cero si está permitido el ajuste dinámico del número de hilos. int omp set nested(void): para permitir o desautorizar el paralelismo anidado. int omp get nested(void) devuelve un valor distinto de cero si está permitido el paralelismo anidado. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 42/45

43 Funciones de librería - Llaves void omp init lock(omp lock t *lock): inicializa una llave. Se inicializa como no bloqueada. void omp init destroy(omp lock t *lock): para destruir una llave. void ompsetlock(omplockt *lock): pide una llave. void omp unset lock(omp lock t *lock): para liberar una llave. int omptestlock(omplockt *lock): pide una llave pero no se bloquea si no está disponible. Se puede ver ejemplo lock.c Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 43/45

44 Variables de entorno Su valor se establece en línea de comandos antes de ejecutar el programa. Hay funciones de librería equivalentes. La ejecución de una función de librería dentro del programa prevalece sobre el valor de la variable de entorno correspondiente. OMPSCHEDULE: indica el tipo de scheduling parafor y parallel for. OMPNUMTHREADS: pone el número de hilos a usar. OMP DYNAMIC: autoriza o desautoriza el ajuste dinámico del número de hilos. OMP NESTED: autoriza o desautoriza el anidamiento. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 44/45

45 Otros ejemplos Hilos Los programas mul-fil-omp, mul-fil-sections y mul-fil-tasks contienen ejemplos de multiplicación de matrices con el constructorfor ysections, y con uso de tareas. Los programas quicksort-omp, quicksort-tareas y quicksort-tareas-critical son distintas variantes de una ordenación por el método quicksort. Este método es distinto de las ordenaciones por mezcla o por el método de la burbuja vistos en los ejemplos anteriores. Se puede analizar el funcionamiento de estos ejemplos y comparar las distintas formas de abordar el mismo problema, y se pueden adaptar los programas para ejecutarlos en el concurso PP FP2014 en la página del Concurso de Programación Paralela. El problemaacorresponde a la ordenación y elbala multiplicación de matrices. Univ de Murcia-IES Ing. de la Cierva Paralelismo en la rama de tecnologías informáticas 45/45

Programación con OpenMP

Programación con OpenMP Curso de Promoción Educativa Programación en el Supercomputador Ben Arabi Programación con OpenMP Javier Cuenca Universidad de Murcia Indice de la sesión Introducción. Nociones básicas Ejemplo inicial

Más detalles

Sistemas Complejos en Máquinas Paralelas

Sistemas Complejos en Máquinas Paralelas Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric

Más detalles

Paralelización de Programas Secuenciales: OpenMP

Paralelización de Programas Secuenciales: OpenMP Paralelización de Programas Secuenciales: OpenMP http://www.openmp.org Manuel Arenaz [email protected] Índice Introducción a la programación paralela Programación con OpenMP Directivas de compilación Librería

Más detalles

Cómputo paralelo con openmp y C

Cómputo paralelo con openmp y C Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27

Más detalles

Programación paralela con OpenMP

Programación paralela con OpenMP Programación paralela con OpenMP Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento

Más detalles

1 Primitivas básicas de OpenMP

1 Primitivas básicas de OpenMP 1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas

Más detalles

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Procesos Definición y Estados

Procesos Definición y Estados Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación

Más detalles

Tema 6. Threads: programas multitarea

Tema 6. Threads: programas multitarea Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia

Más detalles

Sistemas Operativos. Procesos

Sistemas Operativos. Procesos Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso

Más detalles

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

de Gran Canaria Centro de Tecnología Médica  Programación Concurrente Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2 Qué es OpenMP? De dónde viene

Más detalles

Acceso coordinado a recursos compartidos

Acceso coordinado a recursos compartidos Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos

Más detalles

Programación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada

Programación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Programación Multihebra con OpenMP José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos Modelo de Programación e Introducción Paralelización de bucles Gestión

Más detalles

Lección 3 Sentencias de control

Lección 3 Sentencias de control 3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para

Más detalles

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES Gerardo Ares, Pablo Ezzatti Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Conceptos

Más detalles

Soluciones a ejercicios de paralelismo y concurrencia

Soluciones a ejercicios de paralelismo y concurrencia Soluciones a ejercicios de paralelismo y concurrencia J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores

Más detalles

Tema 6: Clases. Índice

Tema 6: Clases. Índice Tema 6: Clases Antonio J. Sierra Índice 1. Fundamentos. 2. Declaración de objetos. 3. Asignación de objetos a variables referencia. 4. Métodos. 5. Constructores. 6. this. 7. Recogida de basura. 8. Modelado

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Dobles: Es el caso de la instrucción if-else (punto 1.2). 1 1.Introducción Las estructuras de control son instrucciones que nos permiten controlar el flujo de ejecución del programa. Las instrucciones de control se pueden agrupar en instrucciones condicionales

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

Arquitectura de Computadores: Exámenes y Controles

Arquitectura de Computadores: Exámenes y Controles 2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo [email protected] Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

CDI Arquitecturas que soportan la concurrencia. granularidad

CDI Arquitecturas que soportan la concurrencia. granularidad granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

Más detalles

Modelos de programación paralela y concurrente

Modelos de programación paralela y concurrente Modelos de programación paralela y concurrente J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores Grupo

Más detalles

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

Programación concurrente

Programación concurrente 23 de Marzo de 2017 Condiciones generales Docente: Hernán Melgrati (hmelgra@...) Horario: Teóricas: Jueves de 14 a 17 Prácticas: Martes de 14 a 17 Evaluaciones: Un parcial (mediados de mayo) Un trabajo

Más detalles

Sincronización de Threads

Sincronización de Threads Sincronización de Threads Herramientas y Lenguajes de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática Dpto.

Más detalles

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar

Más detalles

Hilos Secciones Stallings:

Hilos Secciones Stallings: Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa Paradigmas de lenguajes de programación Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Paradigma: Definición del modo en el que se especifica el cómputo (que luego es implementado

Más detalles

Programación Concurrente y Paralela. Unidad 1 Introducción

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Java y JVM: programación concurrente. Adolfo López Díaz

Java y JVM: programación concurrente. Adolfo López Díaz Java y JVM: programación concurrente Adolfo López Díaz JVM Máquina virtual Ambiente de programación virtualizado Permite la ejecución de programas Java ejecutables multiplataforma Programación concurrente

Más detalles

Concurrencia de Procesos

Concurrencia de Procesos Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)

Más detalles

Master en Java Certificación para Programadores

Master en Java Certificación para Programadores Javmasdeb Master en Java Certificación para Programadores Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java Formación: Master Horas: 112 Introducción Java es un lenguaje de programación con el que

Más detalles

Autoestudio 2: Variables y Operadores

Autoestudio 2: Variables y Operadores Autoestudio 2: Variables y es Componentes de un programa Cuando escribimos en un lenguaje de programación tenemos que entender la sintaxis del lenguaje. A continuación empezaremos con la sintaxis básica

Más detalles

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. Palabras reservadas de C++ y C Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. A continuación se muestra el link del listado de palabras

Más detalles

PROGRAMACIÓN CONCURRENTE

PROGRAMACIÓN CONCURRENTE PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados

Más detalles

Interbloqueo. Concurrencia: Interbloqueo e Inanición

Interbloqueo. Concurrencia: Interbloqueo e Inanición Interbloqueo Concurrencia: Interbloqueo e Inanición Capítulo 6 Bloqueo permanente de un conjunto de procesos que compiten por recursos del sistema o por comunicación con los otros No existe una solución

Más detalles

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Concurrencia y paralelismo

Concurrencia y paralelismo Introducción a los Sistemas Operativos Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales.

Más detalles

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía Tema 3 SUBRUTINAS ÍNDICE Definición e instrucciones básicas Soporte para el tratamiento de subrutinas (ejecución de la subrutina y gestión del bloque de activación) Interrupciones vs llamadas a procedimiento

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder

Más detalles

Cómputo en paralelo con OpenMP 1

Cómputo en paralelo con OpenMP 1 Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix [email protected] http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la

Más detalles

Programación asíncrona con C#

Programación asíncrona con C# Programación asíncrona con C# Manual de estudiante Primera edición Octubre de 2017 Soporte técnico: [email protected] 2 https://ticapacitacion.com Contenido Acerca del módulo... 5 Audiencia...5

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles

Heterogénea y Jerárquica

Heterogénea y Jerárquica Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Computación Híbrida, Heterogénea y Jerárquica Contenidos 1 Sistemas 2 Paralelismo anidado 3 Programación híbrida

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

T5-multithreading. Indice

T5-multithreading. Indice T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2

Más detalles

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores. Unidad IV Métodos. 4.1 Definición de un método. El polimorfismo, en programación orientada a objetos, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo

Más detalles

12. Tipos de atributos

12. Tipos de atributos Programación orientada a objetos con Java 135 12. Tipos de atributos Objetivos: a) Profundizar en el concepto de atributo de una clase e indicar los tipos de atributos en Java b) Interpretar el código

Más detalles

Manipulación de procesos

Manipulación de procesos Manipulación de procesos Las primeras computadoras solo podían manipular un programa a la vez. El programa tenía control absoluto sobre todo el sistema. Con el desarrollo vertiginoso del hardware ese panorama

Más detalles

Programación concurrente y semáforos en Java

Programación concurrente y semáforos en Java Programación concurrente y semáforos en Java En Java es posible ejecutar tareas en paralelo, utilizando hebras de control (hilos, threads). Este modo de programación permite tener un espacio de memoria,

Más detalles

TEMA 3:Programación con Clases y Objetos.

TEMA 3:Programación con Clases y Objetos. TEMA 3:Programación con Clases y Objetos. Objetivos: Explicar con claridad lo que es una clase como elemento fundamental de la Programación Orientada a Objetos y como se realiza la implementación de una

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

7. Programación Concurrente

7. Programación Concurrente 7. Programación Concurrente 1. Qué es la programación concurrente? Se conoce por programación concurrente a la rama de la informática que trata de las técnicas de programación que se usan para expresar

Más detalles

Operadores aritméticos

Operadores aritméticos Bloque 3.2 Operadores aritméticos Suma : x + y Resta : x y Multiplicación : x * y División : x / y Módulo : x % y (resto de la división Si los operandos son enteros tipo del resultado

Más detalles

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1 Paralelizar un Código usando OpenMP Adolfo J. Banchio FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba 27 04 10 Seminario de grupo 1 Contenido Introducción Paralelización: por qué OpenMP? Qué es OpenMP?

Más detalles

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION DIIAGRAMAS DE FLUJO Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para

Más detalles

TEMA 4: Programación estructurada

TEMA 4: Programación estructurada TEMA 4: Programación estructurada 4.1.-Introducción. Teorema de la programación estructurada El principio fundamental de la programación estructurada es que en todo momento el programador pueda mantener

Más detalles

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional (PCB) adicional (PCB) Preparado Preparado

Más detalles

Tema 12: El sistema operativo y los procesos

Tema 12: El sistema operativo y los procesos Tema 12: El sistema operativo y los procesos Solicitado: Tarea 06 Arquitecturas de una computadora y el funcionamiento del software M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected]

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles