Está en la página 1de 38

SISTEMAS

OPERATIVOS
Hilos

Ing. Walter García

Silberschatz Galvin
Hilos
 Concepto
 Beneficios
 Hilos a nivel kérnel y a nivel usuario
 Modelos multihilos
 Hilos de Solaris 2
 Hilos de Java

Hilos Sistemas Operativos 2


Hilos
 Un hilo (o proceso ligero) es una unidad
básica de utilización del CPU; consiste de:
◦ Contador de programa
◦ Conjunto de registros
◦ Espacio de stack

Hilos Sistemas Operativos 3


 Un hilo comparte con sus hilos pares:
◦ Sección de código
◦ Sección 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
Hilos Sistemas Operativos 4
Hilos y procesos

un proceso un proceso
un hilo varios hilos

varios procesos varios procesos


un hilo por proceso varios hilos por proceso

Hilos Sistemas Operativos 5


Procesos con un solo hilo y con
múltiples hilos

Código Datos Archivos Código Datos Archivos

Hilo Hilos

Mono-hilo Multi-hilo

Hilos Sistemas Operativos 6


Modelos de procesos de un solo
hilo y de muchos hilos

Modelo de proceso Modelo de proceso


de un solo hilo multihilos
Hilo Hilo Hilo
Bloque de Bloque de Bloque de
Bloque Stack control control control
de control del del hilo del hilo del hilo
del proceso usuario

Bloque de Stack Stack Stack


Espacio de Stack control del del del del
direcciones del proceso usuario usuario usuario
del usuario Kernel

Espacio de Stack Stack Stack


direcciones del del del
del usuario kernel kernel kernel

Hilos Sistemas Operativos 7


 Sistema operativo que mantiene varios
hilos de ejecución dentro de un mismo
proceso.
 MS-DOS soporta un solo hilo.
 UNIX soporta múltiples procesos de
usuarios, pero sólo un hilo por proceso.
 Windows 2000, Solaris, Linux, Mac OS,
OS/2 soportan múltiples hilos.

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

Hilos a nivel usuario


Hilos Sistemas Operativos 12
Hilos a nivel usuario (un CPU con
dos núcleos)

Proceso de usuario gestiona y


Nivel usuario
planifica los múltiples hilos
Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware

CPU Core Core

Hilos Sistemas Operativos 13


Los hilos podían implementarse en las
aplicaciones que se ejecutaban en
sistemas operativos que no son capaces
de planificar hilos
◦ Ejemplo: Primeras implementaciones de UNIX

Ventajas de los hilos a nivel


usuario
Hilos Sistemas Operativos 14
El planificador del sistema operativo solo ve
un hilo por proceso
No ve los hilos a nivel usuario
Usa un solo núcleo del procesador en un
procesador que tiene más de un núcleo
No puede distribuir los hilos a nivel el usuario
en los dos núcleos

Desventajas de los hilos a nivel


usuario
Hilos Sistemas Operativos 15
 Soportados por el kérnel

 Ejemplos
◦ Windows 95/98/NT
◦ Solaris
◦ Linux
◦ Mac OS

Hilos a nivel kérnel

Hilos Sistemas Operativos 16


Hilos a nivel kernel (con un CPU
con un solo núcleo)

Nivel usuario

Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware

CPU Core

Hilos Sistemas Operativos 17


Hilos a nivel kernel (con un CPU
con doble núcleo)

Nivel usuario

Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware
CPU Core Core

Hilos Sistemas Operativos 18


El proceso de usuario no se tiene que
encargar de la planificación de los hilos

Si tenemos un procesador con más de un


núcelo, el Sistema operativo puede
planificar los hilos en diferentes núcleos

Ventajas de los hilos a nivel kérnel


Hilos Sistemas Operativos 19
 Muchos a uno
 Uno a uno
 Muchos a muchos

Modelos multihilos
Hilos Sistemas Operativos 20
 Muchos hilos a nivel usuario mapeados a
un hilo a nivel kérnel.

 Usado en sistemas que no soportan hilos


a nivel kérnel.

