stringtranslate.com

Colgar (informática)

En informática , un bloqueo o congelamiento ocurre cuando un proceso o sistema deja de responder a las entradas . Un ejemplo típico es cuando la interfaz gráfica de usuario de la computadora (como Microsoft Windows [a] ) ya no responde cuando el usuario escribe en el teclado o mueve el mouse. El término cubre una amplia gama de comportamientos tanto en clientes como en servidores , y no se limita a problemas de interfaz gráfica de usuario.

Los bloqueos tienen diversas causas y síntomas, incluidos defectos de software o hardware , como un bucle infinito o un cálculo ininterrumpido de larga duración, agotamiento de recursos ( thrashing ), hardware de bajo rendimiento ( throttling ), eventos externos como una red informática lenta , configuración incorrecta, y problemas de compatibilidad . La razón fundamental suele ser el agotamiento de los recursos: los recursos necesarios para que alguna parte del sistema se ejecute no están disponibles, debido a que otros procesos los están utilizando o simplemente son insuficientes. A menudo, la causa es una interacción de múltiples factores, lo que hace que "colgar" sea un término genérico más amplio que técnico.

Un bloqueo puede ser temporal si es causado por una condición que se resuelve por sí sola, como hardware lento, o puede ser permanente y requerir intervención manual, como en el caso de un error lógico de hardware o software. Muchos sistemas operativos modernos proporcionan al usuario un medio para finalizar forzosamente un programa bloqueado sin reiniciar ni cerrar sesión ; Algunos sistemas operativos, como los diseñados para dispositivos móviles, pueden incluso hacerlo automáticamente. En caso de bloqueos más graves que afecten a todo el sistema, la única solución podría ser reiniciar la máquina, normalmente reiniciándola con un botón de encendido/apagado o de reinicio.

Un bloqueo se diferencia de un bloqueo en que la falla es inmediata y no está relacionada con la capacidad de respuesta de las entradas. [ cita necesaria ]

Multitarea

En un sistema operativo multitarea, es posible que un proceso o subproceso individual se atasque, como bloquear un recurso o entrar en un bucle infinito, aunque el efecto en el sistema en general varía significativamente. En un sistema cooperativo multitarea , cualquier subproceso que se atasque sin ceder colgará el sistema, ya que se bloqueará como el subproceso en ejecución e impedirá que otros subprocesos funcionen.

Por el contrario, los sistemas operativos modernos utilizan principalmente la multitarea preventiva , como Windows 2000 y sus sucesores, así como Linux y macOS de Apple Inc. En estos casos, un solo subproceso que se atasque no necesariamente bloqueará el sistema, ya que el sistema operativo se adelantará cuando expire su intervalo de tiempo, permitiendo que se ejecute otro subproceso. Si un hilo se bloquea, el programador puede cambiar a otro grupo de tareas interdependientes para que no se bloqueen todos los procesos. [1] Sin embargo, un subproceso atascado seguirá consumiendo recursos: al menos una entrada en la programación, y si se está ejecutando (por ejemplo, atascado en un bucle infinito), consumirá ciclos de procesador y energía cuando esté programado, lo que ralentizará el proceso. El sistema aunque no lo cuelga.

Sin embargo, incluso con la multitarea preventiva, un sistema puede bloquearse, y una tarea maliciosa o con mal comportamiento puede bloquear el sistema, principalmente al monopolizar algún otro recurso, como IO o memoria, aunque el tiempo del procesador no se puede monopolizar. Por ejemplo, un proceso que bloquea el sistema de archivos a menudo bloqueará el sistema.

Mover una ventana encima de un programa colgado durante un bloqueo puede provocar que se vuelva a dibujar un rastro de ventana. [2]

Causas

El hardware puede hacer que una computadora se cuelgue, ya sea porque es intermitente o porque no coincide con otro hardware de la computadora [3] (esto puede ocurrir cuando uno realiza una actualización ). El hardware también puede volverse defectuoso con el tiempo debido a la suciedad o al daño por calor.

Un bloqueo también puede ocurrir debido al hecho de que el programador tiene condiciones de terminación incorrectas para un bucle o, en un sistema operativo multitarea cooperativo , se olvida de ceder el paso a otras tareas. Dicho de otra manera, muchos bloqueos relacionados con el software son causados ​​por subprocesos que esperan que ocurra un evento que nunca ocurrirá. [4] Esto también se conoce como bucle infinito .

Otra causa de bloqueos es una condición de carrera en la comunicación entre procesos . Un proceso puede enviar una señal a un segundo proceso y luego detener la ejecución hasta que reciba una respuesta. Si el segundo proceso está ocupado, la señal se verá obligada a esperar hasta que el proceso pueda llegar a él. Sin embargo, si el segundo proceso estaba ocupado enviando una señal al primer proceso, ambos procesos esperarían eternamente a que el otro respondiera a las señales y nunca verían la señal del otro (este evento se conoce como punto muerto ) . Si los procesos son ininterrumpibles , se bloquearán y deberán cerrarse. Si al menos uno de los procesos es un proceso crítico del kernel , es posible que todo el sistema se bloquee y deba reiniciarse.

Puede parecer que una computadora se bloquea cuando en realidad simplemente está procesando muy lentamente. Esto puede deberse a demasiados programas ejecutándose a la vez, falta de memoria ( RAM ) o fragmentación de la memoria , acceso lento al hardware (especialmente a dispositivos remotos), API del sistema lentas, etc. También puede deberse a programas ocultos que se instalaron. subrepticiamente, como el software espía .

Soluciones

En muchos casos, puede parecer que los programas están bloqueados, pero avanzan lentamente y esperar unos minutos permitirá que se complete la tarea.

Los sistemas operativos modernos proporcionan un mecanismo para finalizar procesos bloqueados, por ejemplo, con el comando kill de Unix , o mediante un medio gráfico como el botón "finalizar tarea" del Administrador de tareas en Windows (seleccione el proceso en particular en la lista y presione " tarea final"). Los sistemas más antiguos, como los que ejecutan MS-DOS , las primeras versiones de Windows o el Mac OS clásico, a menudo necesitaban reiniciarse por completo en caso de que se bloqueara.

En dispositivos integrados donde la interacción humana es limitada, un temporizador de vigilancia puede reiniciar la computadora en caso de que se cuelgue.

Notas

  1. ^ Windows agrega el texto " (No responde) " al título de la ventana. Desde Windows Vista , el contenido de la ventana se vuelve gris cuando se intenta interactuar con el usuario, para dejar en claro que el programa no responde.

Ver también

Referencias

  1. ^ US 6052707, D'Souza, David, "Multitarea preventiva con grupos cooperativos de tareas", publicado el 21 de junio de 1996, publicado el 18 de abril de 2000 
  2. ^ "Nostalgia: arrastrar el cuadro de diálogo de error de Windows XP". Archivado desde el original el 19 de enero de 2022 . Consultado el 19 de enero de 2022 .
  3. ^ "Cómo solucionar problemas de bloqueos de la computadora durante la detección de hardware". Soporte de Microsoft. 2007-01-27. Archivado desde el original el 14 de marzo de 2016 . Consultado el 13 de abril de 2018 .
  4. ^ Calvin Hsia (15 de noviembre de 2006). "Aquí tienes un bucle infinito que colgará tu máquina". Blogs de Microsoft . Archivado desde el original el 14 de abril de 2018 . Consultado el 13 de abril de 2018 .