You are on page 1of 9

Hilos

Los hilos son similares a los procesos ya que ambos representan una secuencia simple
de instrucciones ejecutada en paralelo con otras secuencias. Los hilos son una forma de
dividir un programa en dos o ms tareas que corren simultneamente, compitiendo, en
algunos casos, por la CPU. La diferencia ms significativa entre los procesos y los hilos,
es que los primeros son tpicamente independientes, llevan bastante informacin de
estados, e interactan slo a travs de mecanismos de comunicacin dados por el
sistema. Por otra parte, los hilos generalmente comparten la memoria, es decir, acceden
a las mismas variables globales o dinmicas, por lo que no necesitan costosos
mecanismos de comunicacin para sincronizarse. Por ejemplo un hilo podra encarguese
de la interfaz grfica (iconos, botones, ventanas), mientras que otro hace una larga
operacin internamente. De esta manera el programa responde ms gilmente a la
interaccin con el usuario.

En sistemas operativos que proveen facilidades para los hilos, es ms rpido cambiar de
un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro.

Es posible que los hilos requieran de operaciones atmicas para impedir que los datos
comunes sean cambiados o ledos mientras estn siendo modificados. El descuido de esto
puede generar estancamiento.

La tabla 1 resume algunas diferencias entre procesos e hilos, y la figura 1 muestra una
representacin de los conceptos proceso e hilo. Ntese cmo en la figura 1 se puede
apreciar que los procesos son entidades independientes, mientras que los hilos son
entidades relacionadas por la seccin de datos en el interior del proceso que los contiene.

HILOS (threads)
Los hilos son un concepto relativamente nuevo de los SO. En este contexto, un proceso
recibe el nombre de proceso pesado, mientras que un hilo recibe el nombre de proceso
ligero. El trmino hilo se refiere sintctica y semnticamente a hilos de ejecucin.
2

El trmino multihilo hace referencia a la capacidad de un SO para mantener varios hilos


de ejecucin dentro del mismo proceso.

En un SO con procesos monohilo (un solo hilo de ejecucin por proceso), en el que no
existe el concepto de hilo, la representacin de un proceso incluye su BCP, un espacio de
direcciones del proceso, una pila de proceso y una pila ncleo.

En un SO con procesos multihilo, slo hay un BCP y un espacio de direcciones asociados


al proceso, sin embargo, ahora hay pilas separadas para cada hilo y bloques de control
para cada hilo.

Estructura de los Hilos


Un hilo (proceso ligero) es una unidad bsica de utilizacin de la CPU, y consiste en un
contador de programa, un juego de registros y un espacio de pila.
Los hilos dentro de una misma aplicacin comparten:

La seccin de cdigo.

La seccin de datos.

Los recursos del SO (archivos abiertos y seales).

Un proceso tradicional o pesado es igual a una tarea con un solo hilo.


Los hilos permiten la ejecucin 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 ncleo.

Estados de un Hilo
Los principales estados de un hilo son: ejecucin, preparado y bloqueado; y hay cuatro
operaciones bsicas relacionadas con el cambio de estado de los hilos:

Creacin: En general, cuando se crea un nuevo proceso se crea tambin un hilo


para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dndoles un
puntero de instruccin y algunos argumentos. Ese hilo se colocar en la cola de
preparados.
4

Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando


sus registros. As el procesador pasar a ejecutar otro hilo preparado.

Desbloqueo: Cuando se produce el suceso por el que un hilo se bloque pasa a la


cola de listos.

Terminacin: Cuando un hilo finaliza, se liberan su contexto y sus pilas.

Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al bloqueo de todo


el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de todos los hilos que lo
componen, an cuando el proceso est preparado.

Recursos compartidos y no compartidos

Los hilos permiten la ejecucin 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 ncleo.

Recursos compartidos entre los hilos


:

Cdigo (instrucciones).

Variables globales.

Ficheros y dispositivos abiertos.

Recursos no compartidos entre los hilos:

Contador del programa (cada hilo puede ejecutar una seccin distinta de cdigo).

Registros de CPU.

Pila para las variables locales de los procedimientos a las que se invoca despus
de crear un hilo.

Estado: distintos hilos pueden estar en ejecucin, listos o bloqueados esperando


un evento.
PROCESOS v/s HILOS

Semejanzas: Los hilos operan, en muchos sentidos, igual que los procesos.

Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o terminado.

Tambin comparten la CPU.

Slo hay un hilo activo (en ejecucin) en un instante dado.

Un hilo dentro de un proceso se ejecuta secuencialmente.

Cada hilo tiene su propia pila y contador de programa.

Pueden crear sus propios hilos hijos.

Diferencias: Los hilos, a diferencia de los procesos, no son independientes entre s.

Como todos los hilos pueden acceder a todas las direcciones de la tarea, un hilo
puede leer la pila de cualquier otro hilo o escribir sobre ella. Aunque pueda parecer
lo contrario la proteccin no es necesaria ya que el diseo de una tarea con
mltiples hilos tiene que ser un usuario nico.

Ventajas: de los hilos sobre los procesos.

Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que
en crear un nuevo proceso.

Se tarda mucho menos tiempo en terminar un hilo que un proceso.

Se tarda mucho menos tiempo en conmutar entre hilos de un mismo proceso que
entre procesos.

Los hilos hacen ms rpida la comunicacin entre procesos, ya que al compartir


memoria y recursos, se pueden comunicar entre s sin invocar el ncleo del SO.

Ejemplos de uso de los hilos:

Trabajo interactivo y en segundo plano: En un programa de hoja de clculo, un hilo podra


estar leyendo la entrada del usuario y otro podra estar ejecutando las rdenes y
actualizando la informacin.

Procesamiento asncrono: Se podra implementar, con el fin de protegerse de cortes de


energa, un hilo que se encargar de salvaguardar el buffer de un procesador de textos
una vez por minuto.

Estructuracin modular de los programas: Los programas que realizan una variedad de
actividades se pueden disear e implementar mediante hilos.

Fig Ejemplo multihilo en un monoprocesador

Fuente: http://www.chuidiang.com/clinux/procesos/procesoshilos.php#procesoshilos
Fuente: http://www.infor.uva.es/~fjgonzalez/apuntes/Tema4.pdf
Fuente: http://williamstallings.com/

You might also like