¿El fin de los sistemas operativos? Yo creo que no.

Alf de faq-mac me ha pasado un enlace a un artículo del polemista profesional John C. Dvorak, titulado Vista, ¿callejón sin salida? En ese artículo, Dvorak explora la posibilidad de que Microsoft se quede sin ideas para seguir desarrollando Windows, y de paso tira la puya de que Apple se quedará sin originales que copiar (una Dvorakada típica). Aunque pongo el enlace al final, recordad que Dvorak genera publicidad para sí mismo con este tipo de maniobras, así que haced lo que queráis 😉

Sin embargo, no deja de ser un tema interesante: los sistemas operativos actuales están basados en la existencia de una CPU anfitriona, y de varios núcleos de computación idénticos (múltiples núcleos). La existencia de posibles unidades especializadas de ejecución, como el caso de las unidades de proceso gráfico (GPUs), no queda contemplado como uso común, y depende del uso que de ellas haga cada aplicación concreta.

Debido a la imposibilidad de aumentar indefinidamente la velocidad de reloj de de los chips, puesto que la disminución de su tamaño implica una mayor densidad, y mayores problemas de disipación, la idea es utilizar muchos más transistores, con mucha menos energía desperdiciada, como CPUs simultáneas. Eso implica que los próximos ordenadores utilizarán 8, 16, 32 o más núcleos para realizar tareas, y que la utilización efectiva de esos núcleos será lo que diferencie el rendimiento de unos sistemas operativos frente a otros.

En el caso de microprocesadores tradicionales, como las actuales encarnaciones de los AMD Athlon y Opteron, o de los Intel Core 2, todas los núcleos son idénticos. Sin embargo, en el caso de microprocesadores como Cell, o la prometida próxima generación de AMD Fusion, existirán núcleos de propósito específico que se integrarán en el mismo chip. Los sistemas operativos tendrán que aprender cómo rentabilizar esas unidades de ejecución: ¿se reservan para esas utilidades específicas, o se “recompilan” las aplicaciones pensadas para un tipo de unidad de forma que puedan utilizar otra unidad

Ya existen ejemplos de sistemas operativos muy paralelizados, como era el caso de BeOS: las primeras BeBox (un juego de palabras entre el Jazz y el concepto de caja con BeOS) tenían dos microprocesadores PowerPC 603, y desde el primer momento del arranque se utilizaban los dos procesadores simultáneamente —por ejemplo, había una representación 3D girando en pantalla, calculada por uno de los microprocesadores, mientras el segundo se encargaba del auténtico arranque—. Sin embargo los procesadores debían ser siempre del mismo tipo, y no se contemplaban unidades de ejecución de tipo diferente (GPUs, unidades tipo Cell).

Mac OS X también es pionero respecto a eso: en primer lugar, Mac OS X 10.2 (Jaguar) fue el primer sistema operativo de gran difusión que era capaz de descargar cálculos en la unidad de proceso gráfico, y además era capaz de utilizar la memoria de la tarjeta como “memoria virtual de gráficos”. Eso no ha hecho más que mejorar con Panther y Tiger.

De otra parte, Tiger introdujo un sistema de arranque asíncrono (no secuencial), de modo que no se produce una espera para que termine el inicio de cada módulo en un único procesador, sino que los procesos se van lanzando en cuanto se puede, y el sistema progresa mientras cada subsistema individual arranca, utilizando los recursos disponibles en cualquier CPU. Eso significa que equipos con dos o más núcleos consiguen disminuir el tiempo de arranque. Por supuesto, eso sólo es posible porque el primer programa arrancado, el núcleo, sabe cómo asignar procesos a diferentes CPUs según las diferentes cargas. Ese sistema de arranque (launchd) es de código abierto, y disponible para cualquier otro sistema operativo que quiera utilizarlo, aunque los de tipo Unix lo tienen más sencillo.

Aún más, Apple tiene experiencia en la optimización de código para utilizar unidades de propósito específico, como Altivec, aislando al programador de la complejidad. Una aplicación que utilice el conjunto de funciones Accelerate, CoreAudio, CoreImage o CoreVideo sabe que va a utilizar la versión más rápida de esas funciones. ¿Tienes muchas CPUs? Se reparte la tarea entre ellas. ¿Tienes Altivec o SSE3? Pues aceleramos las multiplicaciones con ellos. ¿Tienes una buena tarjeta gráfica? Realizaremos cálculos de superposición con ellas. Si hubiera que adaptar Mac OS X para utilizar Fusion, o incluso Cell, el núcleo del sistema seguiría utilizando las unidades más parecidas a microprocesadores tradicionales, y el resto de funciones se adaptarían a las nuevas unidades de ejecución. Se trata de un compromiso de reparto de responsabilidades entre la aplicación y el sistema operativo.

Sin embargo, hay que reconocer que para cierto tipo de tareas, o programas, sigue siendo cierto que resulta muy difícil repartirlas de forma adecuada entre múltiples unidades de ejecución, y sólo se ven ganancias de velocidad por la posibilidad de simultanear operaciones. Pero si debemos seguir un flujo secuencial, como por ejemplo al aplicar varios efectos superpuestos a un mismo trozo de audio, es necesario esperar a que haya terminado la primera operación antes de comenzar la segunda. ¿Cómo aumentaremos, pues, la utilización de múltiples CPUs? No está claro, pero tanto Intel como AMD están trabajando en ello, porque su futuro depende de que el rendimiento máximo que puedan proporcionar sus CPUs se aproveche realmente de cara al usuario. Recordemos también que uno de los rumores era que Leopard presentaba un soporte para la multitarea mucho más eficiente y automático, desarrollado conjuntamente con Intel.

