Hang (informática) - Hang (computing)

En informática , se bloquea o congela 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) 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 ( paliza ), hardware de bajo rendimiento ( estrangulamiento ), eventos externos como una red de computadoras lenta , mala configuración, y problemas de compatibilidad . La razón fundamental suele ser el agotamiento de los recursos: los recursos necesarios para que se ejecute alguna parte del sistema 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 general más suelto que técnico.

Un bloqueo puede ser temporal si es causado por una condición que se resuelve por sí misma, como un hardware lento, o puede ser permanente y requerir una 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 terminar por la fuerza un programa colgado sin reiniciar o cerrar sesión ; algunos sistemas operativos, como los diseñados para dispositivos móviles, pueden incluso hacer esto automáticamente. En cuelga más graves que afectan a todo el sistema, la única solución podría ser la de reiniciar la máquina, por lo general por ciclos de encendido con un botón de reinicio de encendido / apagado o.

Un bloqueo difiere de un bloqueo , en el que la falla es inmediata y no está relacionada con la capacidad de respuesta de las entradas.

Multitarea

En un sistema operativo multitarea, es posible que un proceso o hilo individual se atasque, como bloquear un recurso o entrar en un bucle infinito, aunque el efecto en el sistema general varía significativamente. En un sistema cooperativo multitarea , cualquier hilo que se atasque sin ceder colgará el sistema, ya que se calzará como hilo en ejecución y evitará que se ejecuten otros hilos.

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

Sin embargo, incluso con la multitarea preventiva, un sistema puede bloquearse y una tarea malintencionada o malintencionada puede bloquear el sistema, principalmente al monopolizar algún otro recurso, como E / S 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.

Causas

El hardware puede hacer que una computadora se cuelgue, ya sea porque es intermitente o porque no coincide con otro hardware en la computadora (esto puede ocurrir cuando se realiza una actualización ). El hardware también puede volverse defectuoso con el tiempo debido a daños por suciedad o 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 cooperativo multitarea , olvidándose de ceder 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á. 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ía la señal del otro (este evento se conoce como punto muerto ). Si los procesos no se pueden interrumpir , 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 cuelga cuando en realidad está procesando muy lentamente. Esto puede deberse a que se ejecutan demasiados programas a la vez, memoria insuficiente ( RAM ) o fragmentación de la memoria , acceso lento al hardware (especialmente a dispositivos remotos), API de sistema lentas, etc. También puede deberse a programas ocultos que se instalaron subrepticiamente, como el software espía .

Soluciones

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

Los sistemas operativos modernos proporcionan un mecanismo para terminar 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 . En sistemas más antiguos, como los que ejecutan MS-DOS , las primeras versiones de Windows o el Mac OS clásico a menudo debían 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

Ver también

Referencias