Muchos a uno
Hilos Sistemas Operativos 21
Modelo muchos a uno

Hilos Sistemas Operativos 22


Relaciones entre estados de ULTs
y estados de procesos
Hilo 1
Hilo 2
Listo Ejecución
Listo Ejecución
Bloqueado
Bloqueado

Usuario

Kernel
Listo Ejecución

Bloqueado

Proceso B Hilos Sistemas Operativos 23


 Cada hilo a nivel usuario corresponde a
un hilo del kérnel.

 Ejemplos:
 - Windows 95/98/NT
 - OS/2

Uno a uno
Hilos Sistemas Operativos 24
Hilo a nivel usuario

Hilo a nivel kérnel


k k k k

Modelo uno a uno


Hilos Sistemas Operativos 25
Modelo muchos a muchos

Hilo a nivel usuario

Hilo a nivel kérnel


k k k

Hilos Sistemas Operativos 26


 Solaris 2 es una versión de UNIX con
soporte para hilos a nivel kernel y a nivel
usuario, procesamiento simétrico y
planificación en tiempo real.

Soporte de hilos en Solaris 2


Hilos Sistemas Operativos 27
 LWP – Nivel intermedio entre los hilos a
nivel kernel y los hilos a nivel usuario.

Soporte de hilos en Solaris 2


Hilos Sistemas Operativos 28
Hilos en Solaris 2. Recursos
necesarios para los tipos de hilos

 Hilos del kernel


◦ Estructura de datos pequeña y un stack
◦ El intercambio de hilos no requiere cambiar la
información del acceso a memoria
◦ Cambios de hilos relativamente rápidos

Hilos Sistemas Operativos 29


Hilos en Solaris 2. Recursos
necesarios para los tipos de hilos

 LWP
◦ PCB con datos de los registros
◦ Información sobre la memoria
◦ El intercambio entre LWP es relativamente
lento

Hilos Sistemas Operativos 30


Hilos en Solaris 2. Recursos
necesarios para los tipos de hilos

 Hilos a nivel usuario


◦ Solo requiere un stack y un contador de
programa
◦ No involucrar al kernel significa un intercambio
rápido
◦ El kernel solo ve los LWP que soporta los hilos
a nivel usuario

Hilos Sistemas Operativos 31


Ejemplo de la arquitectura
multihilo de Solaris
Proceso 1 Proceso 2 Proceso 3 Proceso 4 Proceso 5

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

Hilos Sistemas Operativos 32


 Un hilo tiene :
◦ Un identificador (ID)
◦ Una pila
◦ Una prioridad de ejecución
◦ Una dirección de inicio de ejecución.

Gestión de hilos básica


Hilos Sistemas Operativos 33
Gestión de hilos básica
(POSIX)

 Se dice que un hilo es dinámico si se


puede crear en cualquier instante durante
la ejecución.
 En POSIX :
◦ los hilos se crean dinámicamente con la función
pthread_create.
◦ pthread_exit termina el hilo que la invoca.

Hilos Sistemas Operativos 34


 Programa que crea un hilo donde muestra
el mensaje “Hola Mundo”

 Para compilar el programa :


◦ $ cc -D_REENTRANT thread2.c -o thread2 -
lpthread

Gestión de hilos básica (POSIX),


ejemplo:
Hilos Sistemas Operativos 35
int main()
{

pthread_create(a_thread,funcion_hilo); Crea un hilo


nuevo

Espera a que
pthread_join(a_thread);
termine el hilo
creado

}
Hilo principal
funcion_hilo()
{

} Hilo creado con la llamada
pthread_create

Hilos Sistemas Operativos 36


Gestión de hilos básica
(POSIX)
 Pthread_join()
◦ Hilo que ejecuta pthread_join, espera a que
termine otro hilo
 El hilo principal debe esperar a que
terminen todos los hilos creados
◦ Si el hilo principal no espera a que terminen los
hilos creados, al terminar termina el proceso
con todos los hilos.

Hilos Sistemas Operativos 37


Hilos en memoria

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)

Hilos Sistemas Operativos 38

También podría gustarte