Un hilo de ejecución, en
sistemas operativos, es similar a un proceso en que ambos representan una
secuencia simple de instrucciones ejecutada en paralelo con otras secuencias.
Los hilos permiten dividir un programa en dos o más tareas que corren
simultáneamente, por medio de la multiprogramación. En realidad, este método
permite incrementar el rendimiento de un procesador de manera considerable. En
todos los sistemas de hoy en día los hilos son utilizados para simplificar la
estructura de un programa que lleva a cabo diferentes funciones. Todos los
hilos de un proceso comparten los recursos del proceso. Residen en el mismo
espacio de direcciones y tienen acceso a los mismos datos. Cuando un hilo
modifica un dato en la memoria, los otros hilos utilizan el resultado cuando
acceden al dato. Cada hilo tiene su propio estado, su propio contador, su
propia pila y su propia copia de los registros de la CPU. Los valores comunes
se guardan en el bloque de control de proceso (PCB), y los valores propios en
el bloque de control de hilo (TCB).
Un ejemplo de la utilización de hilos es tener un hilo atento a la
interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga
operación internamente. De esta manera el programa responde más ágilmente a la
interacción con el usuario.
Diferencias
entre hilos y procesos
Los hilos se distinguen de los tradicionales procesos en que los procesos
son generalmente independientes, llevan bastante información de estados, e
interactúan sólo a través de mecanismos de comunicación dados por el sistema.
Por otra parte, muchos hilos generalmente comparten otros recursos
directamente. En sistemas operativos que proveen facilidades para los hilos, es
más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de
un proceso a otro. Este fenómeno se debe a que los hilos comparten datos y
espacios de direcciones, mientras que los procesos al ser independientes no lo
hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el
dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado
por el procesador para realizar un cambio de modo (mode switch), en este caso
pasar del estado de Running al estado de Waiting o Bloqueado y colocar el nuevo
proceso en Running. En los hilos como pertenecen a un mismo proceso al realizar
un cambio de hilo este overhead es casi despreciable.
No hay comentarios.:
Publicar un comentario