Programación de Multitareas utilizando Hilos

Documentos relacionados
Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

PARTE II PROGRAMACION CON THREADS EN C

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

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

T5-multithreading. Indice

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

Fundamentos de los Sistemas Operativos

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

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

Procesos e hilos: cálculo de

Procesos e Hilos en C

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

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

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

Sincronización de Threads

Programación Concurrente

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes

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

Arquitecturas cliente/servidor

Hilos Secciones Stallings:

Threads. Hilos - Lightweight process - Procesos ligeros

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Taller de pthreads. Sistemas Operativos. Verano de 2009

Tecnología de software para sistemas de tiempo real

Introducción a Sistemas Operativos: Concurrencia

Administración de procesos

Laboratorio I Java Threads (Silberschatz Galvin)

Informática I Threads

Sistemas Operativos. Procesos

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Concurrencia y paralelismo

SISTEMAS OPERATIVOS:

Programación Orientada a Objetos en Java

PROCESOS E HILOS - Hilo

Prácticas de Sistemas operativos

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

HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011

Programación Concurrente

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...

Sistemas Operativos 1

Bloque I: Principios de sistemas operativos

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

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

PRÁCTICA 2: CONCURRENCIA E HILOS

Sistemas Operativos Tema 5. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Guillermo Román Díez

Sistemas Operativos I Manual de prácticas

SISTEMAS EN TIEMPO REAL

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

INTRODUCCION PASCAL-FC

MULTIPROGRAMACIÓN. Introducción a al Multitarea

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

Biblioteca de sistema

Asignaturas antecedentes y subsecuentes

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

Concurrencia. Concurrencia

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

Taller de Sistemas Operativos. Procesos 2012

Acceso coordinado a recursos compartidos

Programación Concurrente

Procesos Definición y Estados

Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso

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

Sistemas operativos: una visión aplicada. Capítulo 3 Procesos

Transcripción:

Programación de Multitareas utilizando Hilos Enero/2012

Programación de Multitareas utilizando Hilos Origen de los hilos como elementos necesarios en la programación de multitareas Multihilos en un solo procesador Multihilos en varios procesadores Implementación de hilos en diversas plataformas y lenguajes de programación.

Programación de Multitareas utilizando Hilos Multihilos en un solo procesador. Hilos POSIX Hilos en C Hilos en Java

Multihilos en un solo procesador Hilos POSIX POSIX significa Portable Operating System Interconnection (for Unix). Es un estándar orientado a facilitar la creación de aplicaciones confiables y portables. La mayoría de las versiones populares de UNIX ( Linux, Mac OS X) están cumpliendo este estándar en gran medida. La biblioteca para el manejo de hilos en POSIX es pthread. La última edición que define la interfaz con C es el Portable Operating System Interface (POSIX) [IEEE, 2001b]. Ver www.unixsystems.org

Hilos POSIX Estructura de un proceso Código a ejecutar Variables globales y estáticas Stack o heap Variables locales y del sistema

Permiten la ejecución concurrente de varias secuencias de instrucciones asociadas a funciones dentro de un mismo proceso (hilo principal). Hilos POSIX Los hilos hermanos entre sí comparten la misma imagen de memoria, es decir: Código, Variables de memoria globales, y Los dispositivos y ficheros que tuviera abierto el hilo principal. Los hilos hermanos no comparten: El Contador de Programa: cada hilo podrá ejecutar una sección distinta de código. Los registros de CPU. La pila en la que se crean las variables locales de las funciones a las que se va llamando después de la creación del hilo. El estado: puede haber hilos en ejecución, listos, o bloqueados en espera de un evento. Código Variables globales Variables locales PC, registro CPU,

Hilos POSIX Uso de memoria Hilo1 Ejecuta F( ) Proceso Padre Hilo2 Ejecuta G( ) Código Variables Globales - Parámetros de llamada a la función F( ) - Variables locales de la función F( ) -PC: instrucción a ejecutar en F( ) -Registros CPU - Parámetros de llamada a la función G( ) - Variables locales de la función G( ) -PC: instrucción a ejecutar en G( ) -Registros CPU

Consumen menos memoria. Cuesta menos crearlos. Hilos POSIX Características Ya tienen disponible un mecanismo de comunicación entre ellos: las variables globales que son compartidas. Si bien el uso de variables globales está totalmente desaconsejado en otras circunstancias, en concurrencia a través de hilos es el método idóneo para compartir información. Cuando alguien se atreve a programar de manera concurrente con hilos, se da por supuesto que sabe programar de forma correcta, y podrá afrontar sin problemas las posibles tareas de depuración. Es más sencillo hacer un cambio de contexto entre hilos, lo que los hace ideales para la realización de tareas concurrentes cooperativas. La creación de hilos no es una tarea estándar de UNIX Hay que incluir una biblioteca de funciones específica en la línea decompilación: gcc fuente.c -lpthread

Hilos POSIX Funciones básicas Deben incluirse los ficheros de cabecera #include <stdio.h> #include <pthread.h> pthread_create(&id, NULL, función, args): crea un hilo que se asocia a la ejecución de la función que se indica en forma de puntero a función, siempre de tipo void; también se adjunta la lista de argumentos. pthread_exit( ): final de la ejecución de un hilo. Será la última sentencia ejecutada por el hilo. pthread_kill( ):detiene la ejecución del hilo especificado pthread_join( ): espera la finalización del hilo especificado. pthread_self( ): permite que un hilo se identifique a sí mismo Graficamente: pthread_create( ) Hilo 1 (principal) Principal ejecuta pthread_join( ) Espera a que el hilo termine Principal Hilo 2 (función F) Hilo 2 ejecuta pthread_exit( )

Hilos POSIX Funciones básicas para hilos del tipo pthread_t! "#

Sincronización de hilos en POSIX: Mutex Funciones POSIX para Sincronización Estas funciones incluyen mecanismos de exclusión mutua (mutex), mecanismos de señalización del cumplimiento de condiciones por parte de variables, y mecanismos de acceso de variables que se modifican en forma exclusiva, pero pueden ser leídas en forma compartida. Las funciones para el manejo de zonas de acceso exclusivo tienen el prefijo pthread_mutex Un mutex es una variable especial que puede tener estado tomado (locked) o libre (unlocked). Es como una compuerta que permite el acceso controlado. Si un hilo tiene el mutex entonces se dice que es el dueño del mutex. Si ningún hilo lo tiene se dice que está libre (o unclucked). Cada mutex tiene una cola de hilos que están esperando para tomar el mutex. El uso de mutex es eficiente, pero debería ser usado sólo cuando su acceso es solicitado por corto tiempo.

Hilos POSIX Funciones básicas para hilos del tipo pthread_mutex_t )$*+, ( ( ("# & $&! & %' % $%

Referencias Bibliografía: David R. Butenhof Programming with POSIX Threads Ed. Addison Wesley, 1997 Francisco M. Márquez UNIX. Programación avanzada Ed. Alfaomega Ra-Ma Sitios WEB Manual de referencial de manejo de hilos POSIX (incluye en Windows32) http://sourceware.org/pthreads-win32/manual/index.html Curso de manejo de Hilos en español http://profesores.elo.utfsm.cl/~agv/elo330/2s07/lectures/posix_threads.html http://profesores.elo.utfsm.cl/~agv/elo330/2s06/lectures/posix_threads/posix_threads _Synchronization.html