Pantallas Azules, ¿hasta cuando?

Seguramente al leer el título de este post pensaste en que me voy a referir a las pantallas azules de Windows. Correcto. También puedes haber pensado que es un post para criticarlas. Bueno, eso no será así. Este post tiene como objetivo explicarlas.


Historia


Hace ya un par de años, leí un recorte en el típico mural de las empresas, que estaba escrito por alguien conocido por mí y un referente nacional en muchos aspectos.


El artículo escrito se llamaba “El software nuestro de cada día” y estaba escrito por José Miguel Piquer.


Jo y Microsoft


José Miguel, o “Jo” como le dicen los más cercanos, fue profesor mío en algunos cursos en la carrera de “Ingeniería Civil en Ciencias de la Computación e Informática,” en la Universidad de Chile.


Siempre un gusto ir a sus clases, magister, doctorado y varios títulos más que pueden leer en su página personal del Departamento de Ciencias de la Computación (DCC), le recuerdo como acérrimo detractor de Microsoft y Windows.


Artículo


Bueno, el inicio del artículo escrito por él, esboza la siguiente frase:


Hay que aceptar que resulta extremadamente frustrante enfrentarse a sistemas que se caen: desde las pantallas azules clásicas de Windows, pasando por los sitios webs bancarios que no responden, hasta las agendas y sus fatal exceptions que se están volviendo más norma que excepción.


Después, el artículo va realmente a lo importante que él quiere exponer, pero con ésta introducción cae lamentablemente en facilismos con una frase que no aporta mucho, más que exacerbar el cuento de “nunca acabar” de las pantallas azules.


El artículo está escrito en julio del 2005, diez años después del festín de pantallas azules que nos daban Windows 95, Windows 98, Windows 98 segunda edición y finalmente (por suerte!) Windows Millenium Edition.


En mis años de estudiante (93-99) nunca hubo un PC en la universidad (salvo el de la secretaria del DCC), así que dudo que él personalmente se haya enfrentado a un sistema de estos, aunque no es por ahí donde quiero llevar este post.


Profesor, todos esperamos mucho de usted. Por favor, no caiga en frases fáciles. No las necesita. Usted está lejos de ser un político.


En el año 2005, ya existía Windows 2003, sistema operativo que casi no presentaba pantallas azules. Más aún, en 4 años, no recuerdo haber visto una pantalla azul en Windows 2003, experiencia que seguramente tú compartes.


¿Son las pantallas azules exclusivas de Windows?


Casi. En los otros sistemas operativos no son necesariamente azules.


Pantallas azules de diferentes sistemas operativos


 Hagamos una revisión de las pantallas y los sistemas operativos.


Tenemos la clásica de Windows 9X.


¿Mac OS?, por supuesto que sí, aunque tienen una diferencia con las de Windows. Son más bonitas y mejor logradas, pero el mensaje no dice nada útil, y que el usuario no pueda intuir que tiene que hacer.







Bueno, no siempre son bien logradas, aunque el mensaje es de mayor utilidad que la pantalla anterior.



¿Linux?, claro que sí, en variadas distribuciones, aunque son llamadas Kernel Panic (un nombre más realista para el problema que analizaremos más adelante).





¿Quién esté libre de pecado…


…que lance la primera piedra?, o como dice mi amigo Luisón, el sol sale para todos, y la noche también.


Como ven, no hay sistemas operativos sin fallas, aunque Apple crea y venda lo contrario. Todos enfrentan los mismos problemas. Apple tiene una ventaja en este aspecto sobre Microsoft, la cual se minimizará en el tiempo, mientras se pueda instalar Windows Vista o XP sobre hardware homologado por Apple.


Además, es cosa de leer foros para darse cuenta de que Apple funciona bien con software Apple. Cuando empiezas a instalar software de terceros que no cuentan con buenos procesos de certificación, la situación se equipara.


Vamos a la teoría


Considerando la arquitectura de procesadores x86, en el año 1982, con el lanzamiento del 80286, se comienzan a dar los primeros pasos en lo que hoy se conoce como protected mode.


Protected mode, provee dentro de un conjunto de características, la existencia de cuatro niveles de privilegio, conocidos también como anillos (rings), numerados desde el 0 al 3.



El anillo 0 tiene acceso irrestricto a todo. El anillo 3 tiene accesos restringidos y acotados. El anillo 1 tiene más restricciones que el 0, pero menos que el 2 y menos que el 3 obviamente.


