Portada Ciencia y Tecnología ¿Por qué ‘se arregla’ el PC al apagar y volver a encender?

¿Por qué ‘se arregla’ el PC al apagar y volver a encender?

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrShare on LinkedInPin on PinterestEmail this to someone
Pantallazo Azul de la muerte en una cabina de internet y teléfono

Pantallazo Azul de la muerte en una cabina de internet y teléfono

Si se queda congelada la pantalla, prueba a apagar y volver a encender. Que la grabadora de cds no expulsa el disco o sale de ella sonidos similares a las cuerdas vocales de algún concursante de castings (tipo OT, Factor X, La Voz,…), prueba a apagar y volver a encender. Que, de repente, no sale en pantalla lo que escribes con el teclado, prueba a apagar y volver a encender. Que no hay forma de que el ratón se mueva, prueba a apagar y volver a encender. Que el PC ahora no puede reproducir vídeos, prueba a apagar y volver a encender…

Y podría decir más y más ejemplos. Además quién dice PC, dice móvil, tableta, reproductor mp3s, automóvil,… Ya hay muchos aparatos electrónicos que usan la llamada arquitectura de von Neumann. La arquitectura de von Neumann es el gran invento del siglo pasado, si dicha arquitectura no existiese habría que inventar otra similar, pues si no estuviera presente nos pasaríamos el mayor tiempo cambiando cables del PC de sitio.

¿Pero qué es la arquitectura de von Neumann? Explicada de forma sencilla es una forma de ‘ordenar’ cada parte del ordenador (también para los móviles, tabletas, reproductor mp4,… pero diré sólo ordenador o PC a partir de ahora, para no hacer tediosa la lectura) de forma que no haga falta cambiar de sitio los cables de un ordenador cada vez que lo queramos utilizar para otra cosa, por ejemplo para no cambiar cables de sitio cuando quiero dejar de usar el ordenador para escribir un email y lo use para ver una serie.

Esta ordenación consiste en separar el ordenador en tres partes:

  • La memoria principal: vamos, la memoria de nuestro sistema, la RAM de toda la vida, que es la leche;
  • La CPU: que es la que, hace operaciones como sumas, restas, multiplicaciones, divisiones, guarda cosas nuevas en la RAM, se trae cosas de la RAM para operar (sumar, restar,…) con ella,… Se trata del llamado procesador, tu amigo ‘Intel’ o ‘AMD’, ése de la etiqueta del PC.
  • El sistema de entrada/salida (a partir de lo que sigue lo llamaré ‘E/S’): tu monitor, tu teclado, tu ratón, tu pendrive, tu disco duro (ese cuya capacidad se mide ya en cientos de GB, y cuando no en Teras), tu disco duro externo multimedia, la tarjeta gráfica,… En síntesis es lo que no es el procesador y la RAM.
La Arquitectura de von Neumann dominó el mundo

¡La Arquitectura de von Neumann dominó el mundo!

La mejor forma de ver esto es como un torrente de información y datos. La memoria principal tiene los datos y la información, y la CPU hace cosas con ellos y devuelve, la información resultante, a la RAM o al sistema E/S. Y eso es lo que hace el ordenador, el móvil, la tableta,… todo el tiempo.

Para entender la respuesta a la pregunta del inicio era necesario que supieras eso y otra cosa que tengo que contarte. Por si no lo sabías: tu ordenador te engaña. Puede que te hayas dado cuenta antes pero la realidad es que si pudiéramos hacer una foto a la información que pasa por el ordenador en un instante de tiempo, cada parte del PC sólo hace una cosa en cada instante de tiempo. ¿Cómo te engaña? Aprovecha cuándo una parte del ordenador está sin hacer algo, para que lo haga, aunque luego necesite otra parte que ahora está ocupada. También una parte puede irse turnando, un ejemplo con el disco duro en un momento en que abrimos un fichero de vídeo y seguidamente un documento de texto, el PC haría: ahora voy cargando el vídeo, después voy cargando el documento, después sigo cargando el vídeo, después sigo cargando el documento,… El orden de los turnos los controla el sistema operativo que uses.

Otro asunto que seguramente no conozcas, y de importancia para este tema, es que cada parte del ordenador tiene un poquito de memoria. De hecho el procesador tiene de 3 a 4 niveles diferentes de memoria. Pero es que también hay memoria en el sistema de E/S: los llamados buffers de memoria para: el teclado, el ratón, los altavoces, la impresora,… Los buffers de memoria son otra forma más de guardar datos, aunque en este caso de forma intermedia, un ejemplo: el buffer del teclado guarda todas las teclas que escribes en el teclado, y del buffer salen las teclas para ser procesadas por el ordenador; así si el ordenador está muy ocupado, no saldrán las letras pulsadas en el monitor, hasta que esté desocupado, pero saldrán las que pulsaste y en el mismo orden que las pulsaste.

