Informática I Threads

Documentos relacionados
Concurrencia Monitores. Guillermo Román Díez

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia

Sistemas Operativos. Procesos

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

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr

Programación Concurrente

Sincronización de Threads

Concurrencia. Primitivas IPC con bloqueo

Programación de Multitareas utilizando Hilos

Sincronización entre procesos (aka: semáforos)

PARTE II PROGRAMACION CON THREADS EN C

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Sincronización de Hilos POSIX

Biblioteca de sistema

Procesos Definición y Estados

Concurrencia. Guillermo Román Díez

Cena de filosofos y sincronizacion java

1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS

T5-multithreading. Indice

Fundamentos de los Sistemas Operativos

Hilos (threads) Realizado por M. Curiel

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Programación Concurrente Recopilación de teoría referente a la materia

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

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

Interbloqueo. Concurrencia: Interbloqueo e Inanición

Taller de pthreads. Sistemas Operativos. Verano de 2009

PROGRAMACIÓN MULTITHREADING

Threads, SMP y Microkernels. Proceso

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Concurrencia de Procesos

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

Taller de Sistemas Operativos. Procesos 2012

Tema 6. Threads: programas multitarea

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

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

dit UPM Tema 3: Concurrencia /threads (python) Análisis y diseño de software José A. Mañas

1 ( 3,5 puntos) Responda, justificando sus respuestas, a las siguientes cuestiones:

Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9

SOLUCIONES. SISTEMAS OPERATIVOS Convocatoria de septiembre, 12 de septiembre de 2007

SIMULACIÓN GRÁFICA DE EVENTOS PARALELOS EN TIEMPO REAL SINCRONIZADOS CON MENSAJES. Dr. Maximino Peña Guerrero Ing. José de Jesús Negrete Redondo

Programación concurrente

Práctica 8: Barreras

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Tarea #2 Interbloqueo e Inanición.

Entorno de programación de nivel 1: La librería PCAP

MC Hilda Castillo Zacatelco PROCESOS

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos

Introducción a Sistemas Operativos: Concurrencia

SISTEMAS OPERATIVOS:

Modelo de Cómputo. Programación concurrente

Tema 12: El sistema operativo y los procesos

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

PROGRAMACIÓN CONCURRENTE

Laboratorio I Java Threads (Silberschatz Galvin)

Procesos e Hilos en C

Threads. Hilos - Lightweight process - Procesos ligeros

Apellidos: Nombre: Matrícula: UNIVERSIDAD POLITÉCNICA DE MADRID

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; }

Procesos e hilos: cálculo de

Nombre alumno: Ventajas: La ventaja es que desaparecería la fragmentación interna ya que podríamos ajustar los bloques al tamaño que necesitemos.

Concurrencia en C++ moderno

La cena de los filósofos.

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Si un candado mutex es usado por hilos en el mismo proceso pero no por hilos en diferentes procesos, los primeros dos pasos pueden simplificarse a:

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

Concurrencia. Concurrencia

dit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas

Bloque I: Principios de sistemas operativos

Transcripción:

Informática I Threads 28 de Setiembre 2010

1 Concepto de programación paralela. 2. 3 Concurrencia => Race Conditions. 4. 5 Funciones

Concepto de Programación Paralela Computación paralela Técnica de programación en la que muchas instrucciones se ejecutan simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes más pequeñas que pueden resolverse de forma concurrente, es decir, en paralelo. Al principio para aprovechar esta posibilidad los motherboards deb ian incluir mas de un procesador. Actualmente un procesador puede tener hasta 12 CPUs (Core i7 Extreme Edition). Multithreading Técnica que permite a un programa la posibilidad de hacer varias operaciones en forma concurrente.

Threads => Flujos de instrucciones As i como un sistema operativo puede manejar múltiples proceso en forma concurrente, un proceso puede manejar múltiples flujos de instrucciones en forma concurrente. Un Thread es justamente eso: Un flujo de instrucciones que se ejecuta en paralelo con el resto del proceso. Un Thread es parte de un proceso, con menos estructura de control. Si un proceso contiene Datos, Código, Estado del Kernel, Contexto de la CPU, un Thread está representado por el contexto de la CPU. Pero un Thread es solo esa parte. Y es la que lo hace diferente de los demás Threads que pueda crear el proceso. El resto de la estructura de control del proceso es común a todos los Threads (Tablas de descriptores de archivos, mapas de páginas de memoria Informática utilizadas, I Threads etc.

Estruturas

Procesos Livianos Se pueden tener varios en una misma área de memoria. El tiempo de creación es 10 a 100 veces menor comparado con la creación de procesos pesados. Se destruyen con mayor rapidez. El context switch es más rápido. Se comunican entre si con mayor facilidad. Reducen la seguridad.

Para que sincronizar? Los Threads comparten todo su mapa de memoria, variables, y recursos, por lo tanto se crean race condition constantemente. Al igual que los semáforos en los procesos se debe prevenir la escritura y lectura concurrente en los Threads. Podemos (y en ocasiones debemos!) bloquear un Thread hasta que se de una condición espec ifica.

Mecanismos de Mutex (Mutual exclusion lock) Similar al semáforo para procesos (ipc). Bloquea el flujo hasta que es liberado. pthread mutex t mutex = PTHREAD MUTEX INITIALIZER Join. Espera a que termine un Thread espec ifico. Condition Variables Bloquean un Thread hasta que otro cumple la condición. Puede despertar a un Thread que esté esperando, o a todos aquellos que estén bloqueados por la condición. pthread cond t condition cond = PTHREAD COND INITIALIZER

Join

Join

Funciones 1/4 Crear un thread int pthread create(pthread t *tid,pthread attr t *attr,void *(*func)(void*), void *arg); join. Espera por la finalización de un Thread que no sea detach. int pthread join(pthread t tid, void **status); detach. Configura al thread para liberar los recursos usados al terminar. int pthread detach(pthread tic); Terminar la ejecución. void pthread exit(void *status); Devuelve el thread id. pthread t pthread self(void);

Funciones 2/4 Copia los argumentos por defecto a atributo. int pthread attr init(pthread attr t* atributo); Destruye la varible atributo int pthread attr destroy(pthread attr t * atributo); Compara dos Threads id (devuelve cero si son distintos). int pthread equal(pthread t tid1, pthread t tid2); Cancela la ejecución del Thread indicado. int pthread cancel(pthread t tid);

Funciones 3/4 Si el mutex está libre lo bloquea, sino detiene su ejecución hasta que esté libre. int pthread mutex lock (pthread mutex t *mutex); Trata de bloquar el mutex, si esta ya esta tomado devuelve un EBUSY. int pthread mutex trylock (pthread mutex t *mutex); Si el Thread está bloqueado lo libera. int pthread mutex unlock (pthread mutex t *mutex); Destruye el mutex.. int pthread mutex destroy (pthread mutex t *mutex);

Funciones 4/4 Bloquea hasta que se cumple la condición. int pthread cond wait (pthread cond t *cond, pthread mutex t *mutex); Despierta a un Thread que este dormido por cond wait. int pthread cond signal (pthread cond t *cond); Despierta a todos los Threads dormidos. int pthread cond broadcast (pthread cond t *cond); Destruye a la variable cond. int pthread cond destroy (pthread cond t *cond);