Anillos y Windows


Hoy en día, un sistema Windows 2003 ejecuta código en dos anillos. El 0 y el 3. También corre para XP y 2000. Tengo entendido que Vista utiliza el 0, 2 y 3, pero no lo puedo garantizar.


En el anillo 0 se ejecuta el Kernel de Windows, el cual realiza algunas de las actividades listadas a continuación. Administración de memoria, acceso al hardware a través del HAL, acceso a dispositivos utilizando drivers, priorización de actividades, plug and play, acceso a redes utilizando protocolos como TCP/IP o HTTP, etc.


En el anillo 3 se ejecutan las aplicaciones. Cada vez que una aplicación necesita de alguno de los elementos anteriormente mencionados, y que maneja el Kernel, necesita solicitárselo a éste ya que la aplicación no tiene permiso para acceder directamente.


Esta solicitud y cambio de contexto entre la aplicación y el Kernel tiene un costo, el cual fue tratado de minimizar en el pasado, pero las lecciones aprendidas fueron duras.


¿Por qué se producen?


Una pantalla azul en Windows se produce cuando se produce una falla en código que se ejecuta en el Kernel.


Si una aplicación se cae (anillo 3), nuestro amigo Dr. Watson la atiende y la mata, pero el sistema operativo sigue funcionando sin problema. Hoy en día, Windows te pregunta si deseas enviar el reporte de error a Microsoft, utilizando la aplicación Windows Error Reporting.


Si el Kernel falla (anillo 0), no hay remedio ni doctor que te salve. Bueno, Dr. Watson no salvaba las aplicaciones sino que les aplicaba la eutanasia. Con un Kernel con alguna excepción, no se puede seguir funcionando. Cualquier intento (teórico) de seguir funcionando podría implicar que se corrompan archivos en el disco, por ejemplo.


Mencionaba hace un rato que en Linux, la pantalla azul se llama Kernel panic. En efecto, eso es. Es un problema en el Kernel y no hay mucho más que hacer, salvo entrar en pánico.


En los SO Windows de hoy, versión 2000 en adelante, los motivos de las pantallas azules son los siguientes. Este gráfico fue generado con datos hasta el mes de Abril del 2004, obtenido del libro Windows Internals de Solomon y Russinovich.



El 15% desconocido se debe a que el nivel de corrupción en la información obtenida después de la caída es tan grande que no permite identificar ningún responsable.


Windows 9X y el festín de las pantallas azules


Por algún motivo de diseño, que jamás sabremos el origen, debido al costo del cambio de transición entre el anillo 3 y el 0, los diseñadores de ese sistema operativo consideraron que para mejorar el rendimiento, mucho código del sistema y aplicaciones correrían en el anillo 0.


Debido a esto, el más mínimo error en cualquier aplicación, podría comprometer el sistema completo, como ocurrió en la archiconocida presentación de Windows 98 de Bill Gates.


Esa fue una lección de duro aprendizaje.


Drivers


Como se pudo ver en el gráfico, el 70% de los problemas son producto de drivers de terceros que corren en el Kernel, y sólo el 5% es código defectuoso de Microsoft. Me gustaría saber cuál es la tasa actual, al final del 2007.


Cuando nosotros como usuarios instalamos un driver que no está certificado, estamos generando un potencial problema con nuestro computador. Por supuesto, ese driver puede estar muy bien desarrollado y jamás tendremos una pantalla azul.


En mi caso particular, el driver de mi webcam tiene problemas serios en Windows XP 64 bits. En Windows XP 32 bits funciona sin problema. En 64 bits, cada vez que abro el Messenger y la activo, pantalla azul. ¿Puede ser Messenger el responsable de la caída de mi equipo? Claro que no. Messenger corre en el anillo 3, pero el driver de mi webcam corre en el 0.


Windows Vista


Según tengo entendido, en Windows Vista, algunos o todos los drivers de terceros se ejecutan en el anillo 2, es decir, con mayor privilegio que las aplicaciones, pero con menor privilegio que el Kernel. Esto ayudaría enormemente a minimizar los problemas de pantallas azules producto de drivers defectuosos. Ya sabemos que para abril del 2004, el 70% de los errores reportados era por problemas de drivers defectuosos.


Parte de ésta información se puede encontrar aquí (sección Driver stability in Windows Vista), pero nada menciona de anillos. Sí menciona que parte del driver corre a nivel de usuario (anillo 3).


Ventaja de Apple


