Está en la página 1de 12

18/04/2016

Hilos
<1>

Un thread (o proceso de peso liviano) es una unidad bsica de


utilizacin de CPU, consiste de:
programa
g
Contador de p
Conjunto de registros
Espacio de stack
Un thread comparte con sus threads compaeros (colectivamente
conocidos como tarea o task) su:
Seccin de cdigo
Seccin de datos
Recursos del SO.
Un proceso tradicional o peso pesado es igual a una tarea con un solo
thread.
21/02/2012 09:45:17

Hilos
<2>

En una tarea con mltiple threads, mientras un thread servidor est


bloqueado y esperando, un segundo thread de la misma tarea puede
estar corriendo.
Cooperacin de mltiple threads en una misma tarea confiere alto
procesamiento total y mejora el rendimiento.
o Aplicaciones que requieren compartir un buffer comn (p.e.,
productor-consumidor) se benefician con la utilizacin de threads.
Los threads proveen un mecanismo que permite a procesos
secuenciales
i l hacer
h
ll
llamadas
d all sistema
i
bl
bloqueantes
mientras
i
que
tambin logra paralelismo.

21/02/2012 09:45:17

18/04/2016

Hilos
<3>

Procesos Mono y Multihilos

21/02/2012 09:45:17

Hilos
<4>

Procesos Mono y Multihilos

21/02/2012 09:45:17

18/04/2016

Hilos
<5>

Beneficios
Capacidad de Respuesta
Compartir Recursos
oLos threads dentro de un mismo proceso comparten memoria y
archivos: pueden comunicarse entre ellos sin invocar al kernel
Economa
oToma menos tiempo crear un nuevo thread que un proceso
oMenos tiempo terminar un thread que un proceso
oMenos tiempo en conmutar entre threads dentro del mismo
proceso
Utilizacin de Arquitecturas Multiprocesador
Escalabilidad

21/02/2012 09:45:17

Hilos
<6>

Programacin Multicore
Los sistemas multicore ponen presin sobre los programadores, estos
desafos incluyen:
y
Dividir actividades
Balance
Particin de datos
Dependencia de los datos
Verificacin y depuracin

21/02/2012 09:45:17

18/04/2016

Hilos
<7>

Ejecucin Concurrente sobre un Sistema monocore

21/02/2012 09:45:17

Hilos
<8>

Ejecucin Paralela sobre un Sistema Multicore

21/02/2012 09:45:17

18/04/2016

Hilos
<9>

Hilos a Nivel de Usuario


User Level Threads (ULT)
Administracin de hilos realizada por libreras a nivel de usuario
Tres libreras primarias:
POSIX Pthreads
Win32 threads
Java threads

21/02/2012 09:45:17

Hilos
<10>

User Level Threads (ULT)


El Kernel no es consciente de la
existencia de threads.
Toda la manipulacin de threads
es realizada por la aplicacin
usando una biblioteca de
threads.
El intercambio de thread, no
requiere
q
del modo Kernel.
La planificacin es especfica de
la aplicacin.

21/02/2012 09:45:17

18/04/2016

Hilos
<11>

Ventajas y desventajas (ULT)


Ventajas.
El intercambio de thread no involucra el Kernel.
No existe intercambio de modo.
La planificacin puede ser especfica de la aplicacin.
ULTs puede ejecutarse en cualquier SO. Solamente se necesita una
biblioteca de thread.
Desventajas.
La mayora
y
de las llamadas del sistema bloquean
q
al p
proceso y a
todos los threads del mismo.
La planificacin se realiza a nivel de proceso y no de threads.

21/02/2012 09:45:17

Hilos
<12>

Hilos a Nivel de Usuario

21/02/2012 09:45:17

18/04/2016

Hilos
<13>

Hilos a Nivel de Usuario

21/02/2012 09:45:17

Hilos
<14>

Hilos a Nivel de Kernel


Toda la manipulacin de thread es realizada por el Kernel.
El Kernel mantiene informacin del contexto para el proceso y
threads.
Intercambio entre los threads requiere del Kernel.
La planificacin se realiza a nivel de threads.
Ejemplos
9Windows XP/2000/Vista/Win 7
9Solaris
9Linux (!!!!)
9Tru64 UNIX
9Mac OS X
21/02/2012 09:45:17

18/04/2016

Hilos
<15>

Kernel Level Threads (KLT)

21/02/2012 09:45:17

Hilos
<16>

Ventajas y desventajas (KLT)


Ventajas.
El Kernel puede planificar simultneamente varios threads del
mismo proceso en varios procesadores.
El bloqueo se realiza a nivel de thread.
Las rutinas del Kernel pueden ser multithreaded .
Desventajas.
El intercambio de threads dentro del mismo proceso involucra al
Kernel. Se tienen 2 intercambio de modo por intercambio de
thread.
h
Esto produce una penalizacin significativa.

21/02/2012 09:45:17

18/04/2016

Hilos
<17>

Modelo de Dos Niveles


Similar a M:M, excepto que permite a un hilo a nivel de usuario ser
limitado a un hilo a nivel de kernel
Ejemplos
9 HP-UX
9 Tru64 UNIX
9 Solaris 8 y anteriores

21/02/2012 09:45:17

Hilos
<18>

Modelo de Dos Niveles

21/02/2012 09:45:17

18/04/2016

Hilos
<19>

Libreras de Hilos
Las libreras de hilos proveen a los programadores con APIs para crear
y administrar hilos
Dos formas primarias de implementarlas
Libreras enteramente en espacio de usuario
Librera a nivel de Kernel soportada por el SO

21/02/2012 09:45:17

Hilos
<20>

Cancelacin de Hilos
Terminar un hilo antes que finalice
Dos propuestas generales:
Cancelacin asincrnica termina el hilo sealado inmediatamente
Cancelacin Diferida permite al hilo
peridicamente si debera ser cancelado

sealado

verificar

21/02/2012 09:45:17

10

18/04/2016

Hilos
<21>

Pools de Hilos
Crea un nmero de hilos en un pool donde esperan por trabajo
Ventajas:
Usualmente es ligeramente mas rpido servir un requerimiento
con un hilo existente que crear uno nuevo
Permite que el nmero de hilos de la aplicacin sea limitado al
tamao del pool

21/02/2012 09:45:17

Hilos
<22>

Hilos en Linux
Linux se refiere a ellos como tareas mas que como hilos
La creacin de hilos es hecha por la llamada a sistema clone()
clone() permite a una tarea hija compartir el espacio de direcciones
de la tarea-padre (proceso)

21/02/2012 09:45:17

11

18/04/2016

Hilos
<23>

Ejemplos de Aplicaciones Multihilo


Web browser
Un Hilo decodifica la pgina y la presenta en Pantalla.
Pantalla
Un Hilo toma los datos de la pgina de Internet.
Procesador de Texto.
Un Hilo despliega en Pantalla la interfaz.
Un Hilo toma los datos del Teclado.
Un Hilo revisa la ortografa.
g
Servidor Web
Un Hilo acepta peticiones de los clientes.
Para cada peticin recibida se crea un Hilo que la atiende.
Usa muchos Hilos para atender en paralelo a muchos clientes.
21/02/2012 09:45:17

12