¿Y si decidimos no acelerar?

Otra vía de innovación es decidir que, realmente, vamos a hacer más cosas simultáneamente incluso cuando no estemos haciendo nada: así podremos utilizar la mayor potencia de cálculo disponible para proporcionar nuevas formas de interacción con los sistemas operativos: el uso de interfaces de voz, o de reconocimiento gestual —incluso un reconocimiento de voz más robusto al combinarlo con la lectura de labios—, podría hacerse posible, bien mediante unidades dedicadas integradas en los microprocesadores, o mediante el uso de algunos de los núcleos como herramientas de cálculo intensivo para esas tareas. En concreto, simultanear el reconocimiento de habla con el gestual es una aplicación multiprocesador clara.

Otra vía más de aumentar el uso de las CPUs, es, sencillamente, aumentando su número de usuarios: si dispusiéramos de un gran centro de computación en cada casa, que fuese ampliable por cada nuevo usuario, estaríamos aprovechando el mayor número de unidades de ejecución, disminuyendo el consumo de cada una, y permitiendo un acceso más razonable a las tecnologías de computación: sería como si cada casa tuviera su propio mainframe, y cada usuario accediese a él, de forma transparente, desde su propio sistema de visualización.

Sin embargo, estas últimas posibilidades aún pertenecen más al ámbito de la ciencia ficción… pero recordemos que de aquí a cuatro años los 16 núcleos por CPU van a ser algo bastante común… y habrá que poder usarlos para algo más que la inteligencia (o estupidez) artificial de los personajes de los juegos de ordenador 😉

En conclusión…

Volviendo al origen de este artículo: Dvorak pretende provocarnos, haciéndonos caer en la trampa de que sólo Microsoft es relevante en la innovación, y que el (lamentable) estado previsto para Windows Vista significa que las mayores innovaciones se han eliminado, y no hay nada más que hacer en los próximos años.

Eso sí, se puede hacer otra lectura: Vista es la mayor oportunidad del resto de sistemas operativos para crecer diferenciándose no en precio, sino en innovación. Apple lo está haciendo, y entornos gráficos como XGL muestran que Linux también. Afortunadamente, Microsoft no es el único, ni el más importante, manantial de ideas en el campo de los sistemas operativos.

Enlaces

Tags Technorati: [ ]


Comentarios

7 respuestas a «¿El fin de los sistemas operativos? Yo creo que no.»

  1. Pues no le quedan a los sistemas operativos, sin hablar NADA de rendimiento nos podríamos tirar años sólamente mejorando funcionalidades con la potencia de proceso actual. Facilitando y agilizando tareas, mejorando seguridad, ampliando posibililidades, etc…

    Muy acertadas las observaciones al respecto de la utilización óptima de los recursos del sistema, sobre todo ahora que los núcleos empiezan a multiplicarse.

    Yo creo que uno de los trabajos más fuertes de optimización debería hacerse de forma que el peso de la paralelización de aplicaciones NO dependa de los desarrolladores, porque eso implica un trabajo muy fuerte y que siempre va a estar a la zaga de los avances de hardware.

    Bien a nivel de SO, o mejor incluso a nivel de Hardware (véase chipset dedicado a lo que sea), el programador debería desarrollar como si sólo tuviera un nucleo, olvidándose de paralelizaciones e historias. Y que fuera la máquina o el sistema operativo el que se encargara de repartir automáticamente las tareas.

    Creo que es la única forma de que las aplicaciones puedan “aprovechar” la máquina, al ritmo de mejoras que llevamos hoy en día. Actualmente, con la progresión que llevamos en núcleos, el cuello de botella está en la optimización que deben hacer los programadores.

  2. Avatar de MacDavid
    MacDavid

    Gracias Juande por este blog tan interesante. Cada dia aprendo cosas nuevas sobre tecnologia, desde puntos de vista realmente interesantes. Lo dicho, gracias.

  3. ¡Gracias, MacDavid! Pero la verdad es que, aunque me gusta también escribir artículos largos, casi prefiero que comiencen los comentarios para discutir las cosas 😉

  4. Orange, respecto a la mejora de seguridad, espero que la informática no llegue nunca a lo que está llegando la aviación: a imponer medidas de seguridad absurdas, tan incómodas que impidan el uso auténtico del ordenador, sin ser realmente más seguras.

    Respecto al resto de temas, sí, tenemos que ver qué vamos a hacer con tanta potencia. Ya sabemos que la potencia, sin control, no sirve de nada 😉

  5. […] El fin de los sistemas operativos? Yo creo que no.Alf de faq-mac me ha pasado un enlace a un artculo del polemista profesional John C. Dvorak, titulado Vista, callejn sin salida? En ese artculo… […]

  6. Avatar de Miguel Pérez
    Miguel Pérez

    Realmente interesante Juande, creo que es un tema en el que se puede hablar mucho más y en el que de hecho se van a empeñar Intel, Apple, Linux y (quien sabe) Microsoft.

  7. Conclusiones UniCienBlog 2006

    Este post artículo comencé a escribirlo en el tren de camino a Madrid, sin wifi, casi sin batería y en pleno bajón por tener que irme antes de tiempo, antes de la Beer& Blogs del sábado, antes de conocer un poco La Alameda y antes de que terminar

To respond on your own website, enter the URL of your response which should contain a link to this post’s permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post’s URL again. (Find out more about Webmentions.)

Descubre más desde Memoria de Acceso Aleatorio

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo