10 Hilos
10 Hilos
10 Hilos
13.1.1. 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 los 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 Runnig 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. Sistemas operativos
como Windows NT, OS/2 y Linux (2.5 o superiores) han dicho tener hilos "baratos", y procesos
"costosos" mientras que en otros sistemas no hay una gran diferencia.
13.1.3. Ventajas de los hilos frente a los procesos. Si bien los hilos son creados a partir de la
creación de un proceso, podemos decir que un proceso es un hilo de ejecución, conocido como
monohilo. Pero las ventajas de los hilos se dan cuando hablamos de Multihilos, un procesos tiene
múltiples hilos de ejecución los cuales realizan actividades distintas, que pueden o no ser
cooperativas entre sí. Los beneficios de los hilos se derivan de las implicaciones de rendimiento y
se pueden resumir en los siguientes puntos: · 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 su cuando se elimina un proceso se debe eliminar el PCB 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 comunicación entre programas en
ejecución. En la mayoría de los sistemas en la comunicación entre procesos debe intervenir el
núcleo para ofrecer protección de los recursos y realizar la comunicación misma. En cambio, entre
hilos pueden comunicarse entre sí sin la invocación al núcleo. Por lo tanto, si hay una aplicación
que debe implementarse como un conjunto de unidades de ejecución relacionadas, es más
eficiente hacerlo con una colección de hilos que con una colección de procesos separados .