Apple tiene una gran ventaja sobre Microsoft, sin embargo, la posibilidad de instalar Windows sobre un equipo Apple mostrará nuevos aspectos en esta materia.


Como sabemos, el gran problema de Windows son los drivers de terceros.


Windows está hecho para que funcione sobre casi cualquier hardware que sea x86, x64 e IA64 compatible. Como hardware me refiero a placas madre, tarjetas de video de dudosa procedencia, memoria de dudosa procedencia, procesadores de segunda generación de Intel, tarjetas de red y cuanto hardware se pueda construir en el mundo.


Por otra parte, el hardware de los equipos Apple está homologado, probado y garantizado para que funcione bien, como piezas de una buena orquesta.


¿Qué sucede si quiero expandir la memoria de mi Apple? tengo que ir a Apple e instalar la que ellos dicen que funciona.


¿Qué sucede si quiero expandir la memoria de mi PC?. Voy y compro en la esquina la más económica.


Lo mismo para el resto del hardware, y por ende, los drivers.


Drivers malos, problemas de Kernel. Problemas de Kernel, pantallas azules.


Mi amigo Luisón ya instaló Vista en su Mac (también tiene un PC) y dice que anda mucho mejor que en el PC. Yo no puedo atestiguarlo, pero le creo.


Anillo 1


Antes de finalizar, una nota anecdótica. El anillo 1 estuvo mucho tiempo sin utilizarse, o al menos eso es lo que yo tengo entendido. Sin embargo, en estos últimos años se ha usado bastante, aunque probablemente no sepas cómo.


Si utilizaste Virtual Server o Virtual PC, las máquinas virtuales se ejecutan en el anillo 1. Esto significa que tienen más privilegios que tus aplicaciones, pero menos que el Kernel del sistema operativo host. Así, una maquina virtual no podrá hacer caer  tu sistema operativo de host.


¿Anillo -1?


Otra nota curiosa. En hardware que soporta virtualización, quien controla la administración de las máquinas virtuales (Hypervisor en Windows 2008) se ejecuta en el anillo -1, para que las máquinas virtuales se ejecuten en los anillos correspondientes a como ha funcionado siempre (0 y 3). Más información en Ponicke Bloguea.


Espero haber arrojado un poco más de luz sobre el cuénto de nunca acabar de las pantallas azules.


Todos los sistemas operativos mencionados las tienen, y en todos el problema es el mismo.


Saludos, desde Santiago de Chile
Patrick

