Con la presentación del Pentium 4 de 3,06 GHz, Intel hizo más que aumentar la velocidad de su procesador insignia, puso al alcance del público en general la capacidad que llamó Hyperthreading, algo que solamente estaba disponible en los procesadores Xeon, especiales para servidores.
Hyperthreading es el nombre de Intel para su implementación de Simultaneous Multi-Threading (SMT) o Múltiples hilos de ejecución simultáneos. Como la traducción no nos ayuda mucho a entenderlo, veámoslo con más detalle.
Todos sabemos lo que es un programa, al menos intuitivamente. Podríamos decir que es una secuencia de instrucciones que, al ejecutarse, realizan un servicio. Los programas están almacenados en diskettes (¡qué tiempos aquellos!), CD-ROM, DVD-ROM, disco duro u otra forma de almacenamiento masivo. Cuando necesitamos un programa, le indicamos al sistema operativo que lo ejecute, cargándolo en memoria RAM y alimentando el procesador con sus instrucciones. En este momento, esa secuencia de instrucciones, más la memoria RAM asignada, así como otros recursos que necesita para su funcionamiento, se llama proceso.
En los primeros sistemas operativos esa era, más o menos, toda la historia que valía la pena contar. Pero las computadoras son equipos costosos, siendo inaceptable que solamente sean usadas por una persona a la vez. Así que se crearon sistemas operativos multi-usuarios y multitareas. Lo de multi-usuario permitía que varias personas utilizaran la computadora al mismo tiempo. Lo de multitarea hacía que la computadora ejecutara varios procesos al mismo tiempo.
¿Cómo es posible que una computadora con un solo procesador pueda ejecutar varias tareas y atender a varios usuarios al mismo tiempo? La respuesta es sencilla: no lo hace. Solamente parece que lo hace. El truco consiste en ejecutar un proceso un período corto de tiempo, cambiar a otro proceso y ejecutar otro poquito y así con todos los procesos, repitiendo este ciclo indefinidamente. Como la computadora es muy rápida, se produce la ilusión de que corre los procesos simultáneamente. Si necesitamos más velocidad de cómputo, una manera de conseguirlo es añadir más procesadores. En este sistema multiprocesador, los procesos sí se ejecutan simultáneamente.
Un proceso puede crear otros procesos para repartirse trabajo. Por ejemplo, si estamos utilizando un procesador de palabras y queremos imprimir un documento mientras estamos editando otro, el programa crea un proceso de impresión. En este caso, la creación de otro proceso ha servido también para mejorar el tiempo de respuesta de la computadora, pues no tenemos que esperar a que termine la impresión antes de seguir trabajando en otro documento.
Lo anterior funciona bien si el número de procesos es relativamente bajo. Cuando son muchos, el tiempo que se toma para crearlos y los recursos que necesitan pueden volverse un problema. En otras palabras, la creación de procesos es una operación costosa. Esta vez la solución se llama thread o hilo de ejecución.
Un hilo de ejecución o thread es como un proceso puesto a dieta porque no tiene recursos propios sino que los comparte con los otros threads. Esto supone menos trabajo para el sistema operativo cuando los está creando y también cuando los está ejecutando. Sus ventajas son tan atractivas que casi todos los sistemas operativos contemporáneos tienen capacidad de multi-threading.
Última actualización: 21/01/2003