Citation preview

VENTAJAS DE LOS HILOS La principal ventaja de los hilos es el rendimiento. Normalmente el rendimiento es una cantidad percibida y no dada. Unas aplicaciones se beneficiarán de los hilos mientras que otras no. Como se suele decir "el número de kilómetros puede variar". Existen un gran número de ventajas para emplear los hilos de usuario así como los hilos del núcleo :

1. 2.

Ejecución paralela : Los hilos de nivel kernel se pueden ejecutar realmente en paralelo en máquinas SMP (Symmetric Multiprocessors). Además el mismo código binario es válido tanto para una máquina de un procesador como una máquina multiprocesador. Ejecución de código asíncrono : Ya que existen múltiples hilos de ejecución en un programa construido con hilos, es posible que otro hilo del mismo proceso sea planificado para ejecutar en el caso de que el hilo de ejecución actual se bloquee. Esto incrementa la probabilidad de que la aplicación asociada se ejecute mucho más rápido. Normalmente existen algunas cosas a tener en cuenta :

3. 1. 2. 3.

En el modelo de hilos de usuario, algunos bloqueos bloquearán todo el proceso y se planificará un proceso diferente. En el modelo de hilos de núcleo, es posible que un hilo de otro proceso sea planificado cuando sucede un bloqueo del hilo actual. En ambos modelos, un hilo puede bloquearse y pueden no existir otros hilos listos para ejecutarse en el proceso, por cualquier tipo de razones.

Así pues, el incremento del rendimiento no siempre está garantizado, aunque al menos, el uso de los hilos puede incrementar la probabilidad de un mejor rendimiento.

1.

2.

3.

Recursos compartidos : Los hilos comparten la mayoría de los recursos en un proceso. Comparten el acceso a los ficheros, memoria compartida, y el espacio de direcciones virtual. El empleo de los hilos permite a los programadores conservar los recursos del sistema. El rendimiento puede beneficiarse también porque los recursos compartidos entre hilos necesitan menos gestión que los recursos compartidos entre procesos. Velocidad de las operaciones con hilos : Los hilos tienen un menor contexto que los procesos, así pues, las operaciones con hilos son generalmente más rápidas que las operaciones similares con procesos. En especial, la creación, finalización y cambio de contexto de un hilo, son operaciones más rápidas con los hilos que con los procesos. Como ejemplo, en los procesadores de propósito general (SPARC, MIPS, ALPHA, HP-PA, x86) el cambio de contexto entre hilos de un mismo proceso lleva del orden de 50us. mientras que el cambio de contexto entre hilos de distintos procesos lleva del orden de 100us. Estos tiempos son muy inferiores al tiempo de cambio de contexto completo entre procesos. Así en Solaris la creación de un proceso es unas 30 veces más lento que la creación de un hilo, las variables de sincronización son unas 10 veces más lentas y el cambio de contexto unas 5 veces más lento. Tiempo de respuesta : Si es posible separar operaciones en un programa, los hilos se pueden emplear para mejorar los tiempos de respuesta de la aplicación. Por ejemplo, supongamos que estamos usando una utilidad de correo electrónico. En una versión de un solo hilo, mientras almacenamos un mensaje podemos apreciar algún retraso antes de que la interfaz de usuario sea refrescada. Esto es porque el programa está primero haciendo una operación de E/S para almacenar el mensaje y después refresca la pantalla. Estas operaciones las realiza de forma secuencial. Normalmente, si esta aplicación fuese una versión programada con varios hilos, un hilo podría gestionar la E/S mientras otro hilo

4.

5. 6.

gestiona la interfaz de usuario. Estas operaciones pueden funcionar en paralelo, con la consiguiente ganancia en el tiempo de respuesta. Programación natural : Esta ventaja no está relacionada con el rendimiento, pero es importante. En algunas aplicaciones, el diseñador puede necesitar instrucciones del tipo 'goto' y otros métodos para superar las limitaciones de la programación secuencial tradicional. Sin embargo, con los hilos, el programador no está limitado a emplear un modelo de ejecución secuencial. Así, las limitaciones de la programación secuencial pueden solucionarse de forma más intuitiva, menos compleja y más natural, incluso empleando otros modelos de programación, como la programación concurrente. Además muchos problemas son más fáciles de plantear y programar con un modelo de hilos debido a su estructura concurrente. Existe un estándar (POSIX 1003.1c) lo que permite hacer a las aplicaciones portables entre distintas plataformas. El mismo código fuente es válido para distintas plataformas. Objetos distribuidos : Con la aparición del estándar de objetos distribuidos CORBA, los hilos toman un papel especial e importante. Los objetos distribuidos tienen una estructura multihilo inherentemente. Cada vez que se pide que un objeto realice una acción, el objeto ejecuta la acción mediante un hilo independiente, de forma que el objeto puede haber más de un hilo al mismo tiempo. Además los servidores de objetos se pueden construir con hilos de forma más efectiva y con un mayor rendimiento.