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
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!!
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:
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
¡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!
Que malo es conocerse ;)
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 ;)
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?
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!
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
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
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