miércoles, 15 de enero de 2014

Motivos de que Windows Vista fuese un mal SO para el público

Todos sabemos de una u otra manera, que Windows Vista sufrió muchísimas criticas por todo tipo de personas. Problemas con drivers, un empleo de RAM superior a lo esperado (pide mas que el propio Windows 7 u 8) y problemas con muchisimos tipos de dispositivos. Todos vemos esto desde fuera pero, ¿como seria técnicamente, por dentro?

Por dentro fue otra historia muy distinta. El motivo de los problemas que tuvo Windows Vista fue porque todo el software del momento, incluyendo programas y drivers de dispositivos, hacían una llamada al kernel de Windows NT (fuese la versión que fuese). Hoy día esto se sigue sucediendo. Esto provoca errores de funcionamiento o directamente el soft/dispositivo no funcionaba. 

¿Queréis saber porque? aquí te lo explicamos:

Todo software creado (o la gran mayoría para ser mas precisos) hacia una llamada al kernel de Windows para comprobar que se ejecutaba en un entorno compatible. Si Windows no devolvía el numero que el programa solicitaba, este podía actuar de 2 maneras: o no funcionar, o funcionar con algún pequeño defecto o inconveniente. Abajo os pondre un ejemplo:

En aquella época, Windows XP SP3 era el rey. Si vamos a ejecutar y ejecutamos el cmd.exe (consola de comandos) veremos que el número del kernel es 5.1:


Todo el software creado hasta el momento, le decia a Windows que le devolviese un numero parecido o equivalente a 5.x (5 equivale al numero del kernel, .x equivale al numero del parche y o actualizaciones de kernel).

Windows Vista empleaba el numero de versión de kernel 6.0 (es decir, era un kernel nuevo, no parcheado):


Sabiendo esto podemos pensar que la culpa no la tiene Microsoft, sino los softwares de terceros. Ahora bien, Microsoft tambien hizo unas cosas mal:

- Aero consumía demasiado para la época. Si bien no ralentizaba el sistema en muchos sistemas, la memoria de vídeo del sistema literalmente se las tragaba. Con esto, si la tarjeta gráfica era de muy pocos megas, el sistema si que te podia pegar tirones viendo por ejemplo videos flash y creando ventanas y moviendolas.

- Gadgets de escritorio, que para variar, funcionan tambien con Aero. Podias usarlo si querías, pero no solo se seguía tragando la memoria: sino que tambien, los gadgets de Windows Vista no podian sacarse de la barra de la derecha.

En cambio, si usábamos el tema clásico de Windows, usar Windows Vista era la leche.

Dejando esto aparte, Windows 7 tiene de kernel 6.1. ¿Que quiere decir esto? Que Windows 7 era una actualización de Windows Vista teniendo un 100% de compatibilidad con todo el soft de este y con una compatibilidad mejorada hacia atrás. Esto también quiere decir que Windows 8 (kernel 6.2) y Windows 8.1 (kernel 6.3) son 100% compatibles con todo el soft de Windows Vista.

Y os preguntareis, ¿que pasara de aquí a futuro? pues mas de lo mismo, a menos que Microsoft se curre lo de la compatibilidad bien bien. Es decir, cuando el futuro Windows emplee el kernel 7.x, perderemos compatibilidad con software actual. Y asi con el 7.x, 8.x y hasta el infinito...

Tambien os preguntareis, ¿hay algún método de solucionar esto? puede que si, puede que no, dependerá del software en cuestión.

Lo que se puede hacer es decirle a Windows que usando el modo de compatibilidad, al ejecutar x programa, Windows le diga que esta usando otra numeración de kernel en lugar de la que tiene. Por ejemplo, imaginemos que tenemos un juego del año 2005. El juego pide kernel 5.1, pero nosotros tenemos Windows 8.1 (kernel 6.3) y que este no funciona. ¿Que hacemos? le damos a modo compatibilidad y elegimos Windows XP SP3 o SP2 (kernel 5.1). Al hacer esto, Windows le dice al programa:

- "Hey, que soy kernel 6.3 pero uso un kernel 5.1, ejecutate"

Y ya dependiendo del software en cuestión, puede o no funcionar.



CURIOSIDAD: Es mas probable que falle un driver que un software de cualquier otro tipo.