Sistemas
Sistemas Operativos
Operativos
Hilos
Hilos –– Threads
Threads
Profesores
Mag. Ing. Liliana CUENCA PLETSCH
Dr. Ing. Sergio GRAMAJO
Auxiliares
Ing. Alberto RISTOFF
Ing. Jorge ROA
Procesos e Hilos
Un hilo, thread o proceso ligero es un programa en ejecución que
comparte la imagen de memoria y otras informaciones con otros hilos
de un proceso.
Es decir que los procesos, en lugar de un único flujo de ejecución se
componen de más de un flujo de ejecución.
En Sistemas Operativos multihilos la unidad básica de utilización de CPU
es el hilo, donde cada proceso está compuesto por un espacio de
direcciones y uno o más hilos de control
Cola de Listos
P3H6 P1H10 P2 H16 P2H5 P1H2 P1 H1
Procesos e Hilos
Hilos
Información compartida Información exclusiva de
por todos los hilos del cada hilo
proceso
Espacio de direcciones Contador de programa
Variables globales Registros
Archivos abiertos Pila
Procesos hijos Estado
Alarmas pendientes
Señales y manejadores de
señales
Información contable
Procesos e Hilos
Proceso
Código
Datos
Recursos (archivos…..)
Recursos (archivos…..)
Entorno del proceso
Thread 1 Thread n
Registros Registros
Pila Pila
Procesos e Hilos
Modelo de Proceso Monohilo Modelo de Proceso Multihilo
HILO HILO
Bloque de Bloque Bloque
Control de Pila de Bloque
de de
Proceso usuario Control Control
de de Hilo de Hilo
Control
de
Espacio de Proceso Pila de Pila de
Direcciones usuario usuario
de usuario Pila del Espacio
Núcleo de
Direccio-
Pila del Pila del
nes de
Núcleo Núcleo
usuario
Procesos e Hilos
Procesos e Hilos
Un Proceso
(padre) puede <>
HILOS
crear un nuevo
proceso (hijo)
Un proceso hijo es un proceso completo que consiste en un programa en
ejecución, con valores propios información de estado, que hereda del
proceso padre
Los hilos permiten la ejecución concurrente de varias secuencias de
instrucciones asociadas a diferentes funciones dentro de un mismo
proceso, compartiendo un mismo espacio de direcciones y las
mismas estructuras de datos del núcleo
Beneficios de los Hilos
Lleva menos tiempo crear un hilo dentro de un proceso que
un nuevo proceso (10 o + veces más rápido)
Lleva menos tiempo cambiar entre hilos que comparten el
mismo espacio de direcciones que entre procesos que tienen
sus propios espacios de direcciones.
La compartición de recursos es más eficiente entre hilos que
entre procesos
La comunicación entre hilos no requiere la intervención del
núcleo
Si se desea implementar una aplicación como un conjunto de
unidades de ejecución relacionadas, es más eficiente hacerlo con
un conjunto de hilos que con un conjunto de procesos
independientes
Hilos
Ejemplo. Servidor Web multihilo
Hilos
Ejemplo. Procesador de texto con 3 hilos
Reformatea el texto cada vez que el
usuario realiza una inserción o una
eliminación
Realiza Autoguardado
Recibe las entradas
cada cierto tiempo
del usuario
Hilos: Modelo clásico
(a) Modelo de 1 hilo por proceso (b) Modelo de varios hilos por proceso
Hilos
Información compartida Información exclusiva de
por todos los hilos del cada hilo
proceso
Espacio de direcciones Contador de programa
Variables globales Registros
Archivos abiertos Pila
Procesos hijos Estado
Alarmas pendientes
Señales y manejadores de
señales
Información contable
Planificación de hilos
Sincronización hilos
Los hilos de un proceso comparten el mismo espacio de
direcciones y otros recursos, como por ejemplo los archivos.
Es necesario sincronizar los hilos para evitar que interfieran
entre ellos o dejen inconsistentes las estructuras de datos
compartidas
Hilos a nivel de usuario y a nivel de núcleo
ULT KLT
Hilos a nivel de usuario ULT
Todo el trabajo de gestión de hilos lo realiza la aplicación. El
núcleo o kernel no es consciente de la existencia de hilos.
Es posible programar una aplicación como multihilo mediante una
biblioteca de hilos.
La biblioteca de hilos contiene el código para crear y destruir hilos,
intercambiar mensajes y datos entre hilos, para planificar la
ejecución de hilos y para salvar y restaurar el contexto de los hilos.
Todas las operaciones se llevan a cabo en el espacio de usuario
de un mismo proceso.
El kernel continua planificando el proceso como una unidad y
asignándole un único estado (Listo, bloqueado, etc.)
Hilos a nivel de usuario - ULT
Ventajas Desventajas
El intercambio de los hilos no
necesita los privilegios del En la mayoría de los sistemas
modo kernel, por que todas las operativos las llamadas al
estructuras de datos están en sistema son bloqueantes.
el espacio de direcciones de Cuando un hilo realiza una
usuario de un mismo proceso. llamada al sistema, se bloquea
Los cambios de contexto el mismo y también el resto de
son rápidos ya que no los hilos del proceso.
involucran llamadas al
sistema. Las aplicaciones multihilo no
La planificación de los hilos se pueden aprovechar las
realiza dentro del proceso, por ventajas de los
lo que se puede elegir el multiprocesadores, ya que
criterio. como el núcleo no interviene, ve
al conjunto de hilos como un solo
Los ULT pueden ejecutar en proceso
cualquier sistema operativo.
La biblioteca de hilos es un
conjunto compartido.
Hilos a nivel de nucleo - KLT
El SO soporta los hilos y proporciona un conjunto de
llamadas al sistema para su manipulación.
El SO crea un thread de kernel por cada thread de usuario.
El kernel mantiene la información de contexto tanto de los
procesos como de los hilos.
El cambio de contexto entre threads lo realiza el kernel.
Los hilos a nivel de kernel se bloquean y despiertan en forma
independiente
Hilos a nivel de núcleo KLT
Ventajas Desventajas
El kernel puede planificar El paso de control
simultáneamente de un hilo a otro
múltiples hilos del mismo requiere un cambio
proceso en múltiples de modo
procesadores.
Si se bloquea un hilo,
puede planificar otro del
mismo proceso o de otro.
Las propias funciones del
kernel pueden ser
multihilo
Hilos a nivel de usuario
Implementacion
El Runtime (sistema en Procesos y
tiempo de ejecución) es una sus hilos
colección de rutinas de Espacio Runtime
manejo de hilos que lleva el de usuario (contiene
control del estado de cada información de
hilo del proceso en estado de los
ejecución hilos
Las llamadas del paquete Núcleo
Espacio (mantien
de hilos se implementan
como llamadas a de núcleo información de
estado de los
procedimientos del runtime.
procesos
Hilos a nivel de núcleo
Implementacion
Procesos y
Espacio sus hilos
de usuario
Núcleo
(mantien
información de
Espacio estado de los
de núcleo hilos
Hilos - Repaso
Hilos implementados mediante
Explique el concepto de hilo concepto de equipo
Qué información se requiere si Creación y Terminación de
se implementan hilos. Cuál es Hilos
propia y cuál es compartida
Ventajas de los hilos. Planificación de Hilos
Hilos implementados mediante un Hilos a nivel de usuario e hilos
hilo despachador e hilos a nivel de núcleo
trabajadores