17 Replies to “Pantallas Azules, ¿hasta cuando?”

  1. Es curioso que se escriba (escribas -si el “tuteo” es permisible- ) un blog acerca de las pantallas azules cuando la PC de mi casa (WVista Business) la enciendo y pasan cierto numero de minutos y sale una pantalla Azul.
    No le puedo echar la culpa al Windows ese error comenzo cuando instale ciertas aplicaciones despues ya de varios meses usando el sistema sin problemas
    De acuerdo a lo que leo del blog me queda una duda: Si mi problema no era por drivers porque despues de la formateada volvi a instalar los drivers el problema no aparecio hasta que instale un firewall, el babylon y un programa de maquinas virtuales (vmware),¡Es posible echarle la culpa a esas aplicaciones (ring 3 -creo-) del pantallaso? -Una posible alternativa seria el vmware (ring1) pero eso me trae ciertas dudas ya que la volvi a formatear y no instale el vmware y volvio a aparecer. Error de Hardware quizas pero regrese a una version anterior del C antes de instalar nada y no pasa.

  2. GSus,

    Es imposible que una pantalla azul sea provocada por una aplicación, salvo que ésta instale drivers que corran en el kernel de Windows.

    Interesante lo de VMWare. En el artículo, mencioné Virtual Server y Virtual PC. Tiendo a pensar que VMWare tambien funciona en anilo 1, pero no tengo mayor información.

    Si puedes reproducir el problema, cuando ocurra, toma una foto de la pantalla y conversémosla. Espero poder ayudarte a encontrar quién es el culpable, el cual, podría ser código de Vista…quién sabe…

    Si te animas a más, configura Vista para que tome un Dump de la memoria del Kernel cuando ocurra y así poder revisarla, aunque ese dump va a pesar algunos gigas.

    Saludos,

    Patrick

    PD: Por supuesto que se puede tutear…

  3. realmente interesante lo recomendare en la universidad, esta muy bueno el articulo y sus curiosodades, de verada hace años k no leo con tanta atencion un blog, muchas gracias, te vas a favoritos =)

  4. Patrick

    Muy buen post. Yo tuve un experiencia con pantallas azules en Windows 2000. La verdad no tengo el pantallazo y no recuerdo nada de lo que decía, pero despues de probar distintas alternativas de solución, “logré” solucionar el problema cambiando una tarjeta de memoria ram (tenía 2 una de 128MB y una de 256MB). Ponía la tarjeta y pantalla azul, sacaba la tarjeta y todo bién. Mi problema estaba dentro del 10%, problema de hardware (por suerte era la de 128MB).

    Saludos,
    Claudio Pérz

  5. buen articulo, aclaratorio

    lindas pantallas azules .. por ahi tengo el video del bochorno de Gates y su win98 … un clásico!!

    saludos desde el metro Salvador, Stgo de chile

    🙂

  6. Pablo,

    efectivamente esa aplicación existe, pero tiene dos componentes principales. La interfaz de usuario y un driver de kernel llamado Myfault.sys.

    Detalles podrás encontrar en el blog de Mark.
    http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

    Como vimos, los problemas de drivers son los que más problemas le traen a Windows.

    Una aplicación no puede botar el sistema si no tiene una “ayuda” en el kernel.

    Saludos,

    Patrick.

  7. De eso me estoy convenciendo. Aun no he tenido tiempo de conseguir camara y de volver a querer ver una pantalla azul en mi monitor. Hace tiempo que no veo la pantalla azul desde que deje de usar el babylon y el vmware pero aun lo tengo pendiente.Gracias

  8. hola!

    yo tambien tengo un problema con pantallas azules en una lap, yo tengo el windows vista basic, y despues de un tiempo que compre el equipo me empezaron aparecer las pantallas azules, estas no son frecuentes, pueden pasar dias o semanas, y como son en ingles y no tarda mucho pues no he podido leelos completamente, dice algo asi como: drivers y otras cosas mas, no soy muy experto en esto, mas bien, nada. me he dado cuenta que esto pasa solo cuando me conecto a internet y con una red, bueno esa es mi conclusion, por que en la escuela nunca me a pasado y siempre estoy conectado, es posible que sea la configuracion de internet? puede afectar algun hardware con el tiempo o es debido a un dterioro de uno de ellos?

  9. Hola Chava,

    si pudieses tomar una foto de la pantalla podria ayudar. Podrias probar presionando el boton de pausa. Si mal no recuerdo ese boton pausa cuando se está realizando el booteo así que podría ser útil en ese caso.

    La otra opción es configurar el sistema para que tome un dump de la memoria cuando falle. En vista no se donde se hace pero en XP se hace en:
    Panel de control->System->Advanced->StartUpAndRecovery->SystemFailure.

    Me imagino que vista tiene alguna pantalla similar para eso.

    Teniendo un dump o una foto, podemos encontrar más pistas.

    Saludos,

    Patrick

    si ocurre

  10. Hola Patrick

    Es la primera ves que leo tu Blog, me agradan los contenidos

    Yo Uso varios So por diversas razones, y al igual que vos,opino que todos tienen problemas.

    Que uno sea mas estable que otro, Ok, Mas Usable, Tambien.

    Pero para poder entender esto, solo hay que hacerse algnas preguntas

    Cuantos usuarios usan Linux y cuantos Windows ?
    Porque ?
    En Que Sector esta enfocado uno y otro ?
    Cual es mas usable.?

    y aqui seria un largo etcetera

    Es como cuando te piden una solucion de desarrollo de sistema.

    En mi caso, como profesional, para que le voy brindar una solucion n-capas a una empresa que lo unico que quiere es ver el stock en la web ?

    Se entiende ?

    CG

  11. hola!

    Yo ultimamente he tenido un problema
    con un notebook Hp con windows vista

    No es muy seguido el pantallazo azul,
    .Mas que nada este NB trabaja con aplicaciones
    utilitarias, word, excel, etc, a lo mas trabaja
    un autocad sobre el, pero nada mas complejo en relacion a aplicaciones.

    Si me pudieses echar una mano te lo agradeceria mucho.

    De antemano Gracias
    Deje mi mail en respuesta.

  12. Matías,

    revisa en el visor de eventos de windows cual es el “stop code” de windows y el resto de información que aparece ahí y mandamela por mail utilizando el formulario de contacto de este blog.

    Saludos,

    Patrick

Leave a Reply

Your email address will not be published. Required fields are marked *