1. PRESENTACION.

  1. OBJETIVOS DEL TRABAJO.
  2. APORTACIONES DEL TRABAJO.
  3. POSIBLES APLICACIONES.

Las necesidades de incrementar la velocidad de computación para resolver problemas cada vez más complicados y con mayores necesidades de cálculo han impulsado el desarrollo de arquitecturas hardware más potentes, basadas en sistemas multiprocesador. Además, el desarrollo progresivo de las redes informáticas ha favorecido los intentos por aprovechar los recursos distribuidos, así como distribuir la información a distintas máquinas de la red, intentando aprovechar las posibilidades que ofrece la computación distribuida. Por ello, modelos como el cliente/servidor se han hecho muy populares en entornos distribuidos.

En este ambiente, los hilos han aparecido como una buena herramienta en la que apoyarse para aprovechar y acelerar aún más los sistemas multiprocesador (memoria compartida) y multicomputador (computadores distribuidos). Las características de los hilos favorecen el aumento del rendimiento de los procesadores, disminuyendo la sobrecarga debida al cambio de contexto entre las tareas que ejecuta un procesador. Además son aplicables a una gran diversidad de problemas, y se integran perfectamente con el hardware paralelo, aumentando su rendimiento.

Aunque los hilos o threads existen desde hace mucho tiempo, parece que es a mediados de los años ochenta cuando comienzan a resurgir. Pero es ahora, en los noventa, cuando abarcan la inmensa mayoría de los sistemas. Por ello, se han desarrollado desde plataformas hardware exclusivamente diseñadas para la gestión de múltiples contextos o hilos, pasando por sistemas operativos con gestión de múltiples flujos de control dentro de un mismo proceso, hasta el desarrollo de paquetes de usuario que faciliten la programación en entornos multihilo.

Este trabajo está basado esencialmente en multitud de artículos publicados a lo largo de los últimos cinco o seis años, aunque existen referencias anteriores. La mayoría de estos artículos están disponibles en la red de forma pública. A lo largo del trabajo se hace referencia a muchos de estos artículos así como a distintos libros utilizados como fuente. Al final del trabajo se presenta un resumen comentado de la bibliografía empleada así como muchas otras referencias disponibles.

OBJETIVOS DEL TRABAJO.

En este trabajo se pretende dar una visión de los hilos y el estado actual de este nuevo modelo de programación. Se pretende dar una idea de los conceptos básicos, así como de la estructura hardware y software en la que se apoya el modelo.

Los objetivos básicos del trabajo son :

APORTACIONES DEL TRABAJO.

El trabajo realizado pretende servir de compendio y presentación del "estado del arte" en el mundo de los hilos, y ha consistido en las siguiente acciones :

POSIBLES APLICACIONES.

Este trabajo puede servir como referencia base para los programadores que deseen introducirse en el modelo de programación de hilos. Pueden encontrar una explicación de los conceptos básicos del nuevo modelo. También puede servir como guía para la enseñanza de este nuevo modelo. Además se pueden encontrar referencias sobre temas específicos, y puede servir para mostrar las ventajas e inconvenientes del modelo de hilos.

Por otro lado, las aplicaciones de los hilos son múltiples y se describen más detalladamente en un apartado posterior. Sin embargo se puede decir que los hilos son aplicables sobre todo en aplicaciones en las que el rendimiento es crítico, ya que permiten explotar de una forma más efectiva las nuevas arquitecturas multiprocesador. Así aplicaciones como los servidores (de archivos, de páginas web, de bases de datos, etc.) son las principales beneficiadas, al igual que los interfaces de usuario, consiguiendo que el rendimiento de dichas aplicaciones se incremente de forma notable, disminuyendo también los tiempos de respuesta de las aplicaciones.

El modelo de hilos, permite abstraer todas las dependencias del sistema particular, ya que es un modelo abstracto, por ello es muy útil para realizar aplicaciones inherentemente paralelas, olvidándonos del hardware final y haciendo la aplicación independiente del mismo.

Los hilos también son aplicables en sistemas de tiempo real, al poder planificar distintas políticas y prioridades para los distintos hilos de una aplicación.

Además, el modelo de programación de hilos está siendo adoptado por los nuevos lenguajes de programación que intentan dar soporte directo a los hilos. Este es el caso de uno de los lenguajes de programación más recientes, Java, que permite construir aplicaciones multihilo, y aunque no sigue el estándar POSIX, su semántica es parecida, no así su sintaxis.