Un hilo de ejecución, en sistemas operativos, es una característica que
permite a una aplicación realizar varias tareas concurrentemente. Los
distintos hilos de ejecución comparten una serie de recursos tales como
el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una
aplicación que debe llevar a cabo distintas funciones simultáneamente.
Los hilos de ejecución que comparten los mismos recursos, sumados a
estos recursos, son en conjunto conocidos como un proceso. El hecho de
que los hilos de ejecución 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.Lo que es propio de cada hilo es el contador
de programa, la pila de ejecución y el estado de la CPU (incluyendo el
valor de los registros).El proceso sigue en ejecución mientras al menos
uno de sus hilos de ejecución siga activo. Cuando el proceso finaliza,
todos sus hilos de ejecución también han terminado. Asimismo en el
momento en el que todos los hilos de ejecución finalizan, el proceso no
existe más y todos sus recursos son liberados.
Funcionalidad de los hilos
.Al igual que los procesos, los hilos
poseen un estado de ejecución y pueden sincronizarse entre ellos para
evitar problemas de compartimiento de recursos. Generalmente, cada hilo
tiene una tarea especifica y determinada, como forma de aumentar la
eficiencia del uso del procesador.
Estados de un hilo.
Los principales estados de los hilos son:
Ejecución, Listo y Bloqueado. No tiene sentido asociar estados de
suspensión 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
deberán estarlo ya que todos comparten el espacio de direcciones del
proceso.
Cambio de estados.Creación:
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 instrucción y los argumentos
del nuevo hilo. El hilo tendrá su propio contexto y su propio espacio
de pila, y pasara a la cola de 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 cola de Listos mientras
el anterior permanece bloqueado.
• Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa a la cola de Listos.
• Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus pilas.
No hay comentarios:
Publicar un comentario