Y con esto ya tenemos todas las piezas del puzzle preparadas. Dentro de unos pocos párrafos serás de los elegidos que están a punto de conocer la respuesta a la pregunta del título. A todo esto, mira que en la serie IT Crowd decían eso de “Have you tried turning it off and on again?” (“¿Has probado a apagar y volver a encender?”) muchas veces, pero bien que se guardaban el secreto.

En resumen, tenemos: un porrón de partes del PC (internas o externas), cada una con su memoria, que sólo puede hacer una cosa a la vez, y que se suelen turnar cuando lo dice tu sistema operativo (Windows, Android, iOS, Mac OS, Linux,…), y que pueden quedarse esperando a que otra parte del PC esté libre (porque, según el sistema operativo, ese recurso no se pueda turnar).

Si, vale, pero ¿cómo llega a ese colapso en el todo se queda ‘pillado’ y no podemos hacer nada? voy terminar de atar cabos de todo lo que he dicho antes con un ejemplo. Imagina que la CPU (tu amigo procesador Intel o AMD) está muy ocupada, tan ocupada que no puede atender a otra cosa, como el ratón o el teclado. La CPU en muchas ocasiones puede quedarse un rato haciendo muchas operaciones, y así se queda manejando grandes cantidades de megabytes con la memoria principal o entre la memoria principal y el disco duro. Cuando más veces puede pasar esto es el caso de programas grandes, como un videojuego con muchos gráficos, o el emulador de Android, o una máquina virtual, o un navegador web con muchas ‘pestañas’. Cosas como éstas dejan al procesador con la memoria o la tarjeta gráfica (la responsable de todo lo que sale en nuestro monitor) a solas y sin querer que lo moleste otro objeto, mientras éste se queda esperando, y esperando, y esperando,… Tanto que el usuario pierde la paciencia, teclea control+alt+suprimir y le da a finalizar tarea y… ahí le toca esperar otra vez. Porque ahora la CPU no sólo tiene que cancelar todo lo que tenía previsto hacer después con esos datos, sino que restablecer la memoria a como estaba antes de abrir ese programa ‘pesado’. Esa situación final es responsabilidad del sistema operativo el cómo tratarla.

Aunque no lo creas Windows Vista tiene una pantalla roja de la muerte y no azul.

Aunque no lo creas Windows Vista tiene una pantalla roja de la muerte y no azul.

Si se trata del clásico ‘pantallazo azul de la muerte‘, que tantas alegrías ha dado en Windows, o en sus diferentes versiones (en Linux y en Mac OS X es negro, le llamamos ‘Kernel Panic‘; en Windows Vista y en las PlayStation 2 y 3 son rojos, la llamada ‘pantalla roja de la muerte‘), que se arregla al apagar y volver a encender, suele ser porque hay algún programa ha escrito parte los resultados de sus operaciones, sobre la memoria temporal del sistema operativo. Por ejemplo un virus escribe el número ’3′ sobre una parte de la RAM en la que está el sistema operativo Windows, en vez de sobre la parte libre de la RAM; esto, una vez más, es culpa del sistema operativo por dejar que el virus pueda escribir sobre él mismo, antaño era responsabilidad del programador del programa que se comportara de esa forma errónea.

Todas las memorias excepto el disco duro (incluyo los buffers) son temporales, por lo que cuando apagas se borran, además la CPU y todo lo conectado deja lo que estaba haciendo, es más la memoria que tenía (registro y cachés) sobre ‘lo que estaba haciendo’ se ha borrado también, por lo que incluso si ha habido alguno de esos famosos ‘pantallazos azules de la muerte’ que no ha afectado al disco duro (en especial la zona del sistema operativo), lo que pasó, siempre que no fuera en el disco duro (porque ésa no es memoria temporal), se quedó borrado. Cuando apagas eso es lo que ocurre, y claro, como ya está borrada toda memoria temporal, al volver a encender todo estaba tal y como estaba antes de ocurrir aquel error.

Y eso es todo. Nada de magia, ni revoluciones de la electrónica contra los humanos, ni de ‘uy, mi dueño se ha enfadado, voy a arreglarme sólito’. Puede que la realidad sea más cutre, pero la mayoría de las veces funciona. ¿No?

EDITADO:
Alguien ha subido el presente artículo a meneame. Quiero comentar una cosa. Hay comentarios en meneame de gente que parece ser que piensan que con este artículo digo, o trato de decir, que ‘todos los errores de tu PC se solucionan apagando y volviendo a encender’ ¡¡¿?¿?¿?!!, aunque tal vez sea el trolleo de siempre o bromas sanas. En fin, para aclararlo, sólo hay que pensar que si rompo (o se rompe por el uso) la fuente de alimentación, o la memoria principal, o el procesador, o la placa base,… (o todo junto), o se mete un ‘malvado virus destructor’, o machaco el PC con un martillo, desde luego ya no se arregla apagando y volviendo a encender. Con ‘se arregla’ (así, entrecomillado) me refiero a cuando ocurre que se arregla al apagar y volver a encender, cosa que a algún que otro usuario le parece ‘magia’, pero, insisto, no lo es. Espero que haya quedado claro. :)

