Hebras, s.o.

THREADS (HEBRAS)

El flujo de ejecución de los procesos esta formado por el conjunto ordenado de instrucciones máquina del programa que va ejecutando el proceso. Se denomina Thread a esta secuencia de ejecución. Íntimamente ligado al Thread está el estado del procesador, que va cambiando según avanza el Thread, el estado de ejecución (listo, bloqueado o en ejecución) y la pila.

En losprocesos clásicos, solamente existe un único thread de ejecución, por lo que les denominaremos monothread. La extensión que se plantea en esta sección consiste en dotar al procesador de varios thread. Se llamara proceso multithread a este tipo de proceso. El objetivo de disponer varios threads es conseguir concurrencia dentro del proceso, al poder ejecutar los mismos simultáneamente.

Una tarea (oproceso pesado) está formada ahora por una o más hebras. Una hebra sólo puede pertenecer a una tarea

Características

o Se comparten recursos. La compartición de la memoria permite a las hebras pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO

o La conmutación de contexto es más rápida gracias al extenso compartir de recursos

o No hay protecciónentre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso

Cada Thread tiene información que le son propias, informaciones que se refieren fundamentalmente al contexto de ejecución, como las siguientes:
o Estado del procesador
o Pila
o Estado del thread
o Prioridad de ejecución
o Bloque de control de thread.

Todos los threads de un mismoproceso comparten el mismo espacio de direcciones de memoria.

Gestión de los threads

Existen dos formas básicas de gestionar los threads: la UTL (User Level Threads) y la KLT (Kernel Level Threads).

o ULT. Los threads de nivel de usuario o threads de biblioteca los gestiona totalmente una biblioteca de threads, que ha de incluirse en el proceso como una capa software sobre la queejecutan los threads. El sistema operativo desconoce la existencia de estos threads, para él se trata de un proceso normal de un solo thread. Es la capa de software la que crea, planifica, activa y termina los distintos threads. Ejemplos de bibliotecas de hebras:

o POSIX Pthreads
o Hebras Win32
o Hebras Java

o KLT. Los threads de nivel de núcleo o threads desistema los gestiona el sistema operativo. Es el núcleo del sistema operativo el que crea, planifica, activa y termina los distintos threads. Ejemplos:

o Windows XP/2000
o Solaris
o Linux
o Tru64 UNIX
o Mac OS X

Señales en threads de sistema
En algunos sistemas operativos, el tratamiento de las señales no se realiza a nivel de proceso sino a nivelde thread, de acuerdo a las siguientes reglas:

o El sistema operativo mantiene una máscara de señales por thread de sistema.
o La acción asociada a una señal es compartida por todos los threads.
o Las señales síncronas producidas por la aparición de una excepción hardware síncrona son enviadas al thread que causó la excepción.
o Si la acción de la señal es terminar, setermina el proceso con todos sus threads.

Creación, ejecución y terminación de threads

Algunos threads son creados por el sistema operativo (caso de threads de sistema) o por la capa de gestión de threads (caso de threads de biblioteca) bajo petición del proceso mediante el correspondiente servicio de creación de thread. Por tanto, el main, de acuerdo del punto de vista de la programación, puedelanzar threads, que a su vez, pueden lanzar otros threads.

La terminación de un thread se realiza cuando el thread ejecuta el retorno de la función asociada o cuando llama al servicio terminar el thread.

Cuando termina el último thread del proceso termina el proceso. Además, cuando termina el thread primario termina el proceso, aunque otros threads vivos.

Estados de un thread

El…