Hebras en sistemas operativos

Anuncio
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
[email protected]
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
Descargar