Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OPERATIVOS
Hilos
Silberschatz Galvin
Hilos
Concepto
Beneficios
Hilos a nivel kérnel y a nivel usuario
Modelos multihilos
Hilos de Solaris 2
Hilos de Java
Hilos
Hilos Sistemas Operativos 4
Hilos y procesos
un proceso un proceso
un hilo varios hilos
Hilo Hilos
Mono-hilo Multi-hilo
Multihilo
Hilos Sistemas Operativos 8
En una tarea donde hay múltiples hilos,
mientras un hilo servidor está bloqueado
y esperando, otro hilo en la misma tarea
puede ejecutarse.
◦ Cooperación de múltiples hilos en la misma
tarea aumenta la tasa de trabajos por unidad
tiempo y mejora el rendimiento.
◦ Aplicaciones que requieren compartir un buffer
común (productor-consumidor) sacan provecho
de la utilización de hilos.
Hilos
Hilos Sistemas Operativos 9
Los hilos proveen un mecanismo que
permiten a procesos secuenciales hacer
llamadas bloqueantes mientras otros en
paralelo ejecutan otras operaciones.
Hilos
Hilos Sistemas Operativos 10
Compartición de recursos
Economía
Utilización de arquitecturas de múltiples
procesadores
Beneficios
Hilos Sistemas Operativos 11
El manejo de los hilos lo hace una librería
de hilos a nivel usuario
Ejemplos
- Hilos POSIX
- Mach C-threads
- Hilos de Solaris
Planificador del SO
Hardware
Ejemplos
◦ Windows 95/98/NT
◦ Solaris
◦ Linux
◦ Mac OS
Nivel usuario
Nivel kérnel
(sistema
operativo)
Planificador del SO
Hardware
CPU Core
Nivel usuario
Nivel kérnel
(sistema
operativo)
Planificador del SO
Hardware
CPU Core Core
Modelos multihilos
Hilos Sistemas Operativos 20
Muchos hilos a nivel usuario mapeados a
un hilo a nivel kérnel.
Muchos a uno
Hilos Sistemas Operativos 21
Modelo muchos a uno
Usuario
Kernel
Listo Ejecución
Bloqueado
Ejemplos:
- Windows 95/98/NT
- OS/2
Uno a uno
Hilos Sistemas Operativos 24
Hilo a nivel usuario
LWP
◦ PCB con datos de los registros
◦ Información sobre la memoria
◦ El intercambio entre LWP es relativamente
lento
Usuario Biblioteca
de hilos
L L L L L L L L L
Núcleo
Hardware P P P P P
Hilo a nivel de
usuario
Hilo del núcleo L Proceso ligero P Procesador
Espera a que
pthread_join(a_thread);
termine el hilo
creado
}
Hilo principal
funcion_hilo()
{
…
} Hilo creado con la llamada
pthread_create
Código
(compartido)
Datos
(compartidos)
Int cont=0 (var. Global)
Stack (de cada hilo)
Int i
(var local)
Stack (de cada hilo)
Int i
(var local)