El resto de comentarios me encantan (siempre y cuando exponen sus razones o simplemente distraen con sus conversaciones) por el buen feedback de información, y lo agradezco. :D

EDITADO 2

He eliminado los fragmentos sobre el interbloqueo, por la confusión que producen sobre el tema real del que trata el interbloqueo, así como algún detalle que también podía dar confusión.

Fuentes de las imágenes:

Otros artículos

Toy_robot

Por -
0 408

6 comentarios

  1. Genial artículo. De que la memoria regresa al estado inicial al apagar y volver a prender creo que muchos conocen, los interbloqueos, de los que se supone que debo saber algo cursando sistemas operativos, son menos conocidos y el artículo me ha dejado mucho más claro el concepto.
    ¿Con la planificación de procesos y procesos enfocados en administrar un determinado recurso no se solucionaban la mayoría de casos posibles?

  2. ¡Gracias!

    Sí eso existe. Pero el el problema de esa planificación es que es muy costosa, tanto que ni se usa. Ten en cuenta que se tienen que prever de todos los procesos, qué recursos se van a utilizar, y cuántos recursos.

    Suma a eso que del interbloqueo, y seguramente te habrás dado cuenta, me he dejado alguna que otra cosa para simplificar el texto. En especial que el/los recurso/s que causa el bloqueo entre los procesos, no son elementos físicos en sí, sino zonas de memoria compartida (las variables compartidas de toda la vida y objetos de APIs de dispositivos del PC), que pueden pertenecer a esos elementos físicos o a otros procesos. Los procesos van luchando por esas zonas de memoria, así cuando uno termina, o el sistema operativo le quita la zona (por el tema de planificación de procesos), se le da a otro proceso.

    Así el problema más gordo de los interbloqueos viene si, ejemplo simple (de relación circular), un proceso A tiene una zona de memoria 1 que necesita, para completar sus cálculos (en dicha zona de memoria 1), una zona de memoria 2 que todavía no está con su resultado correcto, porque en ella está calculándolo un proceso B que necesita una zona de memoria 1 (que tampoco tiene su resultado correcto porque necesita que lo complete el proceso A). Este problema puede darse en un programa chapuza o en una situación determinada (ten en cuenta que las zonas de memoria compartidas pueden pertenecer a cosas como el ratón, el teclado, dibujos en la pantalla,…).

    Yo lo he puesto muy fácil y bonito con sólo dos procesos, y sería sencillo de detectar para un sistema operativo actual, pero normalmente son muchísimos procesos los que se ejecutan normalmente en un PC, y ahí se incluyen procesos del sistema operativo.

    Lo que suele ser la prevención de interbloqueos implica cosas como: eliminar la exclusión mutua (eso es la forma básica de controlar las zonas de memoria compartida, luego no se puede hacer); que un proceso sólo pueda usar un recurso (o una jerarquía que no se use nunca por otro proceso) para sus cálculos (nos elimina muchas ventajas de la multitarea); que todos los procesos antes de lanzarse digan qué recursos necesitan (esto es computacionalmente imposible); eliminar la condición de no expropiación (lo que quiere decir eliminar eso de que un recurso pueda quedárselo un proceso hasta que termine una tarea, como puedes ver en el ejemplo que puse de los procesos A y B, esto puede llevar a estados inconsistentes). Luego los interbloqueos no se pueden prevenir.

    En cuanto a lo de evitar los interbloqueos, suele ser ineficiente una vez que tenemos tantos procesos como los que usamos actualmente. Fíjate, tan sólo, la que se lía con el algoritmo del banquero de Dijkstra.

    Windows usa (o por lo menos usaba) un sistema para detectarlos y recuperarse (y luego sacar esa bonita ventana con el botón de “Finalizar tarea”), y no servía de mucho que digamos… UNIX (Linux y Mac) no tratan para nada el problema del interbloqueo, ¿por qué? porque es preferible a imponer que cada usuario pueda crear un solo proceso, abrir un solo fichero y usar sólo una unidad de lo que sea.

    ¡Un saludo!

  3. Interesantìsimo! Ese tipo de errores (de interbloqueo) solían aparecer cuando realizaba operaciones muy complicadas en el SQL Server instalado en los servidores de mi trabajo… por suerte ya no suceden tan seguido. Por cierto, ¡No conocía la pantalla roja de la muerte de windows vista! ¿Será porque cuando compré mi pc con esa versión preinstalada, solo duro 1 día y luego le instalé el querido XP? :-P

  4. ¡Gracias! Espero que siga yendo bien ese servidor.

    xD Pues yo la conocí hace unos cuantos años, cuando un compañero de facultad que usaba Vista me lo contó. El XP es muy bonito, ya hace varios años que no lo veo desde que instalé Ubuntu, dale saludos de mi parte.

    ¡Un saludo!

Responder

(Spamcheck Enabled)