Hebras (Threads) Hebras • Algunos sistemas operativos permiten tener varias líneas de ejecución de código dentro de un mismo proceso Mario Medina Sistemas Operativos 2008 mariomedina@udec.cl Hebras y procesos Un proceso, una hebra: MS-DOS Varios procesos, una hebra: UNIX clásico Un proceso, multi-hebras: Máquina virtual de Java Varios procesos, multi-hebra: Unix, Linux, Windows, Solaris Procesos en sistemas multi-hebras • Sistema operativo separa protección (procesos) de concurrencia (hebras) S. O. asigna recursos a nivel de proceso S. O. protege al proceso del resto del sistema Concurrencia puede darse a nivel de h Hebras h Procesos h Ambos Sistemas multi-hebras Qué comparten las hebras? • Un proceso puede tener una o más hebras, cada una con su propio • Todas las hebras de un mismo proceso comparten Estado de ejecución h Listo, en Ejecución, Bloqueado Contexto de la CPU (PC, IR, etc.) Pila de usuario Variables locales Acceso a memoria y recursos del proceso (C) 2008 Mario Medina El PCB del proceso El estado del proceso Los recursos y la memoria del proceso El mismo espacio de direcciones Los datos del proceso 1 Mono- y Multi-hebras Ventajas de las hebras • Creación y destrucción rápida • Cambio de hebra más rápido que cambio de contexto • Comunicación entre hebras más eficiente que entre procesos • Esquema útil para Servidores, acceso a dispositivos, procesamiento asincrónico Sistemas multiprocesadores Estado de una hebra Hebras y tiempo compartido • Similar a los estados de un proceso • Hebras de nivel de sistema En ejecución, Listo, Bloqueado • Suspensión ocurre a nivel de proceso Si proceso es suspendido, todas las hebras se expulsan de memoria • Crear proceso es crear una hebra • Una hebra puede crear otras hebras • Terminar una hebra libera su memoria Queda disponible para las otras hebras Bloqueo de hebras Hebras de nivel de usuario • Bloqueo de una hebra implica bloqueo del proceso? • Sistema operativo maneja procesos Depende de la implementación de hebras • Hebras de nivel de usuario Llamadas también ULT (User-Level Threads) • Hebras de nivel de sistema Llamadas también KLT (Kernel-Level Threads) (C) 2008 Mario Medina No sabe nada sobre las hebras! • Aplicación maneja las hebras a través de una biblioteca de nivel de usuario Ejemplos: Solaris Green Threads, GNU Portable Modelo muchos-a-uno Threads 2 Hebras de nivel de usuario Planificación de ULT • Biblioteca de nivel de usuario Creación/destrucción de hebras Cambio/reemplazo de hebras Control de ejecución de hebras Mantención de estado de las hebras Intercambio de datos entre las hebras Planificación de ULT • Caso a) Hebra 1 espera por CPU Hebra 2 está en ejecución, y Proceso está en ejecución • Caso b) Hebra 1 espera por CPU Hebra 2 en ejecución solicita E/S, por lo que Proceso se bloquea en espera de evento • Caso c) Hebra 1 espera por CPU Hebra 2 está en ejecución (pero proceso no tiene CPU) Ocurre el evento, y proceso pasa a Listo • Caso d) Proceso se ejecuta, por lo que Ahora hebra 2 se bloquea, y Hebra 1 entra en ejecución Ventajas y desventajas de ULT • Ventajas Cambio de hebras no involucra cambio de contexto Manejo de hebras bajo control de aplicación No depende del S. O. Datos compartidos en el mismo espacio de datos del usuario h Más barato! • Desventajas Llamada al sistema bloquea todas las hebras No aprovecha el paralelismo en sistemas multiprocesadores o multi-core Hebras de nivel de sistema Ventajas y desventajas de KLT • Sistema operativo maneja procesos como un todo • Ventajas Mantiene información de cada proceso y sus hebras h • Planificación a nivel de procesos Una hebra de kernel por cada hebra de usuario (C) 2008 Mario Medina Llamada al sistema sólo bloquea una hebra Sistemas operativos de hoy usan KLT Windows 2000 / XP / Vista, Linux, Mac OS X S. O. planifica hebras de un mismo proceso en múltiples CPUs • Desventajas cambio de hebra involucra cambio de modo h Igual es más barato que cambio de contexto Crear hebra de usuario implica crear hebra de sistema h Más costoso Modelo uno-a-uno 3 Esquema combinado Esquema combinado • Costo de creación de hebras en KLT es alto • Aplicación usa hebras de nivel de usuario S. O. limitan número de hebras • Esquema combinado multiplexa ULT en varias KLT Desacopla hebras de usuario de hebras de sistema Esquema combinado h Provistas por biblioteca • S. O. planifica hebras de nivel de sistema Apto para sistemas multi-procesador / multi-core • Esquema implementado en IRIX, HPUX, Solaris 8 Windows: Process Explorer • Busca aprovechar las ventajas de ULT y KLT Aplicación es escrita al nivel de paralelismo lógico más conveniente Permite alta concurrencia Aplicación es ejecutada al nivel de paralelismo físico más conveniente h Reduce costos paralelismo del hardware h Aprovecha Windows: Process Explorer (C) 2008 Mario Medina 4