Procesos ligeros: hilos y hebras Un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.
1. Procesos ligeros: hilos y hebras Un hilo de ejecucin, hebra
o subproceso es la unidad de procesamiento ms pequea que puede ser
planificada por un sistema operativo.
2. La creacin de un nuevo hilo es una caracterstica que permite
a una aplicacin realizar varias tareas a la vez (concurrentemente).
Los distintos hilos de ejecucin comparten una serie de recursos
tales como el espacio de memoria, los archivos abiertos, situacin
de autenticacin, etc. Esta tcnica permite simplificar el diseo de
una aplicacin que debe llevar a cabo distintas funciones
simultneamente.
3. Los hilos de ejecucin que comparten los mismos recursos,
sumados a estos recursos, son en conjunto conocidos como un
proceso. El hecho de que los hilos de ejecucin de un mismo proceso
compartan los recursos hace que cualquiera de estos hilos pueda
modificar stos. Cuando un hilo modifica un dato en la memoria, los
otros hilos acceden a ese dato modificado inmediatamente.
4. Ejemplo Un ejemplo de la utilizacin de hilos es tener un
hilo atento a la interfaz grfica (iconos, botones, ventanas),
mientras otro hilo hace una larga operacin internamente. De esta
manera el programa responde de manera ms gil a la interaccin con el
usuario. Tambin pueden ser utilizados por una aplicacin servidora
para dar servicio a mltiples clientes.
5. Estados de un hilo Los principales estados de los hilos son:
Ejecucin, Listo y Bloqueado. No tiene sentido asociar estados de
suspensin de hilos ya que es un concepto de proceso. En todo caso,
si un proceso est expulsado de la memoria principal (RAM), todos
sus hilos debern estarlo ya que todos comparten el espacio de
direcciones del proceso.
6. Cambio de estados Creacin: Cuando se crea un proceso se crea
un hilo para ese proceso. Luego, este hilo puede crear otros hilos
dentro del mismo proceso, proporcionando un puntero de instruccin y
los argumentos del nuevo hilo. El hilo tendr su propio contexto y
su propio espacio de la columna, y pasar al final de los Listos.
Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea
(salvando sus registros de usuario, contador de programa y punteros
de pila). Ahora el procesador podr pasar a ejecutar otro hilo que
est en la final de los Listos mientras el anterior permanece
bloqueado. Desbloqueo: Cuando el suceso por el que el hilo se
bloque se produce, el mismo pasa a la final de los Listos.
Terminacin: Cuando un hilo finaliza se liberan tanto su contexto
como sus columnas.
7. Ventajas de los hilos contra procesos Se tarda mucho menos
tiempo en crear un hilo nuevo en un proceso existente que en crear
un proceso. Algunas investigaciones llevan al resultado que esto es
as en un factor de 10. Se tarda mucho menos en terminar un hilo que
un proceso, ya que cuando se elimina un proceso se debe eliminar el
BCP1 del mismo, mientras que un hilo se elimina su contexto y pila.
Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo
proceso Los hilos aumentan la eficiencia de la comunicacin entre
programas en ejecucin. En la mayora de los sistemas en la
comunicacin entre procesos debe intervenir el ncleo para ofrecer
proteccin de los recursos y realizar la comunicacin misma. En
cambio, entre hilos pueden comunicarse entre s sin la invocacin al
ncleo. Por lo tanto, si hay una aplicacin que debe implementarse
como un conjunto de unidades de ejecucin relacionadas, es ms
eficiente hacerlo con una coleccin de hilos que con una coleccin de
procesos separados.