Seguro que en este momento, se encuentra usted realizando varias tareas simultáneamente en su ordenador. Por ejemplo, tiene abierto su cliente de correo, un procesador de textos y el navegador de Internet. Piénselo: mientras escribe un correo, edita un documento y navega por la red, y todo al mismo tiempo. Imagine que se aburre y decide abrir un juego. Está utilizando cuatro programas a la vez. ¿A la vez?
Todos utilizamos muchas aplicaciones al mismo tiempo cuando usamos el ordenador. Sin embargo, ésto es relativamente reciente: hasta la aparición de los sistemas modernos los ordenadores nunca fueron antes capaces de ejecutar varios programas al mismo tiempo… ésta característica, surgida a finales de los 70, se conoce como multitarea, y es la capacidad que tienen las máquinas de hacer muchas cosas a la vez, o mejor dicho, de simular que hacen muchas cosas a la vez.
Así que su ordenador le engaña: puede parecerle que los programas se ejecutan todos simultáneamente, pero un ordenador sigue siendo una máquina secuencial: esto quiere decir que sólo puede ejecutar las instrucciones de una en una. Aunque como lo hace muy muy rápido nos da la impresión de que lo hace todo a la vez… y si lo piensa, verá que la idea es muy sencilla: imagine que ordena a su computador que ejecute The Gimp y Firefox, así de seguido… Su sistema operativo (Linux, Windows o lo que use) se encargará de ir «intercalando» instrucciones de uno y de otro, de tal modo que parezca que se están ejecutando a la vez.
Y ahora llega lo más interesante, que es el porqué de todo esto: el éxito de estas técnicas se basa en lo que llamamos escalas de tiempo: lo que para nosotros es un instante, para un procesador funcionando a 1 GHz puede ser una eternidad. Así, vamos a suponer un ordenador, donde:
- una instrucción tarda en ejecutarse 1 microsegundo (0,000001 segundos)
- una lectura o una escritura en un disco duro tarda 1 milisegundo (0,001 segundos)
- un intervalo entre dos pulsaciones de tecla dura 0,5 segundos
Son datos normales y corrientes de cualquier ordenador anticuado. El tiempo de referencia que tomamos es el tiempo que tarda en ejecutarse una instrucción: para nosotros ese tiempo apenas es inteligible, no podemos sentir su paso, ya que nosotros pensamos en el tiempo en unidades mayores, más acordes a nuestros parámetros biológicos.
De hecho, pensamos en segundos. Así que vamos a considerar que una intrucción tarda 1 segundo en ejecutarse (es decir, lo mismo, pero en otra escala de tiempos). Entonces tendríamos que, en nuestro computador «humanizado»:
- una instrucción que se ejecuta dura 1 segundo
- una lectura o una escritura en un disco duro tarda ¡17 minutos!
- un intervalo entre dos pulsaciones de tecla dura ¡¡6 días!!
¡6 días! Y eso que pensamos que tecleamos tremendamente rápido :-P ¿se imaginan al ordenador? Cada seis días le llegaría una carta «Han pulsado la S»… podría enviar la respuesta, llamar a la pantalla tranquilamente para que mostrara una S, escribirla en la memoria, incluso guardarla en el disco duro… y aún así le sobrarían varios días. Podría dedicar todo ese tiempo para ejecutar el Firefox, el buscaminas y todos esos programas que teníamos trabajando…
En las diferentes escalas temporales de los humanos y los ordenadores se encuentra la razón del éxito del llamado tiempo compartido (varios usuarios utilizando el mismo equipo) y de la multitarea (varias aplicaciones sobre el mismo ordenador). Cómo se organice nuestro procesador, cómodamente sentado en su despacho, para atender a tantas peticiones es otra historia, y esa historia no es nada sencilla (puedo asegurárselo… :-P)