Trabajo
Las aplicaciones informáticas pueden ser de muchos tipos, desde procesadores de texto hasta procesadores de transacciones (bases de datos), simuladores de cálculo intensivo, etc.
Las aplicaciones están formadas de uno o más programas. Los programas constan de código para la computadora donde se ejecutarán. El código es generalmente ejecutado de forma secuencial. Normalmente, un "programa hilado" (threaded program, programa construido mediante hilos) tiene el potencial de incrementar el rendimiento total de la aplicación en cuanto a productividad y tiempo de respuesta mediante ejecución de código asíncrono y paralelo.
La ejecución de código paralelo se realiza mediante la ejecución de dos o más partes de un programa en dos o más …ver más…
Los hilos son flujos de control independientes dentro de un mismo proceso que comparten datos globales (variables globales, ficheros, etc.), pero poseen una pila, variables locales y contador de programa, propios. Se les suele llamar "procesos de peso ligero" porque su contexto es menor que el contexto de un proceso. Por lo tanto, los cambios de contexto entre hilos son menos costosos que los cambios de contexto entre procesos. Además, los hilos son un modelo adecuado para explotar el paralelismo en un entorno multiprocesador de memoria compartida.
La gestión de procesos es uno de los aspectos claves en el diseño de un sistema operativo. De la optimización de su funcionamiento depende en gran medida la buena utilización del sistema y sus recursos.
La historia de los hilos
La noción de hilo, como flujo de control secuencial, se remonta al menos, al año 1965 [OSU96], con el sistema de tiempo compartido de Berkeley. Sólo que en aquel tiempo no fueron llamados hilos, sino procesos. Los procesos interactuaban a través de variables compartidas, semáforos, o mecanismos similares. Max Smith realizó un prototipo de implementación de hilos en Multics alrededor de 1970; usaba pilas múltiples en un proceso pesado simple para soportar compilaciones en background.
Sin