martes, marzo 14, 2006

Secuencialidad simultánea

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)

9 Comentarios:

A las 11:42 p. m., Blogger Misslucifer escribió... (¡Gracias, Blogger Misslucifer!)

Entiendo. Entonces los hombres, ¿también sois máquinas secuenciales o hay otra explicación por la cual no podéis hacer más de una cosa a la vez? :P

 
A las 9:50 a. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

¡Lo sabía! Jajaja lo siento mucho, pero ahí me adelanté a tus pensamientos :P

Estuve por añadir como conclusión:
"Ésto nos lleva a que las mujeres son las únicas máquinas verdaderamente paralelas que existen"... aunque entonces habría salido alguno diciendo que hay ordenadores con varios procesadores, ignorando que, por muchos procesadores que haya, cada procesador sigue ejecutando las instrucciones de una en una :P (me tomo la venganza por anticipado)

¡Saludos!

 
A las 10:02 a. m., Blogger Misslucifer escribió... (¡Gracias, Blogger Misslucifer!)

Que malo es conocerse ;)

 
A las 11:57 a. m., Anonymous Anónimo escribió... (¡Gracias, Anonymous Anónimo!)

Pues no sé los demás, pero siempre me he considerado monotarea (mono: de mono, tarea: de tarea). La multitarea mejor dejarsela a las maquinas y a las mujeres, perdon, corrijo: a algunas maquinas y a las mujeres.

Pd: Muy didáctico ;)

 
A las 1:31 p. m., Blogger Ñita escribió... (¡Gracias, Blogger Ñita!)

Muy interesante!!!
Ayer mi alumno de 14 años me preguntó lo que era Linux, y gracias a tu otro post pude explicarselo mejor. Gracias.
Aun asi, yo tengo una pregunta sobre esto: Como decide el procesador que instruccion tiene que atender en cada momento, para que todos los programas que se están ejecutando tengan "su oportunidad de progresar en la vida"? xD
Es decir, va rotando entre los programas que tiene abiertos..?
Y tranquilos: los chicos tambien sois multitarea. Normalmente estais respirando y haciendo la digestion al mismo tiempo que hablais :P Alguna parte del cerebro tendra que controlar eso, no?

 
A las 2:10 p. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Yo me considero multitarea, pero a veces lo hago todo tan mal que acabo decidiéndome por hacer las cosas de una en una :-P

Ñita: me alegro muchísimo de resultar útil y de divulgar "la buena nueva" de Linux jejeje...

Por otro lado, te diré que tu duda es muy razonable e interesantísima; tanto que voy a dedicarle otro post :-)

¡Saludos y muchas gracias a todos!

 
A las 6:41 p. m., Blogger Patxi escribió... (¡Gracias, Blogger Patxi!)

Me ha gustado mucho el post y el cambio de escala temporal.

Ahora sólo falta convencer a todos mis jefes de que, si me quieren multitarea, lo mejor es que me den inputs equiespaciados cada 6 días.

Saludos,

Patxi

 
A las 11:11 p. m., Anonymous Anónimo escribió... (¡Gracias, Anonymous Anónimo!)

Hoy en dia los ordenadores ejecutan 4, 5, 6 o más instrucciones al mismo tiempo, aunque eso sí, no dejan de permanecer al mismo programa, lo que llamamos procesamiento segmentado. Lo que dices de procesamiento paralelo, ejecutas las instrucciones de una en una en cada CPU, pero varias a la vez, tantas como procesadores tengas, lo que te permite ejecutar varios programas a la vez, o varios threads.
Aunque los ordenadores con procesamiento paralelo no son de uso domestico comun por ahora, no dejan de existir, y aun me dejo los superescalares, los clusters (varios ordenadores trabajando conjuntamente), etc. Aunque los dual core de AMD ya hace algun tiempo que estan en el mercado, y si no han salido ya les faltara poco a los dual core de Intel.
Eso se merece otro artículo tuyo creo :P

 
A las 7:48 p. m., Blogger Manu escribió... (¡Gracias, Blogger Manu!)

Pues la verdad es que ya e gustaría para muchas cosas tener un cerebro como un ordenador, porque me resulta a veces muy difícil hacer 2 cosas bien y con precision. Saludos,

Manuel

 

Recuerda que nos hemos mudado a nosololinux.com

<< Home