Oh! que tiempos aquellos cuando comprabas un procesador y se lo andabas presumiendo a tus cuates (el procesador): “mira mi procesador, es Pentium III a poco más de 700 MHz”, a las pocas semanas salía Pentium 4 y tu frustración no podía ser mayor. Con cada nueva versión más y más megahertz o incluso gigahertz de frecuencia de reloj, y asi hasta que llegó el momento que físicamente no se pudo mas.
Seguramente habrás notado que de un tiempo para acá, los procesadores no han aumentado sus frecuencias mucho que digamos, lo más que recuerdo es un procesador Core 2 Quad a 3.06GHz; sin embargo aumentar el número de núcleos parecer ser la tendencia, ya que al aumentar la velocidad del reloj se genera más calor y hay mas consumo de energía (lo cual preocupa a los usuarios móviles). Esto significa menos horas chateando sin requerir de un cargador.
Iniciamos con 2 nucleos, actualmente el estándar es 4. Para los mas exigentes, léase gamers existe una cosa brutal llamada Core i7 o bien AMD Phenom del lado de la competencia. A lo que voy es que actualmente los limites físicos han impedido hacer procesadores más rápidos, y en su lugar se han ido agregando más núcleos.
El problema aquí es que los sistemas operativos actuales no aprovechan del todo los núcleos de los procesadores, por la misma razón expuesta en el articulo anterior: el computo paralelo. Si eres programador sabrás que programar una aplicación multiproceso, multitarea o multithreaded como dicen los gringos, es una tarea no muy fácil que digamos. Esto ha generado a lo largo de la historia grandes problemas que han sido motivo de estudio en asignaturas de sistemas operativos por ejemplo, si estudiaste sistemas recordarás los interbloqueos entre procesos o deadlocks, condiciones de carrera y otros dolores de cabeza al respecto.
Para los cuates, una aplicación multitarea debe dividirse en varios threads a bajo nivel. Un thread básicamente es una porción de código que se ejecuta de manera independiente al resto del programa. Lo difícil es cuando 2+ threads intentan usar un recurso al mismo tiempo y bueno… esto parece un libro de Tanenbaum, mejor hablemos del leopardo.
Snow Leopard presenta una nueva tecnología (¿cuantas veces he escrito eso?) que intenta exprimir hasta la ultima gota de procesamiento de tu pequeño juguete, y es llamada Grand Central Dispatch. Su objetivo es liberar al programador del rollo necesario para gestionar los threads de sus aplicaciones, de manera que en el código solamente indique cuales líneas van a ejecutarse dentro de un thread y listo, el felino hace el resto.
Blah, blah, blah. Pero a mi como usuario final ¿para que me sirve eso? Como mencionaba en el articulo anterior, si una aplicación no está segmentada en threads, aunque tengas un procesador de 8 nucleos, tu programa correrá de manera secuencial casi igual que si no tuviera threads. Al segmentar el código, cada nucleo puede procesar una parte distinta del código logrando mayor rapidez y eficiencia de ejecución.
De esta forma, si todas las aplicaciones de Snow Leopard van a ser migradas a Grand Central Dispatch, teóricamente el desempeño debe ser brutal, pues GCD va un paso más alla en la gestión de threads. Normalmente si tu aplicación está segmentada digamos en 15 threads, todos están ocupando espacio en memoria, pero en el caso de GCD libera los recursos de los que no se están ejecutando, es decir, tu Mac no se alenta por procesos ociosos.
Grand Central Dispatch es una tecnología única en su tipo, que permitirá un desempeño tremendo del sistema operativo, haciendo que las aplicaciones sean sumamente responsivas y rápidas. Otra idea genial por parte de los de Cupertino.
Bonus: Con este articulo termina el análisis de Snow Leopard en su semana de lanzamiento. Como ves es una actualización que “por fuera” no notarás grandes cambios, pero por dentro ya conoces cuales son los cambios que se vienen. Es cierto que el proceso de migración de aplicaciones a este top 3 de tecnologías llevará algo de tiempo, pero solo nos queda esperar a que los desarrolladores se pongan las pilas. Imagina cualquier aplicación corriendo en modo 64 bits, con graficos y cálculos apoyados por OpenCL y segmentado en N-threads gestionados por Grand Central Dispatch…… Excitante, sencillamente, excitante…
0 comentarios:
Publicar un comentario