Vous êtes sur la page 1sur 34

Captulo 4: Hilos

Captulo 4: Hilos

Visin general Modelos multi-hilos Consideraciones sobre hilos Pthreads Hilos de Windows XP Hilos de Linux Hilos de Java

Procesos Uni-Hilo y Multi-Hilo

Beneficios

Buenos tiempos de respuesta: Partes de proceso siguen en ejecucion a pesar de bloqueos Compartir recursos: Los datos globales sirven como Memoria compartida Economa: Es ms rapido y requiere menos recursos crear un thread. Utilizacin de arquitecturas MP: Mismo proceso corriendo en varios CPUs

Hilos de Usuario e Hilos del Kernel

Hilos de usuario Administracin de hilos realizada por libreras en nivel de usuario

El kernel no conoce de la existencia de los hilos

Hilos del Kernel Hilos son directamente soportados por el Kernel

SO coordina planificacin y sincronizacin

Hilos del Kernel


Ejemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

Modelos Multi-Hilos
Mapeo de hilos de usuario a hilos del kernel:

Muchos-a-uno Unos-a-uno Muchos-a-muchos

Muchos-a-Uno

Muchos hilos de nivel de usuario se mapean a un solo hilo del kernel Ejemplos: Solaris Green Threads GNU Portable Threads

Modelo Muchos-a-Uno

Qu pasa si el un thread se bloquea? Es posible usar multiples CPUS?

Uno-a-Uno

Cada hilo de usuario se mapea a un hilo del kernel Ejemplos: Windows NT/XP/2000 Linux Solaris 9 y posterior

Modelo Uno-a-Uno

Que pasa si hay muchos hilos de usuario? Que se restringue user o kernel threads?

Modelo Muchos-a-Muchos

Permite que muchos hilos de usuario se mapeen a muchos hilos del kernel Permite que el S.O. cree un nmero suficiente de hilos del kernel Ejemplos: Solaris antes de la versin 9 Windows NT/2000 con el ThreadFiber package

Modelo Muchos-a-Muchos

Que pasa si un hilo se bloquea? Hay multiprocesamiento?

Modelo de Dos-Niveles

Similar a M:M, excepto que permite al hilo de usuario estar ligado a un hilo del kernel Ejemplos: IRIX HP-UX Tru64 UNIX Solaris 8 y versiones previas

Modelo de Dos-Niveles

Librerias de hilos

POSIX implementa el standart (IEEE 1003) para creacion y sincronizacion de hilos. (librera pthreads) Windows usa la librera win32 threads. Java tambien tiene threads aunque en la practica llama a las librerias nativas.

Hilos de Java

Manejados por la JVM Pueden ser creados: Creando una clase que herede de Thread Creando una clase que implemente la interfaz Runnable

Hilos de Java Ejemplo

Hilos de Java Ejemplo (cont.)

Estados de los Hilos de Java

Consideraciones sobre Hilos


Semnticas de las llamadas fork() y exec() Cancelando hilos Manejo de llamadas Pools de hilos Datos especficos de un hilo Activaciones del planificador

Semnticas de fork() y exec()

fork() duplica solamente al hilo que lo invoca o a todos los hilos?

padre

hijo

Exec reemplaza al proceso con uno nuevo, que pasa con los hilos del proceso?

Cancelando Hilos

Terminar un hilo antes de que termine Cuando deliberadamente se termina un hilo. Cuando los hilos realizan la misma tarea. Dos enfoques generales: Cancelacin asincrnica termina el hilo indicado inmediatamente Cancelacin diferida permite al hilo indicado verificar peridicamente si debe ser cancelado

Manejo de Seales

Usadas en sistemas UNIX para notificar a un proceso que un evento en particular ha ocurrido. En Unix la llamada kill sirve para enviar seales entre procesos y pthread_kill entre hilos. En windows Asincronous Porcedure calls. Un manejador de seal es usado para procesar las seales 1. Seal se genera por un evento en particular 2. Seal se entrega a proceso 3. Seal se maneja Opciones: Entregar seal al hilo al que dicha seal se aplica Entregar seal a todos los hilos del proceso Entregar seal a ciertos hilos del proceso Asignar un hilo especfico para recibir todas las seales del proceso

Pools de Hilos

Crear un nmero de hilos en un pool de donde esperan trabajar Ventajas: Usualmente es algo ms rpido antender un pedido en un hilo ya existente que crear uno nuevo Permite que el nmero de hilos de la aplicacin est limitado al tamao del pool

Activaciones del Planificador


Modelos M:M and Two-level models requiren comunicacion para mantener un nmero apropiado de hilos del kernel. El planificador provee un mecanismo de comunicacin entre los hilos de kernel del SO y las librerias de hilos de usuario. Se monitorea los threads y cuando algun evento ocurre se ejecuta un procedimiento upcall. La libreria de threads (upcall handler) define que thread se va a ejecutar y solicita o asigna LWPs.

Datos Especficos de Hilos


Permite que cada hilo tenga su propia copia de datos til cuando uno no tiene control sobre el proceso de creacin de hilos (es decir, cuando se usa un pool de hilos)

Otras Consideraciones

Problemas con eventos asincrnicos: Dos hilos intentan escribir en disco. El primer hilo inicia el controlador del disco El segundo corre en otro procesador antes de que el primero complete la operacin de escritura. El segundo intenta realizar una operacin de escritura distinta. El controlador del disco se confunde.

Dos hilos intentan escribir un mensaje por pantalla Un cambio de contexto ocurre antes de que el primer thread concluya su requerimiento.

Programadores necesitan coordinar actividades de los hilos de un programa

Otras Consideraciones (cont.)

Estructuras de datos compartidas Un hilo cierra un archivo que otro hilo est leyendo Requerimientos de memoria duplicados Llamadas a biblioteca Muchas funciones dan problemas si el cdigo es invocado dos veces por un mismo proceso Informes de error UNIX, variable global errno Manejo de seales Administracin de la pila Cmo darle memoria adicional? (por thread?)

Hilos Windows XP

Una aplicacion tiene muchos hilos Implementa mapeo uno a uno entre hilos, la libreria fiber implementa M:M Cada hilo contiene Un hilo id Registros Stacks de kernel y usuarios Area de datos privados Estos son conocidos como el contexto de hilo.

Hilos Windows XP

Executive Thread block

Kernel Thread block

Thread Env. block

Linux Threads

Para linux hilos y procesos son tareas. Los hilos se crean con la llamada al sistema clone(). clone() permite que un proceso hijo comparta el adress space del procesos padre de acuerdo a:

Que pasa si clone no usa estas flags

Fin del Captulo 4

34

Vous aimerez peut-être aussi