Acabo de ejecutar dot(un programa para dibujar gráficos dirigidos) con un archivo de entrada que era tan grande que no se podía procesar en un tiempo razonable.
Todo mi sistema se congeló. Apenas podía llegar a una consola de texto con Ctrl+ Alt+ F1para matar dot, pero me llevó varios minutos.
¿Por qué el sistema permite algo como esto? ¿Por qué ofrece un programa no crítico como el dot99% del sistema y usa el 1% restante para responder?
scheduling
Christoph Wurm
fuente
fuente

Respuestas:
Así es como funcionan GNU / Linux y otros sistemas multitarea, comparten el procesador entre los procesos en ejecución,
dotno tendrán el 99%, sino el 100% durante el 99% del tiempo. Cada proceso domina el procesador durante un cierto período de tiempo.Esto lo manejan los programadores (Linux tiene varios programadores, algunos solo emplean la estrategia habitual, algunos intentan dar más tiempo a las interfaces de usuario, etc.).
Ahora, en su caso, el problema era, probablemente, que
dotno tomaba mucho tiempo del procesador, sino mucha memoria. Y cuando un programa usa demasiada memoria, hay una agitación , que es exactamente un proceso que hace que el sistema se congele, no porquedotesté haciendo mucho, sino porque el núcleo tiene que mover las páginas de memoria de un lado a otro entre el disco (intercambio de partición) y la memoria del sistema.Incluso si
dotsolo tomara el 99% del tiempo de CPU, lo más probable es que cambiar a un terminal de texto sea casi inmediato, lo que sucede es que el kernel tiene que sacardotcosas de la memoria para que puedaXvolver a la memoria yXpoder ver las claves simplemente presionas y te mueves al terminal de texto, luego el kernel tiene queXsalir de la memoria para ladotque aún se está ejecutando, y luego también moverlodotpara mover los procesos del terminal de texto (¿tal vezlogin?) de nuevo en la memoria. (Si esto se ve desordenado, no sólo porque el ejemplo es desordenado - la realidad es esta . Desordenado)Un ejemplo es que si inicia sesión en el terminal de texto, puede presionar teclas, retroceder y felizmente sucederá en tiempo real, pero si hace algo tan simple como ejecutar una herramienta pequeña
ps, se "congelará" "por un tiempo porque tiene que liberar memoria para cargarps(y también tiene que esperar en la cola de E / S del disco, que se está utilizando mucho para mover datos hacia y desde la memoria, hasta que pueda solicitarlapsdesde el sistema de archivos) .fuente