Contenido
Captulo 4
Hilos
Secciones Stallings: 4.1 4.3
Procesos e hilos. Hilos a nivel de ncleo y a nivel de usuario. Multiprocesador simtrico (SMP). Microncleos.
Proceso
Unidad de propiedad de los recursos:
Necesita espacio de direcciones virtuales para mantener su imagen Tiene asignados recursos en ciertos momentos
Procesos e hilos
Hilo: unidad de expedicin. Proceso/tarea: unidad de propiedad de los recursos
Unidad de expedicin:
sigue un camino de ejecucin que puede ser intercalada con la de otros procesos
Estas dos caractersticas son tratadas de manera independiente por el S.O.
Multihilo
SO 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 (a partir del 2000), Solaris, Linux, Mach, y OS/2 soportan mltiples hilos.
Un proceso, un hilo Un proceso, mltiples hilos
Mltiples procesos, un hilo por proceso
Mltiples procesos, mltiples hilos por proceso
Flujo de instrucciones
Figura 4.1. Procesos e hilos [ANDE97].
Proceso en entorno multihilo
Proceso:
Espacio de direcciones virtuales, que contiene la imagen del proceso. Acceso protegido a los procesadores, a otros procesos, archivos y a recursos de E/S. Puede tener 1 o varios hilos
Hilo en entorno multihilo
Hilo tiene:
Estado de ejecucin (ejecucin, listo, etc.). Contexto del procesador, que se salva cuando no est ejecutando. Tiene una pila de ejecucin. Almacenamiento esttico para las variables locales. Acceso a memoria y otros recursos del proceso, compartidos con todos los hilos del mismo
Modelo de proceso monohilo
Bloque de control de proceso Pila de usuario
Modelo de proceso multihilo
Hilo
Bloque de control de hilo
Hilo
Bloque de control de hilo
Hilo
Bloque de control de hilo
Beneficios de los hilos
Se tarda menos tiempo en crear un nuevo hilo en un proceso existente. Se tarda menos tiempo en terminar un hilo que un proceso. Se tarda menos tiempo en cambiar entre dos hilos de un mismo proceso. Los hilos de un mismo proceso comparten recursos (memoria, archivos, ) => pueden comunicarse entre s sin invocar al ncleo (no necesidad de proteccin) => coordinacin es ms rpida (vs. procesos, que deben enviarse msgs.) => aumenta eficiencia
Espacio de Pila del direcciones ncleo de usuario (cdigo y datos)
Bloque de control de proceso Espacio de direcciones de usuario (cdigo y datos)
Pila de usuario
Pila de usuario
Pila de usuario
Pila del ncleo
Pila del ncleo
Pila del ncleo
Acceso a los mismos datos y recursos. Ej: un hilo abre fichero con permiso lectura, el resto de hilos pueden leer.
Figura 4.2. Modelos de proceso monohilo y multihilo.
Usos de los hilos en un sistema monousuario y multiproceso
Trabajo interactivo y en segundo plano.
Ej: calcular recibir datos de teclado (bloques)
Llamadas a Procedimiento Remoto (RPC) utilizando hilos
Tiempo Llamada a RPC Proceso 1 Llamada a RPC
Procesamiento asncrono
Ej: cada X tiempo copia de seguridad. No necesario comprobaciones externas de tiempo, ni coordinacin entre E/S, porque el hilo se ocupa de ello
Servidor 1
Servidor 2
Aceleracin de la ejecucin
Ej: procesar lotes leer siguiente
(a) RPC utilizando un solo hilo Bloqueado, esperando respuesta de una RPC Ejecutando
Estructuracin modular de los programas
Ej: varias actividades a la vez y/o varios dispositivos
Figura 4.3. Llamadas a Procedimiento Remoto (RPC) utilizando hilos
Llamadas a Procedimiento Remoto (RPC) utilizando hilos
Llamada a RPC Hilo A (proceso 1) Hilo B (proceso 1) Llamada a RPC
Servidor 2 Servidor 1
Estados de un hilo
Hilos tienen estado de ejecucin Pueden sincronizarse entre ellos Operaciones bsicas relacionadas con el cambio de estado en hilos:
Creacin Bloqueo Desbloqueo Terminacin:
Se liberan el contexto y las pilas.
(b) RPC utilizando un hilo por servidor (en un monoprocesador) Bloqueado, esperando respuesta de una RPC Bloqueado, esperando al procesador que est siendo usado por el hilo B Ejecutando
Figura 4.3. Llamadas a Procedimiento Remoto (RPC) utilizando hilos.
Estados de proceso - hilos
Suspensin de un proceso => suspensin de todos sus hilos, porque comparten el mismo espacio de direcciones Terminacin de un proceso => terminar con todos sus hilos, el proceso ya no se elige para la ejecucin
Estados de un hilo
Creacin de un hilo:
Crear proceso = crear 1 primer hilo Un hilo puede crear otros hilos:
Le pasa puntero de instruccin y argumentos
Nuevo hilo tiene su propio contexto y espacio de pila Nuevo hilo pasa a la cola de listos
Estados de un hilo
Bloqueo de un hilo:
Hilo necesita esperar suceso Bloqueo: guardar contexto del hilo (registros, contador de programa, puntero de pila) No tienen por qu bloquearse el resto de los hilos
Hilos a nivel de usuario: se bloquea el proceso entero Hilos a nivel de ncleo: se bloquea slo el hilo
Estados de un hilo
Desbloqueo de un hilo:
El suceso ocurre
El hilo pasa a cola de listos (si hilos a nivel de ncleo) El proceso pasa a cola de listos (si hilos a nivel de usuario y era el nico hilo bloqueado)
Terminacin de un hilo:
Se libera su bloque de control (contexto) y su pila
Hilos a nivel de usuario
La aplicacin realiza todo el trabajo de gestin de hilos El ncleo no tiene conocimiento de la existencia de hilos Biblioteca de hilos - cdigo para:
crear y destruir hilos intercambiar mensajes y datos entre hilos planificar ejecucin de hilos salvar y restaurar el contexto de los hilos
Hilos a nivel de usuario
Biblioteca de hilos Espacio de usuario Espacio de ncleo
(a) Nivel de usuario puro
Hilo a nivel de usuario
Hilo a nivel de ncleo
Proceso
Proceso ejecutndose (hilo 2) Interrupcin de reloj: el tiempo para proceso B termina Qu ocurre?
Proceso ejecutndose (hilo 2) Hilo 2 hace llamada al sistema
Pasa a modo ncleo => proceso bloqueado Estado de los hilos se mantiene (nivel usuario)
Pasar a modo ncleo Proceso B pasa a listo Estado de los hilos (nivel usuario) se mantiene
Proceso ejecutndose (hilo 2) Hilo 2 necesita que ocurra suceso que depende de hilo 1. Qu ocurre?
Hilos a nivel de usuario
Permiten multiprogramacin dentro de un proceso
Planificador Hilos: Tabla Hilos Biblioteca de usuario Tabla Hilos
Espacio de usuario
Proceso A
Proceso B
Planificador Procesos
Hilo 2 se bloquea (nivel usuario) Hilo 1 de listo a ejecutarse Proceso sigue ejecutndose
Tabla de procesos
Ncleo
Planificacin de los hilos es interna al proceso biblioteca de hilos a nivel de usuario
Ventajas hilos a nivel de usuario
Intercambio de hilos no necesita privilegios del modo ncleo:
Gestin de hilos en el espacio de direcciones de usuario Se evitan 2 cambios de modo
Desventajas hilos a nivel de usuario
Llamadas al sistema son bloqueantes:
Un hilo ejecuta llamada => bloqueo del resto de hilos (bloqueo de todo el proceso)
No se aprovechan las ventajas de multiprocesadores:
Ncleo asigna el procesador a 1 proceso => cuando se le quita, todos hilos del proceso esperan a que se le vuelva a asignar. Hilos a nivel de usuario invisibles para el S.O.
Se puede decidir planificacin especfica a nivel de hilos Hilos se pueden ejecutar en cualquier S.O.:
Biblioteca hilos = utilidades de aplicacin
Hilos a nivel de ncleo
Ncleo mantiene la informacin de contexto del proceso y de los hilos
Hilos visibles y gestionados por el ncleo
Hilos a nivel de ncleo
Espacio de usuario Espacio de ncleo
La planificacin se realiza en funcin de los hilos => hilos del mismo o distinto proceso compiten por procesador Ejs: W2K, Linux y OS/2
(b) Nivel de ncleo puro
Hilo a nivel de usuario
Hilo a nivel de ncleo
Proceso
Hilos a nivel de ncleo
Ventajas:
Si varios procesadores, posible ejecutar en paralelo hilos del mismo proceso Bloqueo de un hilo NO implica bloqueo de los dems Las propias funciones del ncleo pueden ser multihilo
Aproximaciones combinadas
Creacin de hilos: en el espacio de usuario Planificacin y sincronizacin: en el espacio de usuario Varios hilos de usuario se asocian con varios hilos a nivel de ncleo
N igual o distinto, lo puede ajustar el programador
Desventajas:
Necesario cambiar a modo ncleo para pasar de un hilo a otro (incluso con hilos de un mismo proceso)
Ej.: Solaris Ventajas:
Hilos de un mismo proceso se pueden ejecutar en paralelo en varios procesadores Llamadas al sistema bloqueantes no necesitan bloquear todo el proceso.
Biblioteca de hilos
Espacio de usuario Espacio de ncleo
Espacio de usuario Espacio de ncleo
Biblioteca de hilos
Espacio de usuario Espacio de ncleo
Relacin entre hilos y procesos
Hilos : Procesos 1:1 Descripcin Cada hilo de ejecucin es un nico proceso con sus propios recursos y espacio de direcciones. Un proceso define un espacio de direcciones y unos recursos dinmicos propios. Pueden crearse varios hilos que ejecuten en dicho proceso. Sistemas de ejemplo Implementaciones UNIX clsicas
M:1
(a) Nivel de usuario puro (b) Nivel de ncleo puro (c) Combinado
Windows NT, Solaris, OS/2, OS/390, MACH
Hilo a nivel de usuario
Hilo a nivel de ncleo
Proceso
Figura 4.6. Hilos a nivel de usuario y a nivel de ncleo.
Relacin entre hilos y procesos
Hilos : Procesos 1:M Descripcin Un hilo puede emigrar del entorno de un proceso a otro. Esto permite que un hilo se pueda mover fcilmente entre sistemas distintos. Sistemas de ejemplo Ra (Clouds), Emerald
Procesos de Windows
Implementados como objetos Un proceso ejecutable puede contener uno o ms hilos. Tanto el objeto proceso como el objeto hilo tienen funcionalidades de sincronizacin preconstruidas.
M:N
Combina los atributos de los casos M:1 y1:M
TRIX
Un proceso Windows y sus recursos
Proceso de Windows
Objeto proceso
Hilo de Windows
Objeto hilo
Estados de los hilos (Windows 2000)
Listo (Ready) Substituto (Standby) Ejecutando (Running) Bloqueado (Waiting) Transicin (Transition) Terminado (Terminated)
Estados y transiciones de hilos en Windows
Proceso:
Solaris
BCP Espacio de direcciones: cdigo + datos + pila
Hilos a nivel de usuario (ULT) Hilos a nivel de ncleo (KLT):
Realizan funciones especficas de ncleo
Procesos ligeros (LWP):
Asociacin entre ULT y KLT Cada LWP:
soporta uno o ms ULT est asociado con un KLT
Arquitectura multihilo de Solaris
Estructura de procesos en Unix clsico y Solaris
EdD de proceso ligero en Solaris
Identificador del LWP Prioridad Mscara de seales: indica al ncleo que seales debe aceptar Contexto Pila del ncleo para el LWP Uso de recursos y datos de perfles: Contabilidad Puntero al correspondiente hilo del ncleo Puntero a la estructura del proceso
Estados y transiciones de hilos y procesos ligeros en Solaris
EdD de proceso Linux
Estado Informacin de planificacin: Identificadores Comunicacin entre procesos Enlaces: padres-hijos-hermanos Tiempos y temporizadores Sistema de ficheros Espacio de direcciones Contexto especfico del procesador
Estados en un proceso Linux
Ejecutando (Running) Interrumpible (Interruptable) Ininterrumpible (Uninterruptable) Detenido (Stopped) Zombie
Estados y transiciones de hilos y procesos ligeros en Linux