Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Captulo 5
Silberschatz Galvin
Hilos
Concepto
Beneficios
Hilos a nivel krnel y a nivel usuario
Modelos multihilos
Hilos de Solaris 2
Hilos de Java
Hilos
Sistemas Operativos
Hilos
Un hilo (o proceso ligero) es una unidad bsica de utilizacin
del CPU; consiste de:
Contador de programa
Conjunto de registros
Espacio de stack
Hilos
Sistemas Operativos
Hilos
Un hilo comparte con sus hilos pares:
Seccin de cdigo
Seccin de datos
Recursos del sistema operativo
En conjunto se les conoce como tarea
Un proceso tradicional o pesado, es igual a una tarea con un
hilo.
Hilos
Sistemas Operativos
Hilos y procesos
un proceso
un hilo
varios procesos
un hilo por proceso
Hilos
un proceso
varios hilos
varios procesos
varios hilos por proceso
Sistemas Operativos
Cdigo
Datos
Archivos
Cdigo
Datos
Archivos
Hilos
Hilo
Mono-hilo
Hilos
Multi-hilo
Sistemas Operativos
Modelo de proceso
multihilos
Modelo de proceso
de un solo hilo
Bloque
de control
del proceso
Espacio de
direcciones
del usuario
Hilo
Stack
del
usuario
Stack
del
Kernel
Bloque de
control del
proceso
Espacio de
direcciones
del usuario
Hilos
Hilo
Hilo
Bloque de
control
del hilo
Bloque de
control
del hilo
Bloque de
control
del hilo
Stack
del
usuario
Stack
del
usuario
Stack
del
usuario
Stack
del
kernel
Stack
del
kernel
Stack
del
kernel
Sistemas Operativos
Multihilo
Sistema operativo que mantiene varios hilos de ejecucin
dentro de un mismo proceso.
MS-DOS soporta un solo hilo.
UNIX soporta mltiples procesos de usuarios, pero slo un hilo
por proceso.
Windows 2000, Solaris, Linux, Mac OS, OS/2 soportan mltiples
hilos.
Hilos
Sistemas Operativos
Hilos
En una tarea donde hay mltiples hilos, mientras un hilo
servidor est bloqueado y esperando, otro hilo en la misma
tarea puede ejecutarse.
Cooperacin de mltiples hilos en la misma tarea aumenta la
tasa de trabajos por unidad tiempo y mejora el rendimiento.
Aplicaciones que requieren compartir un buffer comn
(productor-consumidor) sacan provecho de la utilizacin de
hilos.
Hilos
Sistemas Operativos
Hilos
Los hilos proveen un mecanismo que permiten a procesos
secuenciales hacer llamadas bloqueantes mientras otros en
paralelo ejecutan otras operaciones.
10 Hilos
Sistemas Operativos
Beneficios
Comparticin de recursos
Economa
Utilizacin de arquitecturas de mltiples procesadores
11 Hilos
Sistemas Operativos
Ejemplos
- Hilos POSIX
- Mach C-threads
- Hilos de Solaris
12 Hilos
Sistemas Operativos
Nivel usuario
Nivel krnel
(sistema
operativo)
Planificador del SO
Hardware
CPU
13 Hilos
Core
Core
Sistemas Operativos
14 Hilos
Sistemas Operativos
15 Hilos
Sistemas Operativos
16 Hilos
Sistemas Operativos
Nivel usuario
Nivel krnel
(sistema
operativo)
Planificador del SO
Hardware
CPU
17 Hilos
Core
Sistemas Operativos
Nivel usuario
Nivel krnel
(sistema
operativo)
Planificador del SO
Hardware
CPU
18 Hilos
Core
Core
Sistemas Operativos
19 Hilos
Sistemas Operativos
Modelos multihilos
Muchos a uno
Uno a uno
Muchos a muchos
20 Hilos
Sistemas Operativos
Muchos a uno
Muchos hilos a nivel usuario mapeados a un hilo a nivel krnel.
21 Hilos
Sistemas Operativos
kk
22 Hilos
Sistemas Operativos
Hilo 1
Listo
Hilo 2
Ejecucin
Listo
Ejecucin
Bloqueado
Bloqueado
Usuario
Listo
Kernel
Ejecucin
Bloqueado
23 Hilos
Sistemas
Operativos
Proceso
B
Uno a uno
Cada hilo a nivel usuario corresponde a un hilo del krnel.
Ejemplos:
- Windows 95/98/NT
- OS/2
24 Hilos
Sistemas Operativos
kk
25 Hilos
kk
kk
kk
Sistemas Operativos
kk
26 Hilos
kk
kk
Sistemas Operativos
27 Hilos
Sistemas Operativos
28 Hilos
Sistemas Operativos
29 Hilos
Sistemas Operativos
30 Hilos
Sistemas Operativos
31 Hilos
Sistemas Operativos
Proceso 1
Proceso 2
Proceso 3
Proceso 4
Proceso 5
Usuario
Biblioteca
de hilos
Ncleo
Hardware
Hilo a nivel de
usuario
32 Hilos
P
L
Proceso ligero
Sistemas Operativos
P
P
P
Procesador
33 Hilos
Sistemas Operativos
34 Hilos
Sistemas Operativos
35 Hilos
Sistemas Operativos
int main()
{
pthread_create(a_thread,funcion_hilo);
Crea un hilo
nuevo
pthread_join(a_thread);
Espera a que
termine el hilo
creado
Hilo principal
funcion_hilo()
{
36 Hilos
Sistemas Operativos
37 Hilos
Sistemas Operativos
Hilos en memoria
Cdigo
(compartido)
Datos
(compartidos)
Int cont=0 (var. Global)
38 Hilos
Sistemas Operativos